diff --git a/src/Handler/ExamOffice/Exams.hs b/src/Handler/ExamOffice/Exams.hs index 0336592d3..115181b0c 100644 --- a/src/Handler/ExamOffice/Exams.hs +++ b/src/Handler/ExamOffice/Exams.hs @@ -154,11 +154,15 @@ getEOExamsR = do mLabelExternalExam <- view queryLabelExternalExam lift $ do - E.on $ externalExam E.?. ExternalExamId E.==. mExternalExamLabel E.?. ExamOfficeExternalExamLabelExternalExam E.on $ mExternalExamLabel E.?. ExamOfficeExternalExamLabelLabel E.==. mLabelExternalExam E.?. ExamOfficeLabelId + E.on $ E.maybe E.true (\externalExamLabelExternalExamId -> + externalExam E.?. ExternalExamId E.==. E.just externalExamLabelExternalExamId + ) (mExternalExamLabel E.?. ExamOfficeExternalExamLabelExternalExam) E.on E.false - E.on $ exam E.?. ExamId E.==. mExamLabel E.?. ExamOfficeExamLabelExam E.on $ mExamLabel E.?. ExamOfficeExamLabelLabel E.==. mLabelExam E.?. ExamOfficeLabelId + E.on $ E.maybe E.true (\examLabelExamId -> + exam E.?. ExamId E.==. E.just examLabelExamId + ) (mExamLabel E.?. ExamOfficeExamLabelExam) E.on $ course E.?. CourseSchool E.==. school E.?. SchoolId E.on $ exam E.?. ExamCourse E.==. course E.?. CourseId @@ -166,8 +170,15 @@ getEOExamsR = do E.||. ( E.isNothing (exam E.?. ExamId) E.&&. E.isNothing (course E.?. CourseId) E.&&. E.not_ (E.isNothing $ externalExam E.?. ExternalExamId)) E.where_ $ E.val (not getLabels) E.||. ( E.val getLabels - E.&&. mLabelExam E.?. ExamOfficeLabelUser E.==. E.just (E.val uid) - E.&&. mLabelExternalExam E.?. ExamOfficeLabelUser E.==. E.just (E.val uid)) + E.&&. ( E.maybe E.true (\labelExamUser -> + labelExamUser E.==. E.val uid + ) (mLabelExam E.?. ExamOfficeLabelUser) + ) + E.&&. ( E.maybe E.true (\labelExternalExamUser -> + labelExternalExamUser E.==. E.val uid + ) (mLabelExternalExam E.?. ExamOfficeLabelUser) + ) + ) return (exam, course, school, mLabelExam, externalExam, mLabelExternalExam) dbtRowKey = views ($(multifocusG 2) queryExam queryExternalExam) (bimap (E.?. ExamId) (E.?. ExternalExamId))