From ecbb6dbee71aebf2728d993d9e210bec162b0764 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=EB=8C=80=ED=9D=AC?= <joedaehui@ajou.ac.kr>
Date: Fri, 15 Nov 2024 14:05:49 +0900
Subject: [PATCH] =?UTF-8?q?fix:=20=EC=8A=A4=EC=BC=80=EC=A4=84=20=EC=88=98?=
 =?UTF-8?q?=EC=A0=95=20&=20=EB=A7=8C=EB=A3=8C=EC=9D=BC=20=EA=B5=AC?=
 =?UTF-8?q?=ED=95=98=EA=B8=B0=20=EC=88=98=EC=A0=95=20(#6)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 services/scheduleService.js | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/services/scheduleService.js b/services/scheduleService.js
index 5e91cbc..1cd9d12 100644
--- a/services/scheduleService.js
+++ b/services/scheduleService.js
@@ -54,13 +54,16 @@ class scheduleService {
     /**
      * 유동 스케줄 만료일 구하기
      */
-    getNextMonday() {
-        const date = new Date();
+    getNextMonday(startTime) {
+        const date = new Date(startTime);
         const day = date.getDay();
-        const daysUntilNextMonday = (8 - day) % 7;
-        date.setDate(date.getDate() + daysUntilNextMonday);
-        date.setHours(0, 0, 0, 0);
-        return date;
+        const daysUntilNextMonday = (7 - day + 1) % 7;
+        
+        const nextMonday = new Date(date);
+        nextMonday.setDate(date.getDate() + daysUntilNextMonday);
+        nextMonday.setHours(0, 0, 0, 0);  // 자정으로 설정
+        
+        return nextMonday;
     }
 
     /**
@@ -81,7 +84,7 @@ class scheduleService {
                 start_time,
                 end_time,
                 is_fixed,
-                expiry_date: is_fixed ? null : this.getNextMonday()
+                expiry_date: is_fixed ? null : this.getNextMonday(start_time)
             };
 
             return Schedule.create(scheduleData, { transaction });
@@ -114,8 +117,15 @@ class scheduleService {
                 throw new Error('Schedule overlaps with existing schedule');
             }
 
-            delete updateData.is_fixed;
-            return schedule.update(updateData, { transaction });
+            const is_fixed = schedule.is_fixed;
+            const updatedData = {
+                ...updateData,
+                expiry_date: is_fixed ? null : this.getNextMonday(updateData.start_time),
+                updatedAt: new Date()
+            };
+            delete updatedData.is_fixed; 
+
+            return schedule.update(updatedData, { transaction });
         });
     }
  
-- 
GitLab