chore(lms): work on lms handler stub
This commit is contained in:
parent
3eeac06c47
commit
417a48e7cb
@ -1,9 +1,16 @@
|
|||||||
-- LMS Interface Tables, need regular processing by background jobs
|
-- LMS Interface Tables, need regular processing by background jobs
|
||||||
--LmsUsers
|
LmsUser
|
||||||
-- user UserId
|
user UserId
|
||||||
-- ident LmsIdent
|
ident LmsIdent
|
||||||
-- -- pin LmsPin -- pin must not be stored, is only sent once and can be recreated?
|
qualification QualificationId
|
||||||
-- deriving Generic
|
pin Text
|
||||||
|
resetPin Bool
|
||||||
|
delete Bool
|
||||||
|
deriving Generic
|
||||||
|
|
||||||
|
Qualification
|
||||||
|
name Text
|
||||||
|
deriving Generic
|
||||||
|
|
||||||
LmsUserlist
|
LmsUserlist
|
||||||
ident LmsIdent
|
ident LmsIdent
|
||||||
|
|||||||
@ -15,19 +15,28 @@ type LmsUserIdent = Text -- Unique random use-once identifier for each individua
|
|||||||
data LmsUserTableCsv = LmsUserTableCsv -- Export only
|
data LmsUserTableCsv = LmsUserTableCsv -- Export only
|
||||||
{ csvLmsUserIdent :: LmsUserIdent
|
{ csvLmsUserIdent :: LmsUserIdent
|
||||||
, csvLmsUserPin :: Text
|
, csvLmsUserPin :: Text
|
||||||
, csvLmsUserReset, cvsLmsUserRemove, cvsLmsUserIntern :: Bool
|
, csvLmsUserReset, cvsLmsUserRemove, cvsLmsUserIntern :: Int
|
||||||
}
|
}
|
||||||
|
|
||||||
data LmsUserlistTableCsv = LmsUserlistTableCsv -- Import only, all users that are currently enlisted at the e-learning plattform
|
type LmsUserTableExpr = E.SqlExpr (Entity LmsUser)
|
||||||
{ csvLmsUserlistIdent :: LmsUserIdent
|
`E.LeftOuterJoin` E.SqlExpr (Entity User)
|
||||||
, csvLmsUserlistFailed :: Bool
|
|
||||||
}
|
type LmsUserTableData = DBRow ( Entity LmsUser
|
||||||
|
, Maybe (Entity User)
|
||||||
|
)
|
||||||
|
|
||||||
|
queryLmsUser :: Getter LmsUserTableExpr (E.SqlExpr (Entity LmsUser))
|
||||||
|
queryLmsUser = to $(E.sqlLOJproj 2 1)
|
||||||
|
|
||||||
|
queryUser :: Getter LmsUserTableExpr (E.SqlExpr (Maybe (Entity User)))
|
||||||
|
queryUser = to $(E.sqlLOJproj 2 2)
|
||||||
|
|
||||||
|
resultLmsUser :: Lens' LmsUserTableData (Entity LmsUser)
|
||||||
|
resultLmsUser = _dbrOutput . _1
|
||||||
|
|
||||||
|
resultUser :: Lens' LmsUserTableData (Maybe (Entity User))
|
||||||
|
resultUser = _dbrOutput . _2
|
||||||
|
|
||||||
data LmsResultTableCsv = LmsResultTableCsv -- Import only, all users that succeeded are returned ONCE only; must then be deleted via LmsUserTableCsv Export!
|
|
||||||
{ csvLmsResultIdent :: LmsUserIdent
|
|
||||||
, csvLmsResultSuccess :: UTCTime -- datestamp user succeeded (might be local time, unclear)
|
|
||||||
}
|
|
||||||
|
|
||||||
csvLmsUserFilename :: IO Text
|
csvLmsUserFilename :: IO Text
|
||||||
csvLmsUserFilename = makeLmsFilename "user"
|
csvLmsUserFilename = makeLmsFilename "user"
|
||||||
|
|
||||||
@ -54,10 +63,17 @@ getLmsR :: Handler Html
|
|||||||
getLmsR = do
|
getLmsR = do
|
||||||
let dbtIdent = "lmsUsers" :: Text
|
let dbtIdent = "lmsUsers" :: Text
|
||||||
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
|
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
|
||||||
dbtSQLQuery q = error "TODO"
|
dbtSQLQuery = runReaderT $ do
|
||||||
dbtRowKey = error "TODO"
|
lmsUser <- view queryLmsUser
|
||||||
dbtProj = dbtProjSimple $ \(userIdent, userPin, doUserPinReset, doDeleteUser, isUserIntern) -> do
|
user <- view queryUser
|
||||||
return ("abcdefgh", "12345678", False, False, True) -- Warum keine Liste?
|
lift $ do
|
||||||
|
E.on $ E.just (lmsUser E.^. LmsUserUser) E.==. user E.?. UserId
|
||||||
|
-- TODO where?
|
||||||
|
return (lmsUser, user)
|
||||||
|
dbtRowKey = queryLmsUser >>> (E.^. LmsUserId)
|
||||||
|
dbtProj = dbtProjSimple $ \(lmsUser, user) -> do
|
||||||
|
-- return ("abcdefgh", "12345678", False, False, True)
|
||||||
|
return (lmsUser E.^. LmsUserIdent, lmsUser E.^. LmsUserPin, lmsUser E.^. LmsUserResetPin, lmsUser E.^. LmsUserResetPin, isJust (user E.?. UserCompanyPersonalNumber))
|
||||||
dbtColonnade = colChoices
|
dbtColonnade = colChoices
|
||||||
dbtSorting = mempty
|
dbtSorting = mempty
|
||||||
dbtFilter = mempty
|
dbtFilter = mempty
|
||||||
@ -68,31 +84,32 @@ getLmsR = do
|
|||||||
dbtCsvEncode = do
|
dbtCsvEncode = do
|
||||||
return $ DBTCsvEncode
|
return $ DBTCsvEncode
|
||||||
{ dbtCsvExportForm = def
|
{ dbtCsvExportForm = def
|
||||||
, dbtCsvDoEncode = \UserCsvExportData{} -> C.mapM $ \(_, row) -> flip runReaderT row $
|
, dbtCsvDoEncode = \LmsCsvExportData{} -> C.mapM $ \(_lmsUserTableId, row) -> do
|
||||||
LmsTableCsv -- <- for each desired column one view
|
mitarbeiter <- return 1
|
||||||
<$> _t1
|
return $ LmsUserTableCsv
|
||||||
<*> _t2
|
(row ^. resultUser . _entityVal . _lmsUserIdent)
|
||||||
<*> _t3
|
(row ^. resultUser . _entityVal . _lmsUserPin)
|
||||||
<*> _t4
|
(row ^. resultUser . _entityVal . _lmsUserResetPin . to fromEnum)
|
||||||
<*> _t5
|
(row ^. resultUser . _entityVal . _lmsUserDelete . to fromEnum)
|
||||||
|
mitarbeiter
|
||||||
, dbtCsvName
|
, dbtCsvName
|
||||||
, dbtCsvSheetName
|
, dbtCsvSheetName
|
||||||
, dbtCsvNoExportData = Nothing -- ?
|
, dbtCsvNoExportData = Nothing
|
||||||
, dbtCsvHeader = return . Vector.filter csvColumns' . userTableCsvHeader showSex tutorials sheets . fromMaybe def
|
, dbtCsvHeader = Nothing -- return . Vector.filter csvColumns' . userTableCsvHeader showSex tutorials sheets . fromMaybe def
|
||||||
, dbtCsvExampleData = Nothing
|
, dbtCsvExampleData = Nothing
|
||||||
}
|
}
|
||||||
-- TODO wip, for reference see e.g. Handler.Exam.Users
|
-- TODO wip, for reference see e.g. Handler.Exam.Users
|
||||||
dbtCsvDecode = Just DBTCsvDecode
|
dbtCsvDecode = Nothing -- Just DBTCsvDecode
|
||||||
{ dbtCsvRowKey = _1
|
-- { dbtCsvRowKey = _1
|
||||||
, dbtCsvComputeActions = _2
|
-- , dbtCsvComputeActions = _2
|
||||||
, dbtCsvClassifyAction = _3
|
-- , dbtCsvClassifyAction = _3
|
||||||
, dbtCsvCoarsenActionClass = _4
|
-- , dbtCsvCoarsenActionClass = _4
|
||||||
, dbtCsvValidateActions = _5
|
-- , dbtCsvValidateActions = _5
|
||||||
, dbtCsvExecuteActions = _6 -- <- actions based on sent data here
|
-- , dbtCsvExecuteActions = _6 -- <- actions based on sent data here
|
||||||
, dbtCsvRenderKey = _7
|
-- , dbtCsvRenderKey = _7
|
||||||
, dbtCsvRenderActionClass = _8
|
-- , dbtCsvRenderActionClass = _8
|
||||||
, dbtCsvRenderException = _9
|
-- , dbtCsvRenderException = _9
|
||||||
}
|
-- }
|
||||||
dbTable psValidator DBTable{..}
|
dbTable psValidator DBTable{..}
|
||||||
heading = [whamlet|LMS|]
|
heading = [whamlet|LMS|]
|
||||||
siteLayout heading $ do
|
siteLayout heading $ do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user