diff --git a/src/Handler/LMS/Result.hs b/src/Handler/LMS/Result.hs index ff3d566da..ea2994a39 100644 --- a/src/Handler/LMS/Result.hs +++ b/src/Handler/LMS/Result.hs @@ -126,8 +126,8 @@ embedRenderMessage ''UniWorX ''LmsResultCsvException id -mkResultTable :: QualificationId -> DB (Any, Widget) -mkResultTable qid = do +mkResultTable :: SchoolId -> QualificationShorthand -> QualificationId -> DB (Any, Widget) +mkResultTable sid qsh qid = do --now <- liftIO getCurrentTime let resultDBTable = DBTable{..} @@ -181,14 +181,30 @@ mkResultTable qid = do , lmsResultInsertSuccess = csvLRTsuccess dbCsvNew , lmsResultInsertTimestamp = now } - DBCsvDiffNew{dbCsvNewKey = Just _, dbCsvNew} -> error "UniqueLmsResult was found, but Key no longer exists." + DBCsvDiffNew{dbCsvNewKey = Just _, dbCsvNew = _ } -> error "UniqueLmsResult was found, but Key no longer exists." DBCsvDiffMissing{} -> return () -- no deletion DBCsvDiffExisting{} -> return () -- no merge , dbtCsvClassifyAction = \case LmsResultInsertData{} -> LmsResultInsert , dbtCsvCoarsenActionClass = const DBCsvActionNew -- there is only one action: insert into table , dbtCsvValidateActions = return () -- no validation, since this is an automatic upload, i.e. no user to review error - , dbtCsvExecuteActions = error "TODO" + , dbtCsvExecuteActions = do + C.mapM_ $ \case + LmsResultInsertData{..} -> do + now <- liftIO getCurrentTime + void $ upsert + LmsResult + { lmsResultQualification = qid + , lmsResultIdent = lmsResultInsertIdent + , lmsResultSuccess = lmsResultInsertSuccess + , lmsResultTimestamp = now -- lmsResultInsertTimestamp -- does it matter which one to choose? + } + [ LmsResultSuccess =. lmsResultInsertSuccess + , LmsResultTimestamp =. now + ] + -- queueDBJob + -- audit + return $ LmsResultR sid qsh , dbtCsvRenderKey = error "TODO" -- what is the purpose? , dbtCsvRenderActionClass = toWidget <=< ap getMessageRender . pure , dbtCsvRenderException = ap getMessageRender . pure :: LmsResultCsvException -> DB Text @@ -203,7 +219,7 @@ getLmsResultR :: SchoolId -> QualificationShorthand -> Handler Html getLmsResultR sid qsh = do lmsTable <- runDB $ do qid <- getKeyBy404 $ UniqueSchoolShort sid qsh - view _2 <$> mkResultTable qid + view _2 <$> mkResultTable sid qsh qid siteLayoutMsg MsgMenuLmsResult $ do setTitleI MsgMenuLmsResult $(widgetFile "lms-result")