chore(audit): replace lms audit table with Transaction log entries
This commit is contained in:
parent
8dc7d18bf1
commit
71cde92a1a
@ -134,13 +134,3 @@ LmsResult
|
|||||||
timestamp UTCTime default=now()
|
timestamp UTCTime default=now()
|
||||||
UniqueLmsResult qualification ident -- required by DBTable
|
UniqueLmsResult qualification ident -- required by DBTable
|
||||||
deriving Generic
|
deriving Generic
|
||||||
|
|
||||||
-- Logs all processed rows from LmsUserlist and LmsResult
|
|
||||||
LmsAudit
|
|
||||||
qualification QualificationId OnDeleteCascade OnUpdateCascade
|
|
||||||
ident LmsIdent
|
|
||||||
notificationType LmsStatus -- LmsBlocked Day | LmsSuccess Day
|
|
||||||
note Text Maybe
|
|
||||||
received UTCTime -- timestamp from LmsUserlist/LmsResult
|
|
||||||
processed UTCTime default=now()
|
|
||||||
deriving Generic
|
|
||||||
|
|||||||
@ -64,17 +64,6 @@ data Transaction
|
|||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
}
|
}
|
||||||
|
|
||||||
| TransactionCourseApplicationEdit
|
|
||||||
{ transactionCourse :: CourseId
|
|
||||||
, transactionUser :: UserId
|
|
||||||
, transactionCourseApplication :: CourseApplicationId
|
|
||||||
}
|
|
||||||
| TransactionCourseApplicationDeleted
|
|
||||||
{ transactionCourse :: CourseId
|
|
||||||
, transactionUser :: UserId
|
|
||||||
, transactionCourseApplication :: CourseApplicationId
|
|
||||||
}
|
|
||||||
|
|
||||||
| TransactionSubmissionEdit
|
| TransactionSubmissionEdit
|
||||||
{ transactionSubmission :: SubmissionId
|
{ transactionSubmission :: SubmissionId
|
||||||
, transactionSheet :: SheetId
|
, transactionSheet :: SheetId
|
||||||
@ -181,14 +170,24 @@ data Transaction
|
|||||||
, transactionNewUserIdent :: UserIdent
|
, transactionNewUserIdent :: UserIdent
|
||||||
}
|
}
|
||||||
|
|
||||||
| TransactionAllocationUserEdited
|
| TransactionLmsBlocked
|
||||||
{ transactionUser :: UserId
|
{ transactionQualification :: QualificationId
|
||||||
, transactionAllocation :: AllocationId
|
, transactionLmsIdent :: LmsIdent
|
||||||
|
, transactionLmsDay :: Day
|
||||||
|
, transactionLmsUser :: Maybe UserId
|
||||||
|
, transactionNote :: Maybe Text
|
||||||
|
, transactionReceived :: UTCTime -- when was the csv file received?
|
||||||
}
|
}
|
||||||
| TransactionAllocationUserDeleted
|
| TransactionLmsSuccess
|
||||||
{ transactionUser :: UserId
|
{ transactionQualification :: QualificationId
|
||||||
, transactionAllocation :: AllocationId
|
, transactionLmsIdent :: LmsIdent
|
||||||
|
, transactionLmsDay :: Day
|
||||||
|
, transactionLmsUser :: Maybe UserId
|
||||||
|
, transactionNote :: Maybe Text
|
||||||
|
, transactionReceived :: UTCTime -- when was the csv file received?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- TODO: SetQualification
|
||||||
|
|
||||||
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
||||||
|
|
||||||
|
|||||||
@ -153,12 +153,12 @@ dispatchJobLmsDequeue qid = JobHandlerAtomic act
|
|||||||
E.where_ $ luser E.^. LmsUserQualification E.==. E.val qid
|
E.where_ $ luser E.^. LmsUserQualification E.==. E.val qid
|
||||||
E.&&. luser E.^. LmsUserEnded E.<. E.just (E.val auditCutoff)
|
E.&&. luser E.^. LmsUserEnded E.<. E.just (E.val auditCutoff)
|
||||||
E.&&. E.isJust (luser E.^. LmsUserEnded)
|
E.&&. E.isJust (luser E.^. LmsUserEnded)
|
||||||
E.&&. E.notExists (do
|
-- E.&&. E.notExists (do
|
||||||
laudit <- E.from $ E.table @LmsAudit
|
-- laudit <- E.from $ E.table @LmsAudit
|
||||||
E.where_ $ laudit E.^. LmsAuditQualification E.==. E.val qid
|
-- E.where_ $ laudit E.^. LmsAuditQualification E.==. E.val qid
|
||||||
E.&&. laudit E.^. LmsAuditIdent E.==. luser E.^. LmsUserIdent
|
-- E.&&. laudit E.^. LmsAuditIdent E.==. luser E.^. LmsUserIdent
|
||||||
E.&&. laudit E.^. LmsAuditProcessed E.>=. E.val auditCutoff
|
-- E.&&. laudit E.^. LmsAuditProcessed E.>=. E.val auditCutoff
|
||||||
)
|
-- )
|
||||||
pure (luser E.^. LmsUserIdent)
|
pure (luser E.^. LmsUserIdent)
|
||||||
let delusers = E.unValue <$> delusersVals
|
let delusers = E.unValue <$> delusersVals
|
||||||
numdel = length delusers
|
numdel = length delusers
|
||||||
@ -167,7 +167,7 @@ dispatchJobLmsDequeue qid = JobHandlerAtomic act
|
|||||||
deleteWhere [LmsUserQualification ==. qid, LmsUserIdent <-. delusers]
|
deleteWhere [LmsUserQualification ==. qid, LmsUserIdent <-. delusers]
|
||||||
deleteWhere [LmsUserlistQualification ==. qid, LmsUserlistIdent <-. delusers]
|
deleteWhere [LmsUserlistQualification ==. qid, LmsUserlistIdent <-. delusers]
|
||||||
deleteWhere [LmsResultQualification ==. qid, LmsResultIdent <-. delusers]
|
deleteWhere [LmsResultQualification ==. qid, LmsResultIdent <-. delusers]
|
||||||
deleteWhere [LmsAuditQualification ==. qid, LmsAuditIdent <-. delusers]
|
-- deleteWhere [LmsAuditQualification ==. qid, LmsAuditIdent <-. delusers]
|
||||||
|
|
||||||
-- processes received results and lengthen qualifications, if applicable
|
-- processes received results and lengthen qualifications, if applicable
|
||||||
dispatchJobLmsResults :: QualificationId -> JobHandler UniWorX
|
dispatchJobLmsResults :: QualificationId -> JobHandler UniWorX
|
||||||
@ -218,7 +218,14 @@ dispatchJobLmsResults qid = JobHandlerAtomic act
|
|||||||
$logErrorS "LmsResult" errmsg
|
$logErrorS "LmsResult" errmsg
|
||||||
return $ Just errmsg
|
return $ Just errmsg
|
||||||
|
|
||||||
insert_ $ LmsAudit qid lmsUserIdent newStatus note lmsResultTimestamp now -- always log success, since this is only transmitted once
|
audit TransactionLmsSuccess -- always log success, since this is only transmitted once
|
||||||
|
{ transactionQualification = qid
|
||||||
|
, transactionLmsIdent = lmsUserIdent
|
||||||
|
, transactionLmsDay = lmsResultSuccess
|
||||||
|
, transactionLmsUser = Just lmsUserUser
|
||||||
|
, transactionNote = note
|
||||||
|
, transactionReceived = lmsResultTimestamp
|
||||||
|
}
|
||||||
delete lrid
|
delete lrid
|
||||||
$logInfoS "LmsResult" [st|Processed #{tshow (length results)} LMS results|]
|
$logInfoS "LmsResult" [st|Processed #{tshow (length results)} LMS results|]
|
||||||
|
|
||||||
@ -260,7 +267,14 @@ dispatchJobLmsUserlist qid = JobHandlerAtomic act
|
|||||||
let blockedDay = utctDay lReceived
|
let blockedDay = utctDay lReceived
|
||||||
newStatus = LmsBlocked blockedDay
|
newStatus = LmsBlocked blockedDay
|
||||||
oldStatus = lmsUserStatus luser
|
oldStatus = lmsUserStatus luser
|
||||||
insert_ $ LmsAudit qid (lmsUserIdent luser) newStatus (Just $ "Old Status was " <> tshow oldStatus) lReceived now
|
audit TransactionLmsBlocked
|
||||||
|
{ transactionQualification = qid
|
||||||
|
, transactionLmsIdent = lmsUserIdent luser
|
||||||
|
, transactionLmsDay = blockedDay
|
||||||
|
, transactionLmsUser = Just $ lmsUserUser luser
|
||||||
|
, transactionNote = Just $ "Old status was " <> tshow oldStatus
|
||||||
|
, transactionReceived = lReceived
|
||||||
|
}
|
||||||
update luid [LmsUserStatus =. (oldStatus <> Just newStatus)]
|
update luid [LmsUserStatus =. (oldStatus <> Just newStatus)]
|
||||||
updateBy (UniqueQualificationUser qid (lmsUserUser luser)) [QualificationUserBlockedDue =. Just (QualificationBlockedLms blockedDay)]
|
updateBy (UniqueQualificationUser qid (lmsUserUser luser)) [QualificationUserBlockedDue =. Just (QualificationBlockedLms blockedDay)]
|
||||||
queueDBJob JobSendNotification
|
queueDBJob JobSendNotification
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user