refactor(schedule-week): better types
This commit is contained in:
parent
9b869b0bb5
commit
75bf13ae16
@ -74,7 +74,7 @@ weekSchedule uid _weekOffset = do
|
||||
|
||||
-- TODO: this makes the exam table redundant once the weekOffset is implemented
|
||||
-- TODO: for lecturers, do not display one entry for each exam occurrences, but instead collect all occurrences happening at the same time in a list
|
||||
exams <- liftHandler . runDB $ E.select $ E.from $ \((course `E.InnerJoin` exam) `E.LeftOuterJoin` examOccurrence) -> do
|
||||
examOccurrences <- liftHandler . runDB $ E.select $ E.from $ \((course `E.InnerJoin` exam) `E.LeftOuterJoin` examOccurrence) -> do
|
||||
E.on $ course E.^. CourseId E.==. exam E.^. ExamCourse
|
||||
E.on $ E.just (exam E.^. ExamId) E.==. examOccurrence E.?. ExamOccurrenceExam
|
||||
E.where_ $ isCourseLecturer (Just uid) ata (course E.^. CourseId)
|
||||
@ -113,8 +113,8 @@ weekSchedule uid _weekOffset = do
|
||||
let seOccurrence = Right (Left exception) in ScheduleEntry{..}
|
||||
in scheduleds <> exceptions
|
||||
|
||||
examToScheduleEntries :: (Entity Course, Entity Exam, Maybe (Entity ExamOccurrence)) -> [ScheduleEntry]
|
||||
examToScheduleEntries (seCourse@(Entity _ Course{}), Entity _ Exam{..}, Just (Entity _ ExamOccurrence{..})) =
|
||||
examOccurrenceToScheduleEntry :: (Entity Course, Entity Exam, Maybe (Entity ExamOccurrence)) -> Maybe ScheduleEntry
|
||||
examOccurrenceToScheduleEntry (seCourse@(Entity _ Course{}), Entity _ Exam{..}, Just (Entity _ ExamOccurrence{..})) =
|
||||
let seType = SETExamOccurrence
|
||||
{ seteoExamName = examName
|
||||
}
|
||||
@ -123,8 +123,8 @@ weekSchedule uid _weekOffset = do
|
||||
{ seeoStart = examOccurrenceStart
|
||||
, seeoEnd = examOccurrenceEnd
|
||||
}
|
||||
in pure $ ScheduleEntry{..}
|
||||
examToScheduleEntries _ = mempty -- TODO: exclude (_,_,Nothing) case via join
|
||||
in Just ScheduleEntry{..}
|
||||
examOccurrenceToScheduleEntry _ = Nothing -- TODO: exclude (_,_,Nothing) case via join
|
||||
|
||||
seOccurrenceIsInSlot :: Day -> TimeSlot -> ScheduleEntryOccurrence -> Bool
|
||||
seOccurrenceIsInSlot day slot = \case
|
||||
@ -155,9 +155,9 @@ weekSchedule uid _weekOffset = do
|
||||
, Map.fromList $ slotsToDisplay <&> \slot ->
|
||||
( slot
|
||||
, filter (seOccurrenceIsInSlot day slot . seOccurrence) $ join $
|
||||
(courseEventToScheduleEntries <$> courseEvents)
|
||||
<> (tutorialToScheduleEntries <$> tutorials)
|
||||
<> (examToScheduleEntries <$> exams)
|
||||
(courseEventToScheduleEntries <$> courseEvents)
|
||||
<> (tutorialToScheduleEntries <$> tutorials)
|
||||
<> (pure . catMaybes) (examOccurrenceToScheduleEntry <$> examOccurrences)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user