From cd9b542265d2e09464697324ab9991dda1976127 Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Thu, 19 Oct 2023 15:01:24 +0000 Subject: [PATCH] chore(audit): qualification schedule renewal changes are logged to audit log --- src/Audit/Types.hs | 9 +++++++-- src/Handler/Qualification.hs | 14 ++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/Audit/Types.hs b/src/Audit/Types.hs index 8360410a8..50dbc8811 100644 --- a/src/Audit/Types.hs +++ b/src/Audit/Types.hs @@ -212,7 +212,7 @@ data Transaction } | TransactionQualificationUserEdit -- Note that a renewal always entails unblocking as well! { transactionUser :: UserId -- qualification holder that is updated - , transactionQualificationUser :: QualificationUserId -- könnte entfernt werden + , transactionQualificationUser :: QualificationUserId -- not really necessary, maybe remove? , transactionQualification :: QualificationId , transactionQualificationValidUntil :: Day , transactionQualificationScheduleRenewal :: Maybe Bool -- Maybe, because some update may leave it unchanged (also avoids DB Migration) @@ -226,7 +226,12 @@ data Transaction { transactionUser :: UserId -- qualification holder that is updated -- , transactionQualificationUser :: QualificationUserId -- not neccessary due to UniqueQualificationUser , transactionQualification :: QualificationId - , transactionQualificationBlock :: QualificationUserBlock -- TODO -- + , transactionQualificationBlock :: QualificationUserBlock -- full information about block + } + | TransactionQualificationUserScheduleRenewal + { transactionUser :: UserId -- qualification holder that is updated + , transactionQualification :: QualificationId + , transactionQualificationScheduleRenewal :: Maybe Bool -- TRUE=will be notified upon expiry, FALSE=won't be notified; always JUST, for compatibility with TransactionQualificationUserEdit } deriving (Eq, Ord, Read, Show, Generic) diff --git a/src/Handler/Qualification.hs b/src/Handler/Qualification.hs index 66a4b2f75..689a96e2b 100644 --- a/src/Handler/Qualification.hs +++ b/src/Handler/Qualification.hs @@ -620,11 +620,17 @@ postQualificationR sid qsh = do runDB . forM_ selectedUsers $ upsertQualificationUser qid now grantValidday Nothing "Admin" addMessageI (if 0 < Set.size selectedUsers then Success else Warning) . MsgTutorialUserGrantedQualification $ Set.size selectedUsers reloadKeepGetParams $ QualificationR sid qsh - (action, selectedUsers) | isExpiryAct action -> do + (action, selectedUsers) | isExpiryAct action -> do let isUnexpire = action == QualificationActUnexpireData - upd <- runDB $ updateWhereCount - [QualificationUserQualification ==. qid, QualificationUserUser <-. Set.toList selectedUsers] - [QualificationUserScheduleRenewal =. isUnexpire] + upd <- runDB $ do + forM_ selectedUsers $ \uid -> audit TransactionQualificationUserScheduleRenewal + { transactionUser = uid + , transactionQualification = qid + , transactionQualificationScheduleRenewal = Just isUnexpire + } + updateWhereCount + [QualificationUserQualification ==. qid, QualificationUserUser <-. Set.toList selectedUsers] + [QualificationUserScheduleRenewal =. isUnexpire] let msgKind = if upd > 0 then Success else Warning msgVal = upd & if isUnexpire then MsgQualificationSetUnexpire else MsgQualificationSetExpire addMessageI msgKind msgVal