From 4a0a28b54e74b30d4f02279f3a11da37be6471b0 Mon Sep 17 00:00:00 2001
From: Ranindya Paramitha <23520019@std.stei.itb.ac.id>
Date: Sat, 3 Apr 2021 17:55:20 +0700
Subject: [PATCH] fix timezone issue course class meeting

---
 backend/src/util/common.js | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/backend/src/util/common.js b/backend/src/util/common.js
index 04754d38..f218df5a 100644
--- a/backend/src/util/common.js
+++ b/backend/src/util/common.js
@@ -88,11 +88,11 @@ const generateCourseClassMeetings = async (courseClass) => {
 
   let startDate, endDate;
   if (courseClass.semester === SemesterEnum.ODD){
-    startDate = new Date(courseClass.startYear, 7, 15);
-    endDate = new Date(courseClass.startYear, 11, 15);
+    startDate = new Date(`${courseClass.startYear}-08-15T00:00:00.000+07:00`);
+    endDate = new Date(`${courseClass.startYear}-12-15T00:00:00.000+07:00`);
   } else {
-    startDate = new Date(courseClass.startYear+1, 0, 15);
-    endDate = new Date(courseClass.startYear+1, 4, 15);
+    startDate = new Date(`${courseClass.startYear+1}-01-15T00:00:00.000+07:00`);
+    endDate = new Date(`${courseClass.startYear+1}-05-15T00:00:00.000+07:00`);
   }
 
   const courseClassDefaultSchedules = await CourseClassDefaultSchedule.findAll({
@@ -102,15 +102,21 @@ const generateCourseClassMeetings = async (courseClass) => {
   });
 
   for (let i = 0; i < courseClassDefaultSchedules.length; i++){
-    for (let d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
-
-      if (startDate.getDay() === DayEnum[courseClassDefaultSchedules[i].day].value){
+    for (let d = new Date(startDate.getTime()); d <= endDate; d.setDate(d.getDate() + 1)) {
+      if (d.getDay() === DayEnum[courseClassDefaultSchedules[i].day].value){
 
         const startTimeParts = courseClassDefaultSchedules[i].start.match(/(\d+):(\d+):(\d+)/);
         const endTimeParts = courseClassDefaultSchedules[i].end.match(/(\d+):(\d+):(\d+)/);
 
-        const start = d.setUTCHours(parseInt(startTimeParts[1], 10), parseInt(startTimeParts[2], 10), parseInt(startTimeParts[3], 10));
-        const end = d.setUTCHours(parseInt(endTimeParts[1], 10), parseInt(endTimeParts[2], 10), parseInt(endTimeParts[3], 10));
+        let start = new Date(d.getTime());
+        start.setHours(parseInt(startTimeParts[1], 10));
+        start.setMinutes(parseInt(startTimeParts[2], 10));
+        start.setSeconds(parseInt(startTimeParts[3], 10));
+
+        let end = new Date(d.getTime());
+        end.setHours(parseInt(endTimeParts[1], 10));
+        end.setMinutes(parseInt(endTimeParts[2], 10));
+        end.setSeconds(parseInt(endTimeParts[3], 10));
 
         await CourseClassMeeting.create({
           courseClassId: courseClass.id,
-- 
GitLab