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.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