feat(course-users): allow for exam registration on CUsersR

This commit is contained in:
Sarah Vaupel 2020-02-10 13:54:47 +01:00 committed by Gregor Kleen
parent c23becceb1
commit b8acc9b5da
3 changed files with 28 additions and 0 deletions

View File

@ -116,6 +116,7 @@ CourseStudyFeatureTip: Dient ausschließlich der Information der Kursverwalter
CourseStudyFeatureUpdated: Assoziiertes Studienfach geändert
CourseStudyFeatureNone: Kein assoziiertes Studienfach
CourseTutorial: Tutorium
CourseExam: Prüfung
CourseSecretWrong: Falsches Passwort
CourseSecret: Zugangspasswort
CourseEditOk tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ssh}-#{csh} wurde erfolgreich geändert.
@ -167,7 +168,9 @@ CourseUserRegister: Zum Kurs anmelden
CourseUserDeregister: Vom Kurs abmelden
CourseUsersDeregistered count@Int64: #{show count} Teilnehmer vom Kurs abgemeldet
CourseUserRegisterTutorial: Zu einem Tutorium anmelden
CourseUserRegisterExam: Zu einer Prüfung anmelden
CourseUsersTutorialRegistered count@Int64: #{show count} Teilnehmer zum Tutorium angemeldet
CourseUsersExamRegistered count@Int64: #{show count} Teilnehmer zur Prüfung angemeldet
CourseUserSendMail: Mitteilung verschicken
TutorialUserDeregister: Vom Tutorium Abmelden
TutorialUserSendMail: Mitteilung verschicken

View File

@ -116,6 +116,7 @@ CourseStudyFeatureTip: For information purposes only (visible to course administ
CourseStudyFeatureUpdated: Successfully updated associated subject
CourseStudyFeatureNone: No associated subject
CourseTutorial: Tutorial
CourseExam: Exam
CourseSecretWrong: Wrong password
CourseSecret: Access password
CourseEditOk tid ssh csh: Successfully edited course #{tid}-#{ssh}-#{csh}
@ -168,6 +169,8 @@ CourseUserDeregister: Deregister from course
CourseUsersDeregistered count: Successfully deregistered #{show count} users from course
CourseUserRegisterTutorial: Register for a tutorial
CourseUsersTutorialRegistered count: Successfully registered #{show count} users for tutorial
CourseUserRegisterExam: Register for an exam
CourseUsersExamRegistered count: Successfully registered #{show count} users for exam
CourseUserSendMail: Send mail
TutorialUserDeregister: Deregister from tutorial
TutorialUserSendMail: Send mail

View File

@ -255,6 +255,7 @@ userTableCsvHeader showSex UserCsvExportData{..} tuts = Csv.header $
data CourseUserAction = CourseUserSendMail
| CourseUserDeregister
| CourseUserRegisterTutorial
| CourseUserRegisterExam
deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic, Typeable)
instance Universe CourseUserAction
@ -269,6 +270,9 @@ data CourseUserActionData = CourseUserSendMailData
| CourseUserRegisterTutorialData
{ registerTutorial :: TutorialId
}
| CourseUserRegisterExamData
{ registerExam :: ExamId
}
deriving (Eq, Ord, Read, Show, Generic, Typeable)
@ -489,6 +493,10 @@ postCUsersR tid ssh csh = do
apopt (selectField' Nothing . fmap (fmap entityKey) $ optionsPersistCryptoId [TutorialCourse ==. cid] [Asc TutorialName] tutorialName)
(fslI MsgCourseTutorial)
Nothing
, singletonMap CourseUserRegisterExam $ CourseUserRegisterExamData <$>
apopt (selectField' Nothing . fmap (fmap entityKey) $ optionsPersistCryptoId [ExamCourse ==. cid] [Asc ExamName] examName)
(fslI MsgCourseExam)
Nothing
, if
| mayRegister
-> singletonMap CourseUserDeregister $ courseUserDeregisterForm cid
@ -520,6 +528,20 @@ postCUsersR tid ssh csh = do
void . insertUnique . TutorialParticipant registerTutorial
addMessageI Success . MsgCourseUsersTutorialRegistered . fromIntegral $ Set.size selectedUsers
redirect $ CourseR tid ssh csh CUsersR
(CourseUserRegisterExamData{..}, selectedUsers) -> do
Sum nrReg <- fmap mconcat . runDB . forM (Set.toList selectedUsers) $ \uid -> do
now <- liftIO getCurrentTime
-- TODO allow occurence
insert_ ExamRegistration
{ examRegistrationExam = registerExam
, examRegistrationUser = uid
, examRegistrationOccurrence = Nothing
, examRegistrationTime = now
}
audit $ TransactionExamRegister registerExam uid
return 1
addMessageI Success $ MsgCourseUsersExamRegistered nrReg
redirect $ CourseR tid ssh csh CUsersR
let headingLong = [whamlet|_{MsgMenuCourseMembers} #{courseName course} #{tid}|]
headingShort = prependCourseTitle tid ssh csh MsgCourseMembers
siteLayout headingLong $ do