chore(lms): wip handler dispatch enqueue

This commit is contained in:
Steffen Jost 2022-03-31 16:05:59 +02:00
parent 04c64b2599
commit e669e495f9

View File

@ -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.PostgreSQL as E -- for insertSelect variant
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Handler.Utils.DateTime (addDiffDays) -- import Handler.Utils.DateTime (addDiffDays)
dispatchJobLmsEnqueue :: QualificationId -> JobHandler UniWorX dispatchJobLmsEnqueue :: QualificationId -> JobHandler UniWorX
dispatchJobLmsEnqueue qid = JobHandlerAtomic act dispatchJobLmsEnqueue _qid = JobHandlerAtomic act
where where
-- act :: YesodJobDB UniWorX () -- act :: YesodJobDB UniWorX ()
act = hoist lift $ do act = hoist lift $ do
{-
now <- liftIO getCurrentTime 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 -- 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 freshIdent = LmsIdent "abcd" -- TODO
freshPin = "1234" -- TODO freshPin = "1234" -- TODO
cutoff = addDiffDays refreshTime now cutoff = addDiffDays refreshTime now
res <- E.insertSelect $ do
quser <- from (E.table @QualificationUser) E.insertSelect ( do
E.where_ ( quser E.^. QualificationUserQualification E.==. E.val qid quser <- E.from (E.table @QualificationUser)
E.&&. quser E.^. QualificationUserValidUntil E.>=. E.val now E.where_ ( quser E.^. QualificationUserQualification E.==. E.val qid
E.&&. quser E.^. QualificationUserValidUntil E.<=. E.val cutoff E.&&. quser E.^. QualificationUserValidUntil E.>=. E.val now
) E.&&. quser E.^. QualificationUserValidUntil E.<=. E.val cutoff
-- and not exists already as LMS User -- and not exists already as LMS User
return $ LmsUser )
E.<# E.val qid
E.<&> (quser E.^. QualificationUserUser) return $ LmsUser
E.<&> E.val freshIdent -- ident -- THIS IS A PROBLEM! MUST ALSO BE UNIQUE! E.<# E.val qid
E.<&> E.val freshPin -- pin -- THIS IS A PROBLEM! E.<&> (quser E.^. QualificationUserUser)
E.<&> E.false -- reset E.<&> E.val freshIdent -- ident -- THIS IS A PROBLEM! MUST ALSO BE UNIQUE!
E.<&> E.nothing -- status E.<&> E.val freshPin -- pin -- THIS IS A PROBLEM!
E.<&> E.val now -- started E.<&> E.false -- reset
E.<&> E.nothing -- received E.<&> E.nothing -- status
E.<&> E.nothing -- ended E.<&> E.val now -- started
E.<&> E.nothing -- received
E.<&> E.nothing -- ended
)
-- find qualification holders -- find qualification holders
-}
error "lms dequeu stub" error "lms dequeu stub"
dispatchJobLmsDequeue :: QualificationId -> JobHandler UniWorX dispatchJobLmsDequeue :: QualificationId -> JobHandler UniWorX
dispatchJobLmsDequeue qid = dispatchJobLmsDequeue _qid =
-- wenn bestanden: qualification verlängern & LmsIdent löschen -- wenn bestanden: qualification verlängern & LmsIdent löschen
-- wenn durchgefallen: LmsIdent löschen -- wenn durchgefallen: LmsIdent löschen
-- wenn Zeit abgelaufen: LmsIdent löschen -- wenn Zeit abgelaufen: LmsIdent löschen