From aefe4c571f0490040a717ae895007a4b266325f9 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 29 Apr 2019 11:39:09 +0200 Subject: [PATCH] Additional Tutorial information for students --- messages/uniworx/de.msg | 1 + src/Handler/Course.hs | 28 +++++++++++++++++++++------- src/Handler/Tutorial.hs | 4 ++-- src/Handler/Utils/Form.hs | 20 ++++++++++++-------- templates/course.hamlet | 8 -------- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index 7f51fb19d..4b8c7f201 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -839,6 +839,7 @@ TutorialType: Typ TutorialName: Bezeichnung TutorialParticipants: Teilnehmer TutorialCapacity: Kapazität +TutorialFreeCapacity: Freie Plätze TutorialRoom: Regulärer Raum TutorialTime: Zeit TutorialRegistered: Angemeldet diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index eb29d534a..baceefdd1 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -274,7 +274,7 @@ getTermCourseListR tid = do getCShowR :: TermId -> SchoolId -> CourseShorthand -> Handler Html getCShowR tid ssh csh = do mbAid <- maybeAuthId - (cid,course,schoolName,participants,registration,defSFid,lecturers,assistants,tutors,correctors) <- runDB . maybeT notFound $ do + (cid,course,schoolName,participants,registration,defSFid,lecturers,assistants,correctors) <- runDB . maybeT notFound $ do [(E.Entity cid course, E.Value schoolName, E.Value participants, fmap entityVal -> registration)] <- lift . E.select . E.from $ \((school `E.InnerJoin` course) `E.LeftOuterJoin` participant) -> do @@ -300,18 +300,13 @@ getCShowR tid ssh csh = do partStaff (CourseLecturer ,name,surn,mail) = Right (name,surn,mail) partStaff (_courseAssistant,name,surn,mail) = Left (name,surn,mail) (assistants,lecturers) = partitionWith partStaff $ map $(unValueN 4) staff - tutors <- fmap (map $(unValueN 3)) . lift . E.select $ E.from $ \(tutorial `E.InnerJoin` tutor `E.InnerJoin` user) -> E.distinctOnOrderBy [E.asc $ user E.^. UserSurname, E.asc $ user E.^. UserDisplayName, E.asc $ user E.^. UserEmail ] $ do - E.on $ tutor E.^. TutorUser E.==. user E.^. UserId - E.on $ tutor E.^. TutorTutorial E.==. tutorial E.^. TutorialId - E.where_ $ tutorial E.^. TutorialCourse E.==. E.val cid - return ( user E.^. UserEmail, user E.^. UserDisplayName, user E.^. UserSurname ) correctors <- fmap (map $(unValueN 3)) . lift . E.select $ E.from $ \(sheet `E.InnerJoin` sheetCorrector `E.InnerJoin` user) -> E.distinctOnOrderBy [E.asc $ user E.^. UserSurname, E.asc $ user E.^. UserDisplayName, E.asc $ user E.^. UserEmail ] $ do E.on $ sheetCorrector E.^. SheetCorrectorUser E.==. user E.^. UserId E.on $ sheetCorrector E.^. SheetCorrectorSheet E.==. sheet E.^. SheetId E.where_ $ sheet E.^. SheetCourse E.==. E.val cid E.orderBy [ E.asc $ user E.^. UserSurname, E.asc $ user E.^. UserDisplayName ] return ( user E.^. UserEmail, user E.^. UserDisplayName, user E.^. UserSurname ) - return (cid,course,schoolName,participants,registration,entityKey <$> defSFid,lecturers,assistants,tutors,correctors) + return (cid,course,schoolName,participants,registration,entityKey <$> defSFid,lecturers,assistants,correctors) mRegFrom <- traverse (formatTime SelFormatDateTime) $ courseRegisterFrom course mRegTo <- traverse (formatTime SelFormatDateTime) $ courseRegisterTo course @@ -336,11 +331,30 @@ getCShowR tid ssh csh = do dbtColonnade = dbColonnade $ mconcat [ sortable (Just "type") (i18nCell MsgTutorialType) $ \DBRow{ dbrOutput = Entity _ Tutorial{..} } -> textCell $ CI.original tutorialType , sortable (Just "name") (i18nCell MsgTutorialName) $ \DBRow{ dbrOutput = Entity _ Tutorial{..} } -> indicatorCell <> textCell (CI.original tutorialName) + , sortable Nothing (i18nCell MsgTutorialTutors) $ \DBRow{ dbrOutput = Entity tutid _ } -> sqlCell $ do + tutors <- fmap (map $(unValueN 3)) . E.select . E.from $ \(tutor `E.InnerJoin` user) -> do + E.on $ tutor E.^. TutorUser E.==. user E.^. UserId + E.where_ $ tutor E.^. TutorTutorial E.==. E.val tutid + return (user E.^. UserEmail, user E.^. UserDisplayName, user E.^. UserSurname) + return [whamlet| +