36 lines
1.3 KiB
Haskell
36 lines
1.3 KiB
Haskell
module Handler.ExamOffice.ExternalExam
|
|
( getEEGradesR, postEEGradesR
|
|
) where
|
|
|
|
import Import
|
|
|
|
import Handler.Utils
|
|
|
|
import Handler.Utils.ExternalExam.Users
|
|
|
|
getEEGradesR, postEEGradesR :: TermId -> SchoolId -> CourseName -> ExamName -> Handler Html
|
|
getEEGradesR = postEEGradesR
|
|
postEEGradesR tid ssh coursen examn = do
|
|
(usersResult, table) <- runDB $ do
|
|
eExam <- getBy404 $ UniqueExternalExam tid ssh coursen examn
|
|
(usersResult, examUsersTable) <- makeExternalExamUsersTable EEUMGrades eExam
|
|
|
|
usersResult' <- formResultMaybe usersResult $ \case
|
|
(ExternalExamUserMarkSynchronisedData, selectedResults) -> do
|
|
forM_ selectedResults externalExamResultMarkSynchronised
|
|
return . Just $ do
|
|
addMessageI Success $ MsgExamUserMarkedSynchronised $ length selectedResults
|
|
redirect $ EExamR tid ssh coursen examn EEGradesR
|
|
_other -> return Nothing
|
|
|
|
return (usersResult', examUsersTable)
|
|
|
|
whenIsJust usersResult join
|
|
|
|
hasUsers <- hasReadAccessTo $ EExamR tid ssh coursen examn EEUsersR
|
|
|
|
siteLayoutMsg (MsgExternalExamGrades coursen examn) $ do
|
|
setTitleI MsgBreadcrumbExternalExamGrades
|
|
let examGradesExplanation = notificationWidget NotificationBroad Info $(i18nWidgetFile "exam-office/exam-grades-explanation")
|
|
$(widgetFile "exam-office/externalExamGrades")
|