Skip to content

Commit

Permalink
Merge pull request #78 from crux-bphc/accommodate-courses-without-exa…
Browse files Browse the repository at this point in the history
…m-times

accommodate courses without exam times in add and remove section endpoints
  • Loading branch information
soumitradev committed Aug 7, 2023
2 parents 7d7c8ab + b204b14 commit faa1c9c
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 41 deletions.
26 changes: 17 additions & 9 deletions src/controllers/timetable/addSection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,22 @@ export const addSection = async (req: Request, res: Response) => {
(time) => course?.code + ":" + time.split(":")[2] + time.split(":")[3]
);

const newExamTimes = timetable.examTimes;
if (course.midsemStartTime !== null && course.midsemEndTime !== null) {
newExamTimes.push(
`${
course.code
}|MIDSEM|${course.midsemStartTime.toISOString()}|${course.midsemEndTime.toISOString()}`
);
}
if (course.compreStartTime !== null && course.compreEndTime !== null) {
newExamTimes.push(
`${
course.code
}|COMPRE|${course.compreStartTime.toISOString()}|${course.compreEndTime.toISOString()}`
);
}

try {
await timetableRepository.manager.transaction(
async (transactionalEntityManager) => {
Expand Down Expand Up @@ -217,15 +233,7 @@ export const addSection = async (req: Request, res: Response) => {
.createQueryBuilder()
.update(Timetable)
.set({
examTimes: [
...timetable.examTimes,
`${
course.code
}|MIDSEM|${course.midsemStartTime.toISOString()}|${course.midsemEndTime.toISOString()}`,
`${
course.code
}|COMPRE|${course.compreStartTime.toISOString()}|${course.compreEndTime.toISOString()}`,
],
examTimes: newExamTimes,
})
.where("timetable.id = :id", { id: timetable.id })
.execute();
Expand Down
68 changes: 36 additions & 32 deletions src/utils/checkForClashes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,43 +64,47 @@ export const checkForExamHoursClash = (
};
}

const newMidsemStartTime = newCourse.midsemStartTime;
const newMidsemEndTime = newCourse.midsemEndTime;
if (newCourse.midsemStartTime !== null && newCourse.midsemEndTime !== null) {
const newMidsemStartTime = newCourse.midsemStartTime;
const newMidsemEndTime = newCourse.midsemEndTime;

for (const [key, value] of examTimesMap) {
const { courseCode, end } = value;
const start = key;
if (
(newMidsemStartTime <= start && newMidsemEndTime >= start) ||
(newMidsemStartTime <= end && newMidsemEndTime >= end) ||
(newMidsemStartTime >= start && newMidsemEndTime <= end)
) {
return {
clash: true,
exam: "midsem",
course: courseCode,
sameCourse: false,
};
for (const [key, value] of examTimesMap) {
const { courseCode, end } = value;
const start = key;
if (
(newMidsemStartTime <= start && newMidsemEndTime >= start) ||
(newMidsemStartTime <= end && newMidsemEndTime >= end) ||
(newMidsemStartTime >= start && newMidsemEndTime <= end)
) {
return {
clash: true,
exam: "midsem",
course: courseCode,
sameCourse: false,
};
}
}
}

const newCompreStartTime = newCourse.compreStartTime;
const newCompreEndTime = newCourse.compreEndTime;
if (newCourse.compreStartTime !== null && newCourse.compreEndTime !== null) {
const newCompreStartTime = newCourse.compreStartTime;
const newCompreEndTime = newCourse.compreEndTime;

for (const [key, value] of examTimesMap) {
const { courseCode, end } = value;
const start = key;
if (
(newCompreStartTime <= start && newCompreEndTime >= start) ||
(newCompreStartTime <= end && newCompreEndTime >= end) ||
(newCompreStartTime >= start && newCompreEndTime <= end)
) {
return {
clash: true,
exam: "compre",
course: courseCode,
sameCourse: false,
};
for (const [key, value] of examTimesMap) {
const { courseCode, end } = value;
const start = key;
if (
(newCompreStartTime <= start && newCompreEndTime >= start) ||
(newCompreStartTime <= end && newCompreEndTime >= end) ||
(newCompreStartTime >= start && newCompreEndTime <= end)
) {
return {
clash: true,
exam: "compre",
course: courseCode,
sameCourse: false,
};
}
}
}

Expand Down

0 comments on commit faa1c9c

Please sign in to comment.