diff --git a/src/Handler/Utils/Submission.hs b/src/Handler/Utils/Submission.hs index b8f20c4de..951b711fd 100644 --- a/src/Handler/Utils/Submission.hs +++ b/src/Handler/Utils/Submission.hs @@ -482,8 +482,8 @@ sinkSubmission userId mExists isUpdate = do audit $ TransactionSubmissionFileEdit subFileId submissionId fileId when undoneDeletion $ do touchSubmission + lift $ forM_ [ (sfId, submissionFileFile sf) | (_, Entity sfId sf) <- collidingFiles, submissionFileIsDeletion sf ] $ \(sfId, fId) -> audit $ TransactionSubmissionFileDelete sfId submissionId fId lift $ deleteWhere [ SubmissionFileId <-. [ sfId | (_, Entity sfId sf) <- collidingFiles, submissionFileIsDeletion sf ] ] - -- audit $ TransactionSubmissionFileDelete sfId submissionId fId -- TODO: get sfId, fId Right (submissionId', r) -> do $logDebugS "sinkSubmission" $ tshow submissionId' @@ -534,7 +534,8 @@ sinkSubmission userId mExists isUpdate = do when (submissionRatingDone submission' && not (submissionRatingDone submission)) $ tellSt mempty { sinkSubmissionNotifyRating = Any True } lift $ replace submissionId submission' - -- audit $ TransactionSubmissionEdit submissionId sheetId -- TODO: get sheetId + sheetId <- lift $ getSheetId + lift $ audit $ TransactionSubmissionEdit submissionId sheetId where a /~ b = not $ a ~~ b @@ -565,6 +566,13 @@ sinkSubmission userId mExists isUpdate = do when (is _Just submissionRatingTime) $ lift $ update submissionId [ SubmissionRatingTime =. Just now ] tellSt $ mempty{ sinkSubmissionTouched = Any True } + + getSheetId :: MonadIO m => ReaderT SqlBackend m SheetId + getSheetId = case mExists of + Left shid -> return shid + Right _ -> do + Just Submission{submissionSheet} <- E.get submissionId -- there must have been a submission, otherwise mExists would have been Left shid + return submissionSheet finalize :: SubmissionSinkState -> YesodJobDB UniWorX () finalize SubmissionSinkState{..} = do @@ -608,7 +616,8 @@ sinkSubmission userId mExists isUpdate = do , isn't (_Wrapped . _Just) sinkSeenRating -> do update submissionId [ SubmissionRatingTime =. Nothing, SubmissionRatingPoints =. Nothing, SubmissionRatingComment =. Nothing] - -- audit $ TransactionSubmissionEdit submissionId sheetId -- TODO: get sheetId + sheetId <- getSheetId + audit $ TransactionSubmissionEdit submissionId sheetId | isUpdate , getAny sinkSubmissionNotifyRating -> queueDBJob . JobQueueNotification $ NotificationSubmissionRated submissionId