From 3919152ede42b8e48e83fa3af1563ef163ee7cf7 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel <> Date: Tue, 10 Nov 2020 20:51:25 +0100 Subject: [PATCH] fix(schedule): use should-be-displayed result for tutorial actions --- src/Handler/Course/Show.hs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/Handler/Course/Show.hs b/src/Handler/Course/Show.hs index ff770e683..23abe712c 100644 --- a/src/Handler/Course/Show.hs +++ b/src/Handler/Course/Show.hs @@ -213,20 +213,14 @@ getCShowR tid ssh csh = do | isRegistered -> return [whamlet|_{MsgTutorialRegistered}|] | otherwise -> return mempty tutScheduleOptSet <- if - | Just (uid,User{..}) <- mbAuth -> do - mTutorialScheduleOpt <- getBy $ UniqueTutorialScheduleOpt tutId uid - let - currentOpt = maybe - ( maybe - (isRegistered && userScheduleOccurrenceDisplayDefault) - ((&&) isRegistered . courseScheduleOptOpt . entityVal) - mCourseScheduleOpt - ) - (tutorialScheduleOptOpt . entityVal) - mTutorialScheduleOpt - (tutScheduleForm, tutScheduleEnctype) <- liftHandler . generateFormPost . buttonForm' $ bool [BtnScheduleOptIn] [BtnScheduleOptOut] currentOpt + | Just (uid,_) <- mbAuth -> do + shouldBeDisplayedInSchedule <- E.selectExists . E.from $ \(c `E.InnerJoin` tut) -> do + E.on $ c E.^. CourseId E.==. tut E.^. TutorialCourse + E.where_ $ tut E.^. TutorialId E.==. E.val tutId + E.&&. tutorialShouldBeDisplayedInSchedule (Just uid) ata c tut + (tutScheduleForm, tutScheduleEnctype) <- liftHandler . generateFormPost . buttonForm' $ bool [BtnScheduleOptIn] [BtnScheduleOptOut] shouldBeDisplayedInSchedule return $ wrapForm tutScheduleForm def - { formAction = Just . SomeRoute $ CTutorialR tid ssh csh tutorialName (TScheduleOptSetR $ not currentOpt) + { formAction = Just . SomeRoute $ CTutorialR tid ssh csh tutorialName (TScheduleOptSetR $ not shouldBeDisplayedInSchedule) , formEncoding = tutScheduleEnctype , formSubmit = FormNoSubmit }