@@ -4,92 +4,6 @@ import { supabase } from "../db/setupDb";
44import { generateWeeklyCourseEvents } from "./eventsController" ;
55
66export default {
7- /**
8- * Get a list of offering events based on offering ids, semester start date, and semester end date.
9- *
10- * @param {Request } req - The request object containing query parameters.
11- * @param {Response } res - The response object to send the offering events data.
12- * @returns {Promise<Response> } - The response object with the offering events data.
13- */
14- getOfferingEvents : asyncHandler ( async ( req : Request , res : Response ) => {
15- const { offering_ids, semester_start_date, semester_end_date } = req . query ;
16-
17- // Retrieve the authenticated user
18- const user_id = ( req as any ) . user . id ;
19-
20- // Check if semester start and end dates are provided
21- if ( ! semester_start_date || ! semester_end_date ) {
22- return res . status ( 400 ) . json ( {
23- error : "Semester start and end dates are required." ,
24- } ) ;
25- }
26-
27- if ( ! offering_ids ) {
28- return res . status ( 200 ) . json ( [ ] ) ; // Return an empty array if no offering_ids are provided
29- }
30-
31- const offering_ids_array = ( offering_ids as string ) . split ( "," ) ;
32- let eventsToInsert : any [ ] = [ ] ;
33-
34- const promises = offering_ids_array . map ( async ( offering_id ) => {
35- // Get the offering data
36- const { data : offeringData , error : offeringError } = await supabase
37- . schema ( "course" )
38- . from ( "offerings" )
39- . select ( "*" )
40- . eq ( "id" , offering_id )
41- . maybeSingle ( ) ;
42-
43- if ( offeringError ) {
44- return res . status ( 400 ) . json ( { error : offeringError . message } ) ;
45- }
46-
47- if ( ! offeringData || offeringData . length === 0 ) {
48- return res . status ( 400 ) . json ( {
49- error : "Invalid offering_id or course offering not found." ,
50- } ) ;
51- }
52-
53- // Generate event details
54- const courseEventName = ` ${ offeringData . code } - ${ offeringData . meeting_section } ` ;
55- let courseDay = offeringData . day ;
56- let courseStartTime = offeringData . start ;
57- let courseEndTime = offeringData . end ;
58-
59- // Some offerings do not have a day, start time, or end time in the database, so we set default values
60- if ( ! courseDay || ! courseStartTime || ! courseEndTime ) {
61- courseDay = "MO" ;
62- courseStartTime = "08:00:00" ;
63- courseEndTime = "09:00:00" ;
64- }
65-
66- const mockCalendarId = "1" ;
67- const events = generateWeeklyCourseEvents (
68- user_id ,
69- courseEventName ,
70- courseDay ,
71- courseStartTime ,
72- courseEndTime ,
73- mockCalendarId ,
74- offering_id as string ,
75- semester_start_date as string ,
76- semester_end_date as string ,
77- ) ;
78- eventsToInsert = [ ...eventsToInsert , ...events ] ;
79- } ) ;
80-
81- await Promise . all ( promises ) ;
82-
83- if ( eventsToInsert . length === 0 ) {
84- return res . status ( 400 ) . json ( {
85- error : "Failed to generate course events" ,
86- } ) ;
87- }
88-
89- // Return the generated events
90- return res . status ( 200 ) . json ( eventsToInsert ) ;
91- } ) ,
92-
937 /**
948 * Get a list of offerings based on course code and semester.
959 *
0 commit comments