From 2e7bca6333deea697e98d4bd84a1aec6ef0c1f77 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Thu, 23 Jan 2020 20:41:35 +0100 Subject: [PATCH] fix(exam-correct): fix returning null if old and new results are equal --- src/Handler/Exam/Correct.hs | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/Handler/Exam/Correct.hs b/src/Handler/Exam/Correct.hs index 79d86b9d6..c1c095096 100644 --- a/src/Handler/Exam/Correct.hs +++ b/src/Handler/Exam/Correct.hs @@ -147,20 +147,25 @@ postECorrectR tid ssh csh examn = do delete oldId audit $ TransactionExamPartResultDeleted examPartId uid return Nothing - | Just partResult <- mPartResult - , fmap (examPartResultResult . entityVal) mOldResult /= fmap ExamAttended mPartResult -> do - newExamPartResult <- upsert ExamPartResult - { examPartResultExamPart = examPartId - , examPartResultUser = uid - , examPartResultResult = ExamAttended partResult - , examPartResultLastChanged = now - } - [ ExamPartResultResult =. ExamAttended partResult - , ExamPartResultLastChanged =. now - ] - audit $ TransactionExamPartResultEdit examPartId uid - return $ newExamPartResult ^? _entityVal . _examPartResultResult . _ExamAttended - | otherwise -> return Nothing + | Just partResult <- mPartResult -> let + mOld = (examPartResultResult . entityVal) <$> mOldResult + mNew = ExamAttended <$> mPartResult + resultVal = _entityVal . _examPartResultResult . _ExamAttended + in if + | mOld /= mNew -> do + newExamPartResult <- upsert ExamPartResult + { examPartResultExamPart = examPartId + , examPartResultUser = uid + , examPartResultResult = ExamAttended partResult + , examPartResultLastChanged = now + } + [ ExamPartResultResult =. ExamAttended partResult + , ExamPartResultLastChanged =. now + ] + audit $ TransactionExamPartResultEdit examPartId uid + return $ newExamPartResult ^? resultVal + | otherwise -> return $ mOldResult ^? _Just . resultVal + | otherwise -> return Nothing user <- userToResponse match return CorrectInterfaceResponseSuccess { cirsUser = user