chore(lms): wip handler dispatch enqueue
This commit is contained in:
parent
04c64b2599
commit
e669e495f9
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user