diff --git a/src/Handler/ExamOffice/ExternalExam.hs b/src/Handler/ExamOffice/ExternalExam.hs index a98836fab..3c9c4bcf1 100644 --- a/src/Handler/ExamOffice/ExternalExam.hs +++ b/src/Handler/ExamOffice/ExternalExam.hs @@ -37,12 +37,19 @@ postEEGradesR tid ssh coursen examn = do redirect $ EExamR tid ssh coursen examn EEGradesR (ExternalExamUserEditResultData examResult, selectedResults) -> do - nrEdited <- do + nrEdited <- fmap getSum . flip foldMapM selectedResults $ \selectedResult -> do now <- liftIO getCurrentTime - updateWhereCount [ ExternalExamResultId <-. Set.toList selectedResults ] + mExtExamRes <- get selectedResult + nrEdit <- updateWhereCount + [ ExternalExamResultId ==. selectedResult ] [ ExternalExamResultResult =. examResult , ExternalExamResultLastChanged =. now ] + if + | Just ExternalExamResult{..} <- mExtExamRes -> do + forM_ [1..nrEdit] $ const $ audit $ TransactionExternalExamResultEdit externalExamResultExam externalExamResultUser + return $ Sum nrEdit + | otherwise -> return mempty return . Just $ do addMessageI Success $ MsgExternalExamResultEdited nrEdited redirect $ EExamR tid ssh coursen examn EEGradesR