diff --git a/src/Handler/ExamOffice/Exams.hs b/src/Handler/ExamOffice/Exams.hs index 32fda0d88..6d86d220e 100644 --- a/src/Handler/ExamOffice/Exams.hs +++ b/src/Handler/ExamOffice/Exams.hs @@ -129,21 +129,23 @@ getEOExamsR = do where dbtSQLQuery = runReaderT $ do exam <- view queryExam - mExamLabel <- view queryExamLabel course <- view queryCourse school <- view querySchool + mExamLabel <- view queryExamLabel externalExam <- view queryExternalExam mExternalExamLabel <- view queryExternalExamLabel lift $ do + E.on $ externalExam E.?. ExternalExamId E.==. mExternalExamLabel E.?. ExamOfficeExternalExamLabelExternalExam E.on E.false + E.on $ exam E.?. ExamId E.==. mExamLabel E.?. ExamOfficeExamLabelExam E.on $ school E.?. SchoolId E.==. course E.?. CourseSchool E.on $ exam E.?. ExamCourse E.==. course E.?. CourseId E.where_ $ (E.not_ (E.isNothing $ exam E.?. ExamId) E.&&. E.not_ (E.isNothing $ course E.?. CourseId) E.&&. E.isNothing (externalExam E.?. ExternalExamId)) E.||. ( E.isNothing (exam E.?. ExamId) E.&&. E.isNothing (course E.?. CourseId) E.&&. E.not_ (E.isNothing $ externalExam E.?. ExternalExamId)) - return (exam, mExamLabel, course, school, externalExam, mExternalExamLabel) + return (exam, course, school, mExamLabel, externalExam, mExternalExamLabel) dbtRowKey = views ($(multifocusG 2) queryExam queryExternalExam) (bimap (E.?. ExamId) (E.?. ExternalExamId)) -- [ singletonMap "may-access" . FilterProjected $ \(Any b) r -> (== b) <$> if @@ -161,9 +163,9 @@ getEOExamsR = do dbtProj :: _ ExamsTableData dbtProj = (views _dbtProjRow . set _dbrOutput) =<< do -- dbtProjSimple . runReaderT $ do exam <- view $ _dbtProjRow . _dbrOutput . _1 - mExamLabel <- view $ _dbtProjRow . _dbrOutput . _2 - course <- view $ _dbtProjRow . _dbrOutput . _3 - school <- view $ _dbtProjRow . _dbrOutput . _4 + course <- view $ _dbtProjRow . _dbrOutput . _2 + school <- view $ _dbtProjRow . _dbrOutput . _3 + mExamLabel <- view $ _dbtProjRow . _dbrOutput . _4 externalExam <- view $ _dbtProjRow . _dbrOutput . _5 mExternalExamLabel <- view $ _dbtProjRow . _dbrOutput . _6 @@ -200,8 +202,8 @@ getEOExamsR = do forMM_ (view $ _dbtProjFilter . _etProjFilterHasResults) guard return Nothing - case (exam, mExamLabel, course, school, externalExam, mExternalExamLabel) of - (Just exam', mExamLabel', Just course', Just school', Nothing, Nothing) -> return + case (exam, course, school, mExamLabel, externalExam, mExternalExamLabel) of + (Just exam', Just course', Just school', mExamLabel', Nothing, Nothing) -> return (Right (exam', course', school', mExamLabel'), snd <$> mCounts, fst <$> mCounts) (Nothing, Nothing, Nothing, Nothing, Just externalExam', mExternalExamLabel') -> return (Left (externalExam', mExternalExamLabel'), snd <$> mCounts, fst <$> mCounts)