Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 36 additions & 4 deletions backend/src/controllers/EventController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,18 +97,50 @@ export default class EventController {
}
}

// TODO: Once delete deadline is implemented separately in the frontend, remove this nested logic
/**
* Deletes a specified event.
* @param req.params.id ID of the event.
*/
public static async deleteEvent(req: Request, res: Response) {
try {
const event = await prisma.user_events.delete({
const event = await prisma.user_events.deleteMany({
where: { id: req.params.id }, // Ensure id is uuid
});
res.json(event);
} catch {
res.status(404).json({ error: 'Not found' });
if (event.count === 0) {
const deadline = await prisma.user_deadlines.deleteMany({
where: { id: req.params.id },
});
if (deadline.count === 0) {
res.status(404).json({ error: 'Did not find event or deadline with such id' });
} else {
res.json({ message: 'Deleted deadline', count: deadline.count });
}
} else {
res.json({ message: 'Deleted event', count: event.count });
}
} catch (error:any) {
console.error(error);
res.status(404).json({ error: error });
}
}

/**
* Deletes all generated events for a specific user.
* @param req.params.user_id ID of the user.
*/
public static async deleteGeneratedEvent(req: Request, res: Response) {
try {
const user_id = req.params.user_id;
const generatedEvents = await prisma.user_events.deleteMany({
where: {
user_id: user_id,
is_generated: true,
},
});
res.json(generatedEvents);
} catch (error:any) {
res.status(404).json({ error: error });
}
}

Expand Down
2 changes: 1 addition & 1 deletion backend/src/controllers/ScheduleController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export default class ScheduleController {
data: eventDataWithoutId,
});
}

res.json(scheduledEvents);
} catch (error : any) {
res
.status(500)
Expand Down
3 changes: 3 additions & 0 deletions backend/src/routes/calendar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ router.put('/events/id/:id', EventController.putEvent);
// Delete an event
router.delete('/events/id/:id', EventController.deleteEvent);

// Delete all generated event
router.delete('/generated-events/:user_id', EventController.deleteGeneratedEvent);

// Get all deadlines for a particular user
router.get('/deadlines/by-user/:user_id', DeadlineController.getUserDeadlines);

Expand Down
3 changes: 2 additions & 1 deletion backend/src/utils/Scheduler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@ export default class Scheduler {

// Move search forward
// TODO: end_time might be null
currentSearchedTime = new Date(newEvent.end_time!.getTime() + 60000); // +1 min buffer
// TODO: not hard coded 10 min buff but use user's break preference and use is_break in event model
currentSearchedTime = new Date(newEvent.end_time!.getTime() + 10 * 60000); // +10 min buffer
}
// Update unscheduledMinutes in remainder
remainder.unscheduledMinutes = minutesLeft;
Expand Down
Loading