diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs index 681240986..24807a4e5 100644 --- a/src/Handler/Home.hs +++ b/src/Handler/Home.hs @@ -120,13 +120,19 @@ homeUser uid = do , E.SqlExpr (E.Value Text) , E.SqlExpr (E.Value UTCTime) , E.SqlExpr (E.Value (Maybe SubmissionId))) - tableData ((participant `E.InnerJoin` course `E.InnerJoin` sheet) `E.LeftOuterJoin` submission) = do + tableData ((participant `E.InnerJoin` course `E.InnerJoin` sheet) `E.LeftOuterJoin` (submission `E.InnerJoin` subuser)) = do + E.on $ submission E.?. SubmissionId E.==. subuser E.?. SubmissionUserSubmission E.on $ E.just(sheet E.^. SheetId) E.==. submission E.?. SubmissionSheet E.on $ course E.^. CourseId E.==. sheet E.^. SheetCourse E.on $ course E.^. CourseId E.==. participant E.^. CourseParticipantCourse E.where_ $ participant E.^. CourseParticipantUser E.==. E.val uid E.&&. sheet E.^. SheetActiveTo E.<=. E.val fTime E.&&. sheet E.^. SheetActiveTo E.>=. E.val cTime + E.&&. ( + (subuser E.?. SubmissionUserUser E.==. (E.just $ E.val uid)) + E.||. + (E.isNothing $ subuser E.?. SubmissionUserUser) + ) -- E.limit nrSheetDeadlines return ( course E.^. CourseTerm @@ -182,7 +188,7 @@ homeUser uid = do , SortColumn $ \(_ `E.InnerJoin` _ `E.InnerJoin` sheet `E.LeftOuterJoin` _) -> sheet E.^. SheetActiveTo ) , ( "done" - , SortColumn $ \(_ `E.InnerJoin` _ `E.InnerJoin` _ `E.LeftOuterJoin` subm) -> E.isNothing $ subm E.?. SubmissionId + , SortColumn $ \(_ `E.InnerJoin` _ `E.InnerJoin` _ `E.LeftOuterJoin` (subm `E.InnerJoin` _)) -> E.isNothing $ subm E.?. SubmissionId ) ] , dbtFilter = mempty {- [ ( "term"