diff --git a/src/Handler/ExamOffice/Exams.hs b/src/Handler/ExamOffice/Exams.hs index 41511a43c..32fda0d88 100644 --- a/src/Handler/ExamOffice/Exams.hs +++ b/src/Handler/ExamOffice/Exams.hs @@ -34,13 +34,13 @@ instance Default ExamsTableFilterProj where makeLenses_ ''ExamsTableFilterProj -type ExamsTableExpr = ( E.SqlExpr (Maybe (Entity Exam )) - `E.InnerJoin` E.SqlExpr (Maybe (Entity ExamOfficeExamLabel)) - `E.InnerJoin` E.SqlExpr (Maybe (Entity Course )) - `E.InnerJoin` E.SqlExpr (Maybe (Entity School )) +type ExamsTableExpr = ( ( E.SqlExpr (Maybe (Entity Exam )) + `E.InnerJoin` E.SqlExpr (Maybe (Entity Course )) + `E.InnerJoin` E.SqlExpr (Maybe (Entity School )) + ) `E.LeftOuterJoin` E.SqlExpr (Maybe (Entity ExamOfficeExamLabel)) ) - `E.FullOuterJoin` ( E.SqlExpr (Maybe (Entity ExternalExam )) - `E.InnerJoin` E.SqlExpr (Maybe (Entity ExamOfficeExternalExamLabel)) + `E.FullOuterJoin` ( E.SqlExpr (Maybe (Entity ExternalExam )) + `E.LeftOuterJoin` E.SqlExpr (Maybe (Entity ExamOfficeExternalExamLabel)) ) type ExamsTableData = DBRow ( Either @@ -57,22 +57,22 @@ type ExamsTableData = DBRow ( Either ) queryExam :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity Exam))) -queryExam = to $ $(E.sqlIJproj 4 1) . $(E.sqlFOJproj 2 1) - -queryExamLabel :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity ExamOfficeExamLabel))) -queryExamLabel = to $ $(E.sqlIJproj 4 2) . $(E.sqlFOJproj 2 1) +queryExam = to $ $(E.sqlIJproj 3 1) . $(E.sqlLOJproj 2 1) . $(E.sqlFOJproj 2 1) queryCourse :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity Course))) -queryCourse = to $ $(E.sqlIJproj 4 3) . $(E.sqlFOJproj 2 1) +queryCourse = to $ $(E.sqlIJproj 3 2) . $(E.sqlLOJproj 2 1) . $(E.sqlFOJproj 2 1) querySchool :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity School))) -querySchool = to $ $(E.sqlIJproj 4 4) . $(E.sqlFOJproj 2 1) +querySchool = to $ $(E.sqlIJproj 3 3) . $(E.sqlLOJproj 2 1) . $(E.sqlFOJproj 2 1) + +queryExamLabel :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity ExamOfficeExamLabel))) +queryExamLabel = to $ $(E.sqlLOJproj 2 2) . $(E.sqlFOJproj 2 1) queryExternalExam :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity ExternalExam))) -queryExternalExam = to $ $(E.sqlIJproj 2 1) . $(E.sqlFOJproj 2 2) +queryExternalExam = to $ $(E.sqlLOJproj 2 1) . $(E.sqlFOJproj 2 2) queryExternalExamLabel :: Getter ExamsTableExpr (E.SqlExpr (Maybe (Entity ExamOfficeExternalExamLabel))) -queryExternalExamLabel = to $ $(E.sqlIJproj 2 2) . $(E.sqlFOJproj 2 2) +queryExternalExamLabel = to $ $(E.sqlLOJproj 2 2) . $(E.sqlFOJproj 2 2) resultExam :: Traversal' ExamsTableData (Entity Exam) resultExam = _dbrOutput . _1 . _Right . _1 @@ -160,11 +160,11 @@ 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 - externalExam <- view $ _dbtProjRow . _dbrOutput . _5 + exam <- view $ _dbtProjRow . _dbrOutput . _1 + mExamLabel <- view $ _dbtProjRow . _dbrOutput . _2 + course <- view $ _dbtProjRow . _dbrOutput . _3 + school <- view $ _dbtProjRow . _dbrOutput . _4 + externalExam <- view $ _dbtProjRow . _dbrOutput . _5 mExternalExamLabel <- view $ _dbtProjRow . _dbrOutput . _6 forMM_ (view $ _dbtProjFilter . _etProjFilterMayAccess) $ \b -> if diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index d25e24036..06c297d38 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -527,6 +527,7 @@ postProfileR = do } [ UserSchoolIsOptOut =. True ] + -- TODO: delete labels forM_ (Map.toList $ stgExamOfficeSettings & eosettingsLabels) $ \(eoLabelIdent, (examOfficeLabelName, examOfficeLabelStatus, examOfficeLabelPriority)) -> case eoLabelIdent of Left _ -> void $ upsert ExamOfficeLabel{ examOfficeLabelUser=uid, .. } [ ExamOfficeLabelName =. examOfficeLabelName