feat(eeusersr): audit external exam result delete

This commit is contained in:
Sarah Vaupel 2020-03-03 16:32:56 +01:00
parent d4b784afba
commit baa3fd82e1

View File

@ -19,16 +19,16 @@ postEEGradesR tid ssh coursen examn = do
(usersResult, examUsersTable) <- makeExternalExamUsersTable EEUMGrades eExam
usersResult' <- formResultMaybe usersResult $ \case
(ExternalExamUserMarkSynchronisedData, selectedUsers) -> do
forM_ selectedUsers externalExamResultMarkSynchronised
(ExternalExamUserMarkSynchronisedData, selectedResults) -> do
forM_ selectedResults externalExamResultMarkSynchronised
return . Just $ do
addMessageI Success $ MsgExamUserMarkedSynchronised $ length selectedUsers
addMessageI Success $ MsgExamUserMarkedSynchronised $ length selectedResults
redirect $ EExamR tid ssh coursen examn EEGradesR
(ExternalExamUserEditOccurrenceData occ, selectedUsers) -> do
(ExternalExamUserEditOccurrenceData occ, selectedResults) -> do
nrEdited <- do
now <- liftIO getCurrentTime
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedResults ]
[ ExternalExamResultTime =. occ
, ExternalExamResultLastChanged =. now
]
@ -36,10 +36,10 @@ postEEGradesR tid ssh coursen examn = do
addMessageI Success $ MsgExternalExamOccurrenceEdited nrEdited
redirect $ EExamR tid ssh coursen examn EEGradesR
(ExternalExamUserEditResultData examResult, selectedUsers) -> do
(ExternalExamUserEditResultData examResult, selectedResults) -> do
nrEdited <- do
now <- liftIO getCurrentTime
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedResults ]
[ ExternalExamResultResult =. examResult
, ExternalExamResultLastChanged =. now
]
@ -47,8 +47,15 @@ postEEGradesR tid ssh coursen examn = do
addMessageI Success $ MsgExternalExamResultEdited nrEdited
redirect $ EExamR tid ssh coursen examn EEGradesR
(ExternalExamUserDeleteData, selectedUsers) -> do
nrDeleted <- deleteWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
(ExternalExamUserDeleteData, selectedResults) -> do
nrDeleted <- fmap getSum . flip foldMapM selectedResults $ \selectedResult -> do
mExtExamRes <- get selectedResult
nrDel <- deleteWhereCount [ ExternalExamResultId ==. selectedResult ]
if
| Just ExternalExamResult{..} <- mExtExamRes -> do
forM_ [1..nrDel] $ const $ audit $ TransactionExternalExamResultDelete externalExamResultExam externalExamResultUser
return $ Sum nrDel
| otherwise -> return mempty
return . Just $ do
addMessageI Success $ MsgExternalExamUserDeleted nrDeleted
redirect $ EExamR tid ssh coursen examn EEGradesR