diff --git a/src/Handler/Course/Users.hs b/src/Handler/Course/Users.hs index 3d638b825..3ed25eee1 100644 --- a/src/Handler/Course/Users.hs +++ b/src/Handler/Course/Users.hs @@ -363,6 +363,13 @@ makeCourseUserTable cid acts restrict colChoices psValidator csvColumns = do E.&&. E.hasInfix (tutorial E.^. TutorialName) (E.val criterion :: E.SqlExpr (E.Value (CI Text))) E.&&. tutorialParticipant E.^. TutorialParticipantUser E.==. queryUser row E.^. UserId ) + , single $ ("exam" , FilterColumn $ E.mkExistsFilter $ \row criterion -> + E.from $ \(exam `E.InnerJoin` examRegistration) -> do + E.on $ exam E.^. ExamId E.==. examRegistration E.^. ExamRegistrationExam + E.where_ $ exam E.^. ExamCourse E.==. E.val cid + E.&&. E.hasInfix (exam E.^. ExamName) (E.val criterion :: E.SqlExpr (E.Value (CI Text))) + E.&&. examRegistration E.^. ExamRegistrationUser E.==.queryUser row E.^. UserId + ) -- , ("course-registration", error "TODO") -- TODO -- , ("course-user-note", error "TODO") -- TODO ] @@ -375,6 +382,7 @@ makeCourseUserTable cid acts restrict colChoices psValidator csvColumns = do [ prismAForm (singletonFilter "degree") mPrev $ aopt textField (fslI MsgStudyFeatureDegree) , prismAForm (singletonFilter "field") mPrev $ aopt textField (fslI MsgCourseStudyFeature) , prismAForm (singletonFilter "tutorial") mPrev $ aopt textField (fslI MsgCourseTutorial) + , prismAForm (singletonFilter "exam") mPrev $ aopt textField (fslI MsgCourseExam) ] dbtParams = DBParamsForm { dbParamsFormMethod = POST