From e669e495f928847617f29c108e15942fd4d09bff Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Thu, 31 Mar 2022 16:05:59 +0200 Subject: [PATCH] chore(lms): wip handler dispatch enqueue --- src/Jobs/Handler/LMS.hs | 53 +++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/src/Jobs/Handler/LMS.hs b/src/Jobs/Handler/LMS.hs index 952d3e978..10b04354b 100644 --- a/src/Jobs/Handler/LMS.hs +++ b/src/Jobs/Handler/LMS.hs @@ -15,43 +15,50 @@ import qualified Database.Esqueleto.Experimental as E -- import qualified Database.Esqueleto.PostgreSQL as E -- for insertSelect variant import qualified Database.Esqueleto.Utils as E -import Handler.Utils.DateTime (addDiffDays) +-- import Handler.Utils.DateTime (addDiffDays) dispatchJobLmsEnqueue :: QualificationId -> JobHandler UniWorX -dispatchJobLmsEnqueue qid = JobHandlerAtomic act +dispatchJobLmsEnqueue _qid = JobHandlerAtomic act where -- act :: YesodJobDB UniWorX () act = hoist lift $ do + {- now <- liftIO getCurrentTime - Just (Entity _ quali) <- E.selectOne $ E.from $ \quali -> E.where_ (quali E.^. QualificationId E.==. E.val qid) >> pure quali + mbq <- E.selectOne $ E.from $ \quali -> E.where_ (quali E.^. QualificationId E.==. E.val qid) >> pure quali -- Just quali <- get qid - let Just refreshTime = qualificationRefreshWithin quali -- HACK / TODO + + let (Entity _ quali) = fromMaybe (error "TODO") mbq -- HACK / TODO + refreshTime = fromMaybe (error "TODO") $ qualificationRefreshWithin quali -- HACK / TODO freshIdent = LmsIdent "abcd" -- TODO freshPin = "1234" -- TODO cutoff = addDiffDays refreshTime now - res <- E.insertSelect $ do - quser <- from (E.table @QualificationUser) - E.where_ ( quser E.^. QualificationUserQualification E.==. E.val qid - E.&&. quser E.^. QualificationUserValidUntil E.>=. E.val now - E.&&. quser E.^. QualificationUserValidUntil E.<=. E.val cutoff - ) - -- and not exists already as LMS User - return $ LmsUser - E.<# E.val qid - E.<&> (quser E.^. QualificationUserUser) - E.<&> E.val freshIdent -- ident -- THIS IS A PROBLEM! MUST ALSO BE UNIQUE! - E.<&> E.val freshPin -- pin -- THIS IS A PROBLEM! - E.<&> E.false -- reset - E.<&> E.nothing -- status - E.<&> E.val now -- started - E.<&> E.nothing -- received - E.<&> E.nothing -- ended - + + E.insertSelect ( do + quser <- E.from (E.table @QualificationUser) + E.where_ ( quser E.^. QualificationUserQualification E.==. E.val qid + E.&&. quser E.^. QualificationUserValidUntil E.>=. E.val now + E.&&. quser E.^. QualificationUserValidUntil E.<=. E.val cutoff + -- and not exists already as LMS User + ) + + return $ LmsUser + E.<# E.val qid + E.<&> (quser E.^. QualificationUserUser) + E.<&> E.val freshIdent -- ident -- THIS IS A PROBLEM! MUST ALSO BE UNIQUE! + E.<&> E.val freshPin -- pin -- THIS IS A PROBLEM! + E.<&> E.false -- reset + E.<&> E.nothing -- status + E.<&> E.val now -- started + E.<&> E.nothing -- received + E.<&> E.nothing -- ended + ) + -- find qualification holders + -} error "lms dequeu stub" dispatchJobLmsDequeue :: QualificationId -> JobHandler UniWorX -dispatchJobLmsDequeue qid = +dispatchJobLmsDequeue _qid = -- wenn bestanden: qualification verlängern & LmsIdent löschen -- wenn durchgefallen: LmsIdent löschen -- wenn Zeit abgelaufen: LmsIdent löschen