Skip to content

Commit e34cbc6

Browse files
committed
Added offer fetch functionality
1 parent 8de4414 commit e34cbc6

File tree

3 files changed

+104
-38
lines changed

3 files changed

+104
-38
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import {Request, Response} from 'express';
2+
3+
import {supabase} from '../db/setupDb';
4+
import asyncHandler from '../middleware/asyncHandler';
5+
6+
async function getOfferings(course_id: number, semester: string) {
7+
let {data: offeringData, error: offeringError} = await supabase
8+
.schema('course')
9+
.from('offerings')
10+
.select(`
11+
id,
12+
course_id,
13+
meeting_section,
14+
offering,
15+
day,
16+
start,
17+
end,
18+
location,
19+
current,
20+
max,
21+
is_waitlisted,
22+
delivery_mode,
23+
instructor,
24+
notes,
25+
code
26+
`).eq('course_id', course_id).eq('offering', semester);
27+
console.log(course_id);
28+
console.log(semester);
29+
console.log(offeringData);
30+
31+
return offeringData;
32+
}
33+
34+
export default {
35+
generateTimetable: asyncHandler(async (req: Request, res: Response) => {
36+
try {
37+
// Retrieve event properties from the request body
38+
const {name, date, semester, search, courses, restrictions} = req.body;
39+
const courseOfferingsList = [];
40+
// Retrieve the authenticated user
41+
const user_id = (req as any).user.id;
42+
43+
// extracting offerings from each course
44+
for (const course of courses) {
45+
const {id, code, name} = course;
46+
courseOfferingsList.push(
47+
{course_id: id, offerings: await getOfferings(id, semester)});
48+
}
49+
50+
return res.status(200).json(courseOfferingsList);
51+
} catch (error) {
52+
return res.status(500).send({error});
53+
}
54+
}),
55+
};
Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,37 @@
1-
import express from "express";
2-
import coursesController from "../controllers/coursesController";
3-
import departmentsController from "../controllers/departmentsController";
4-
import offeringsController from "../controllers/offeringsController";
5-
import { authHandler } from "../middleware/authHandler";
1+
import express from 'express';
2+
3+
import coursesController from '../controllers/coursesController';
4+
import departmentsController from '../controllers/departmentsController';
5+
import generatorController from '../controllers/generatorController';
6+
import offeringsController from '../controllers/offeringsController';
7+
import {authHandler} from '../middleware/authHandler';
68

79
export const coursesRouter = express.Router();
810
export const departmentsRouter = express.Router();
911
export const offeringsRouter = express.Router();
12+
export const generatorRouter = express.Router();
1013

1114
/**
1215
* Route to get a list of courses.
1316
* @route GET /
1417
* @middleware authHandler - Middleware to check if the user is authenticated.
1518
*/
16-
coursesRouter.get("/", authHandler, coursesController.getCourses);
19+
coursesRouter.get('/', authHandler, coursesController.getCourses);
1720

1821
/**
1922
* Route to get a list of departments.
2023
* @route GET /
2124
* @middleware authHandler - Middleware to check if the user is authenticated.
2225
*/
23-
departmentsRouter.get("/", authHandler, departmentsController.getDepartments);
26+
departmentsRouter.get('/', authHandler, departmentsController.getDepartments);
2427

2528
/**
2629
* Route to get a list of offerings.
2730
* @route GET /
2831
* @middleware authHandler - Middleware to check if the user is authenticated.
2932
*/
30-
offeringsRouter.get("/", authHandler, offeringsController.getOfferings);
33+
offeringsRouter.get('/', authHandler, offeringsController.getOfferings);
34+
35+
36+
generatorRouter.post(
37+
'/generate', authHandler, generatorController.generateTimetable);
Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,85 @@
1-
import express from "express";
2-
import timetableController from "../controllers/timetablesController";
3-
import eventController from "../controllers/eventsController";
4-
import restrictionsController from "../controllers/restrictionsController";
5-
import { authHandler } from "../middleware/authHandler";
1+
import express from 'express';
62

7-
export const timetableRouter = express.Router();
3+
import eventController from '../controllers/eventsController';
4+
import generatorController from '../controllers/generatorController';
5+
import restrictionsController from '../controllers/restrictionsController';
6+
import timetableController from '../controllers/timetablesController';
7+
import {authHandler} from '../middleware/authHandler';
88

9+
export const timetableRouter = express.Router();
910
/**
1011
* Route to create a new timetable
1112
* @route POST /api/timetables
1213
* @middleware authHandler - Middleware to check if the user is authenticated.
1314
*/
14-
timetableRouter.post("/", authHandler, timetableController.createTimetable);
15+
timetableRouter.post('/', authHandler, timetableController.createTimetable);
1516

1617
/**
1718
* Route to get all tiemtables for a user
1819
* @route GET /api/timetables
1920
* @middleware authHandler - Middleware to check if the user is authenticated.
2021
*/
21-
timetableRouter.get("/", authHandler, timetableController.getTimetables);
22+
timetableRouter.get('/', authHandler, timetableController.getTimetables);
2223

2324
/**
2425
* Route to update a timetable
2526
* @route PUT /api/timetable/:id
2627
* @middleware authHandler - Middleware to check if the user is authenticated.
2728
*/
28-
timetableRouter.put("/:id", authHandler, timetableController.updateTimetable);
29+
timetableRouter.put('/:id', authHandler, timetableController.updateTimetable);
2930

3031
/**
3132
* Route to delete a timetable
3233
* @route DELETE api/timetable/:id
3334
* @middleware authHandler - Middleware to check if the user is authenticated.
3435
*/
3536
timetableRouter.delete(
36-
"/:id",
37-
authHandler,
38-
timetableController.deleteTimetable,
37+
'/:id',
38+
authHandler,
39+
timetableController.deleteTimetable,
3940
);
4041

4142
/**
4243
* Route to create an event
4344
* @route POST /api/timetables/events
4445
* @middleware authHandler - Middleware to check if the user is authenticated.
4546
*/
46-
timetableRouter.post("/events", authHandler, eventController.createEvent);
47+
timetableRouter.post('/events', authHandler, eventController.createEvent);
4748

4849
/**
4950
* Route to get all events in a calendar
5051
* @route GET /api/timetables/events/:calendar_id
5152
* @middleware authHandler - Middleware to check if the user is authenticated.
5253
*/
5354
timetableRouter.get(
54-
"/events/:calendar_id",
55-
authHandler,
56-
eventController.getEvents,
55+
'/events/:calendar_id',
56+
authHandler,
57+
eventController.getEvents,
5758
);
5859

5960
/**
6061
* Route to update an event
6162
* @route PUT /api/timetables/events/:id
6263
* @middleware authHandler - Middleware to check if the user is authenticated.
6364
*/
64-
timetableRouter.put("/events/:id", authHandler, eventController.updateEvent);
65+
timetableRouter.put('/events/:id', authHandler, eventController.updateEvent);
6566

6667
/**
6768
* Route to delete events
6869
* @route DELETE /api/timetables/events/:id
6970
* @middleware authHandler - Middleware to check if the user is authenticated.
7071
*/
71-
timetableRouter.delete("/events/:id", authHandler, eventController.deleteEvent);
72+
timetableRouter.delete('/events/:id', authHandler, eventController.deleteEvent);
7273

7374
/**
7475
* Route to create restriction
7576
* @route POST /api/timetables/restriction
7677
* @middleware authHandler - Middleware to check if the user is authenticated.
7778
*/
7879
timetableRouter.post(
79-
"/restrictions",
80-
authHandler,
81-
restrictionsController.createRestriction,
80+
'/restrictions',
81+
authHandler,
82+
restrictionsController.createRestriction,
8283
);
8384

8485
/**
@@ -87,9 +88,9 @@ timetableRouter.post(
8788
* @middleware authHandler - Middleware to check if the user is authenticated.
8889
*/
8990
timetableRouter.get(
90-
"/restrictions/:calendar_id",
91-
authHandler,
92-
restrictionsController.getRestriction,
91+
'/restrictions/:calendar_id',
92+
authHandler,
93+
restrictionsController.getRestriction,
9394
);
9495

9596
/**
@@ -98,9 +99,9 @@ timetableRouter.get(
9899
* @middleware authHandler - Middleware to check if the user is authenticated.
99100
*/
100101
timetableRouter.put(
101-
"/restrictions/:id",
102-
authHandler,
103-
restrictionsController.updateRestriction,
102+
'/restrictions/:id',
103+
authHandler,
104+
restrictionsController.updateRestriction,
104105
);
105106

106107
/**
@@ -109,7 +110,10 @@ timetableRouter.put(
109110
* @middleware authHandler - Middleware to check if the user is authenticated.
110111
*/
111112
timetableRouter.delete(
112-
"/restrictions/:id",
113-
authHandler,
114-
restrictionsController.deleteRestriction,
113+
'/restrictions/:id',
114+
authHandler,
115+
restrictionsController.deleteRestriction,
115116
);
117+
118+
timetableRouter.post(
119+
'/generate', authHandler, generatorController.generateTimetable);

0 commit comments

Comments
 (0)