fix(exam-correct): cut off at maxPoints for now (TODO)

This commit is contained in:
Sarah Vaupel 2020-02-07 09:49:39 +01:00
parent b8e48d08d9
commit af8d77c4a4

View File

@ -151,7 +151,7 @@ postECorrectR tid ssh csh examn = do
now <- liftIO getCurrentTime now <- liftIO getCurrentTime
newExamPartResults <- if newExamPartResults <- if
| Just results <- ciqResults -> iforM (toNullable results) $ \partNumber mPartResult -> do | Just results <- ciqResults -> iforM (toNullable results) $ \partNumber mPartResult -> do
examPartId <- getKeyBy404 $ UniqueExamPartNumber eId partNumber (Entity examPartId ExamPart{..}) <- getBy404 $ UniqueExamPartNumber eId partNumber
mOldResult <- getBy $ UniqueExamPartResult examPartId uid mOldResult <- getBy $ UniqueExamPartResult examPartId uid
if if
| Just (Entity oldId _) <- mOldResult, is _Nothing mPartResult -> do | Just (Entity oldId _) <- mOldResult, is _Nothing mPartResult -> do
@ -163,18 +163,24 @@ postECorrectR tid ssh csh examn = do
mNew = ExamAttended <$> mPartResult mNew = ExamAttended <$> mPartResult
resultVal = _entityVal . _examPartResultResult resultVal = _entityVal . _examPartResultResult
in if in if
| mOld /= mNew -> do | mOld /= mNew -> let
newExamPartResult <- upsert ExamPartResult -- cut off part results that exceed the maximum number of points for this exam part for now
{ examPartResultExamPart = examPartId -- TODO answer with new failure response type instead
, examPartResultUser = uid partResult' = if
, examPartResultResult = ExamAttended partResult | Just maxPts <- examPartMaxPoints, maxPts < partResult -> maxPts
, examPartResultLastChanged = now | otherwise -> partResult
} in do
[ ExamPartResultResult =. ExamAttended partResult newExamPartResult <- upsert ExamPartResult
, ExamPartResultLastChanged =. now { examPartResultExamPart = examPartId
] , examPartResultUser = uid
audit $ TransactionExamPartResultEdit examPartId uid , examPartResultResult = ExamAttended partResult'
return $ newExamPartResult ^? resultVal , examPartResultLastChanged = now
}
[ ExamPartResultResult =. ExamAttended partResult'
, ExamPartResultLastChanged =. now
]
audit $ TransactionExamPartResultEdit examPartId uid
return $ newExamPartResult ^? resultVal
| otherwise -> return $ mOldResult ^? _Just . resultVal | otherwise -> return $ mOldResult ^? _Just . resultVal
| otherwise -> return Nothing | otherwise -> return Nothing
| otherwise -> return mempty | otherwise -> return mempty