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,14 +163,20 @@ 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
-- cut off part results that exceed the maximum number of points for this exam part for now
-- TODO answer with new failure response type instead
partResult' = if
| Just maxPts <- examPartMaxPoints, maxPts < partResult -> maxPts
| otherwise -> partResult
in do
newExamPartResult <- upsert ExamPartResult newExamPartResult <- upsert ExamPartResult
{ examPartResultExamPart = examPartId { examPartResultExamPart = examPartId
, examPartResultUser = uid , examPartResultUser = uid
, examPartResultResult = ExamAttended partResult , examPartResultResult = ExamAttended partResult'
, examPartResultLastChanged = now , examPartResultLastChanged = now
} }
[ ExamPartResultResult =. ExamAttended partResult [ ExamPartResultResult =. ExamAttended partResult'
, ExamPartResultLastChanged =. now , ExamPartResultLastChanged =. now
] ]
audit $ TransactionExamPartResultEdit examPartId uid audit $ TransactionExamPartResultEdit examPartId uid