feat(eeusersr): more on actions, TODO audit
This commit is contained in:
parent
4d48730abd
commit
d4b784afba
@ -1737,11 +1737,13 @@ ExamUserMarkSynchronisedCsv: Prüfungsleistungen beim Export als synchronisiert
|
||||
ExamUserMarkSynchronisedCsvTip: Sollen beim CSV-Export automatisch alle heruntergeladenen Prüfungsleistungen als synchronisiert markiert werden? Diese Markierung dient als Hinweis an andere Prüfungsbeauftragte und die Kursverwalter, dass die Leistung an der korrekten Stelle vermerkt wurde und keiner weiteren Handlung bedarf.
|
||||
ExamUserMarkedSynchronised n@Int: #{n} #{pluralDE n "Prüfungsleistung" "Prüfungsleistungen"} als synchronisiert markiert
|
||||
|
||||
ExternalExamOccurrence: Termin
|
||||
|
||||
ExternalExamUserMarkSynchronisedCsv: Prüfungsleistungen beim Export als synchronisiert markieren
|
||||
ExternalExamUserMarkedSynchronised n@Int: #{n} #{pluralDE n "Prüfungsleistung" "Prüfungsleistungen"} als synchronisiert markiert
|
||||
ExternalExamOccurrenceEdited n@Int: #{n} Termine editiert
|
||||
ExternalExamResultEdited n@Int: #{n} Prüfungsergebnisse editiert
|
||||
ExternalExamUserDeleted n@Int: #{n} Prüfungsteilnehmer entfernt
|
||||
ExternalExamOccurrenceEdited count@Int64: #{count} #{pluralDE count "Termin" "Termine"} editiert
|
||||
ExternalExamResultEdited count@Int64: #{count} #{pluralDE count "Prüfungsergebnis" "Prüfungsergebnisse"} editiert
|
||||
ExternalExamUserDeleted count@Int64: #{count} Prüfungsteilnehmer entfernt
|
||||
|
||||
ExamOfficeExamUsersHeading: Prüfungsleistungen
|
||||
|
||||
|
||||
@ -1729,11 +1729,13 @@ ExamUserMarkSynchronisedCsv: Mark exam achievements as synchronised while export
|
||||
ExamUserMarkSynchronisedCsvTip: Should all exam achievements, that are included in the download, be marked as synchronised? Marking exam achievemnts as synchronised serves as a notice to other exam offices and course administrators, that the exam achievement has been dealt with properly such that no further action is required.
|
||||
ExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam achievement" "exam achievements"} as synchronised
|
||||
|
||||
ExternalExamOccurrence: Occurrence
|
||||
|
||||
ExternalExamUserMarkSynchronisedCsv: Mark exam achievements as synchronised while exporting
|
||||
ExternalExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam result" "exam results"} as synchronised
|
||||
ExternalExamOccurrenceEdited n: Successfully edited #{n} #{pluralEN n "occurrence" "occurrences"}
|
||||
ExternalExamResultEdited n: Successfully edited #{n} #{pluralEN n "exam result" "exam results"}
|
||||
ExternalExamUserDeleted n: Successfully deleted #{n} #{pluralEN n "exam participant" "exam participants"}
|
||||
ExternalExamOccurrenceEdited count: Successfully edited #{count} #{pluralEN count "occurrence" "occurrences"}
|
||||
ExternalExamResultEdited count: Successfully edited #{count} #{pluralEN count "exam result" "exam results"}
|
||||
ExternalExamUserDeleted count: Successfully deleted #{count} #{pluralEN count "exam participant" "exam participants"}
|
||||
|
||||
ExamOfficeExamUsersHeading: Exam achievements
|
||||
|
||||
|
||||
@ -4,6 +4,9 @@ module Handler.ExamOffice.ExternalExam
|
||||
|
||||
import Import
|
||||
|
||||
import qualified Data.Set as Set
|
||||
import Database.Persist.Sql (deleteWhereCount, updateWhereCount)
|
||||
|
||||
import Handler.Utils
|
||||
|
||||
import Handler.Utils.ExternalExam.Users
|
||||
@ -16,31 +19,38 @@ postEEGradesR tid ssh coursen examn = do
|
||||
(usersResult, examUsersTable) <- makeExternalExamUsersTable EEUMGrades eExam
|
||||
|
||||
usersResult' <- formResultMaybe usersResult $ \case
|
||||
(ExternalExamUserMarkSynchronisedData, selectedResults) -> do
|
||||
forM_ selectedResults externalExamResultMarkSynchronised
|
||||
(ExternalExamUserMarkSynchronisedData, selectedUsers) -> do
|
||||
forM_ selectedUsers externalExamResultMarkSynchronised
|
||||
return . Just $ do
|
||||
addMessageI Success $ MsgExamUserMarkedSynchronised (length selectedResults)
|
||||
addMessageI Success $ MsgExamUserMarkedSynchronised $ length selectedUsers
|
||||
redirect $ EExamR tid ssh coursen examn EEGradesR
|
||||
|
||||
(ExternalExamUserEditOccurrenceData occ, selectedResults) -> do
|
||||
-- TODO work in progress
|
||||
forM_ selectedResults $ externalExamEditOccurrence occ
|
||||
(ExternalExamUserEditOccurrenceData occ, selectedUsers) -> do
|
||||
nrEdited <- do
|
||||
now <- liftIO getCurrentTime
|
||||
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
|
||||
[ ExternalExamResultTime =. occ
|
||||
, ExternalExamResultLastChanged =. now
|
||||
]
|
||||
return . Just $ do
|
||||
addMessageI Success $ MsgExternalExamOccurrenceEdited $ length selectedResults
|
||||
addMessageI Success $ MsgExternalExamOccurrenceEdited nrEdited
|
||||
redirect $ EExamR tid ssh coursen examn EEGradesR
|
||||
|
||||
(ExternalExamUserEditResultData examResult, selectedResults) -> do
|
||||
-- TODO work in progress
|
||||
forM_ selectedResults $ externalExamEditResult examResult
|
||||
(ExternalExamUserEditResultData examResult, selectedUsers) -> do
|
||||
nrEdited <- do
|
||||
now <- liftIO getCurrentTime
|
||||
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
|
||||
[ ExternalExamResultResult =. examResult
|
||||
, ExternalExamResultLastChanged =. now
|
||||
]
|
||||
return . Just $ do
|
||||
addMessageI Success $ MsgExternalExamResultEdited $ length selectedResults
|
||||
addMessageI Success $ MsgExternalExamResultEdited nrEdited
|
||||
redirect $ EExamR tid ssh coursen examn EEGradesR
|
||||
|
||||
(ExternalExamUserDeleteData, selectedResults) -> do
|
||||
-- TODO work in progress
|
||||
forM_ selectedResults externalExamDeleteUser
|
||||
(ExternalExamUserDeleteData, selectedUsers) -> do
|
||||
nrDeleted <- deleteWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
|
||||
return . Just $ do
|
||||
addMessageI Success $ MsgExternalExamUserDeleted $ length selectedResults
|
||||
addMessageI Success $ MsgExternalExamUserDeleted nrDeleted
|
||||
redirect $ EExamR tid ssh coursen examn EEGradesR
|
||||
|
||||
return (usersResult', examUsersTable)
|
||||
|
||||
@ -311,9 +311,21 @@ makeExternalExamUsersTable mode (Entity eeId ExternalExam{..}) = do
|
||||
return (formRes, formWgt)
|
||||
EEUMUsers -> \csrf -> do
|
||||
let
|
||||
-- TODO work in progress
|
||||
actionMap :: Map ExternalExamUserAction (AForm Handler ExternalExamUserActionData)
|
||||
actionMap = Map.fromList
|
||||
[]
|
||||
actionMap = mconcat
|
||||
[ singletonMap ExternalExamUserMarkSynchronised $
|
||||
pure ExternalExamUserMarkSynchronisedData
|
||||
--, singletonMap ExternalExamUserEditOccurrence $
|
||||
-- ExternalExamUserEditOccurrenceData
|
||||
-- <$> mempty
|
||||
-- <$> aopt () (fslI MsgExamOccurrence) (Just Nothing)
|
||||
--, singletonMap ExternalExamUserEditResult $
|
||||
-- ExternalExamUserEditResultData
|
||||
-- <$> mempty
|
||||
, singletonMap ExternalExamUserDelete $
|
||||
pure ExternalExamUserDeleteData
|
||||
]
|
||||
(res, formWgt) <- multiActionM actionMap (fslI MsgAction) Nothing csrf
|
||||
let formRes = (, mempty) . First . Just <$> res
|
||||
return (formRes, formWgt)
|
||||
@ -483,21 +495,3 @@ externalExamResultMarkSynchronised resId = do
|
||||
| Entity _ UserFunction{..} <- userFunctions
|
||||
]
|
||||
|
||||
externalExamEditOccurrence :: UTCTime -> ExternalExamResultId -> DB ()
|
||||
externalExamEditOccurrence _ _ = do
|
||||
--uid <- requireAuthId
|
||||
--now <- liftIO getCurrentTime
|
||||
-- TODO work in progress
|
||||
return ()
|
||||
|
||||
externalExamEditResult :: ExamResultPassedGrade -> ExternalExamResultId -> DB ()
|
||||
externalExamEditResult _ _ = do
|
||||
--uid <- requireAuthId
|
||||
--now <- liftIO getCurrentTime
|
||||
-- TODO work in progress
|
||||
return ()
|
||||
|
||||
externalExamDeleteUser :: ExternalExamResultId -> DB ()
|
||||
externalExamDeleteUser _ = do
|
||||
-- TODO work in progress
|
||||
return ()
|
||||
|
||||
Reference in New Issue
Block a user