From c76b2efd1de000b91d62912aecf8e2157fd895ff Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Tue, 8 Feb 2022 12:21:35 +0100 Subject: [PATCH] chore(lms): continued work on stub wip --- models/lms.model | 15 ++++++++------- src/Foundation/Navigation.hs | 2 +- src/Handler/LMS.hs | 19 ++++++++++++------- src/Model/Types.hs | 1 + src/Model/Types/Lms.hs | 13 +++++++++++++ 5 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 src/Model/Types/Lms.hs diff --git a/models/lms.model b/models/lms.model index 46bc21f61..64d4acc67 100644 --- a/models/lms.model +++ b/models/lms.model @@ -1,4 +1,9 @@ +Qualification + name Text + deriving Generic + -- LMS Interface Tables, need regular processing by background jobs + LmsUser user UserId ident LmsIdent @@ -8,18 +13,14 @@ LmsUser delete Bool deriving Generic -Qualification - name Text - deriving Generic - LmsUserlist ident LmsIdent failed Bool - UniqueLmsUserlist lmsident + UniqueLmsUserlist ident deriving Generic LmsResult ident LmsIdent success UTCTime - UniqueLmsResult lmsident - deriving Generic \ No newline at end of file + UniqueLmsResult ident + deriving Generic diff --git a/src/Foundation/Navigation.hs b/src/Foundation/Navigation.hs index 8ce8a998a..1341194de 100644 --- a/src/Foundation/Navigation.hs +++ b/src/Foundation/Navigation.hs @@ -133,7 +133,7 @@ breadcrumb HealthR = i18nCrumb MsgMenuHealth Nothing breadcrumb InstanceR = i18nCrumb MsgMenuInstance Nothing breadcrumb StatusR = i18nCrumb MsgMenuHealth Nothing -- never displayed --- breadcrumb LmsR = i18nCrumb MsgMenuLms Nothing +breadcrumb LmsR = i18nCrumb MsgMenuLms Nothing breadcrumb ProfileR = i18nCrumb MsgBreadcrumbProfile Nothing breadcrumb SetDisplayEmailR = i18nCrumb MsgUserDisplayEmail $ Just ProfileR diff --git a/src/Handler/LMS.hs b/src/Handler/LMS.hs index 5c069b1fc..2b021029b 100644 --- a/src/Handler/LMS.hs +++ b/src/Handler/LMS.hs @@ -9,6 +9,9 @@ import Handler.Utils import qualified Data.Csv as Csv import qualified Data.Conduit.List as C +import qualified Database.Esqueleto.Legacy as E +import qualified Database.Esqueleto.Utils as E +import Database.Esqueleto.Utils.TH type LmsUserIdent = Text -- Unique random use-once identifier for each individual e-learning course; i.e. users may have several active LmsUserIdents at once! @@ -18,8 +21,10 @@ data LmsUserTableCsv = LmsUserTableCsv -- Export only , csvLmsUserReset, cvsLmsUserRemove, cvsLmsUserIntern :: Int } +data LmsCsvExportData = LmsCsvExportData + type LmsUserTableExpr = E.SqlExpr (Entity LmsUser) - `E.LeftOuterJoin` E.SqlExpr (Entity User) + `E.LeftOuterJoin` E.SqlExpr (Maybe (Entity User)) type LmsUserTableData = DBRow ( Entity LmsUser , Maybe (Entity User) @@ -74,12 +79,12 @@ getLmsR = do 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 = mempty --TODO dbtSorting = mempty dbtFilter = mempty dbtFilterUI = mempty dbtParams = def - dbtCsvName = "lms.csv" + dbtCsvName = "lms.csv" -- TODO: wip, for reference, see e.g. Handler.Course.Users or Handler.Exam. dbtCsvEncode = do return $ DBTCsvEncode @@ -92,8 +97,7 @@ getLmsR = do (row ^. resultUser . _entityVal . _lmsUserResetPin . to fromEnum) (row ^. resultUser . _entityVal . _lmsUserDelete . to fromEnum) mitarbeiter - , dbtCsvName - , dbtCsvSheetName + , dbtCsvName , dbtCsvNoExportData = Nothing , dbtCsvHeader = Nothing -- return . Vector.filter csvColumns' . userTableCsvHeader showSex tutorials sheets . fromMaybe def , dbtCsvExampleData = Nothing @@ -109,8 +113,9 @@ getLmsR = do -- , dbtCsvRenderKey = _7 -- , dbtCsvRenderActionClass = _8 -- , dbtCsvRenderException = _9 - -- } - dbTable psValidator DBTable{..} + -- } + psValidator = def + lmsTable = dbTable psValidator DBTable{..} heading = [whamlet|LMS|] siteLayout heading $ do setTitleI heading diff --git a/src/Model/Types.hs b/src/Model/Types.hs index 5c4dacfb6..ca97381a2 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -22,3 +22,4 @@ import Model.Types.Markup as Types import Model.Types.Room as Types import Model.Types.Csv as Types import Model.Types.Upload as Types +import Model.Types.Lms as Types diff --git a/src/Model/Types/Lms.hs b/src/Model/Types/Lms.hs new file mode 100644 index 000000000..6d38a6630 --- /dev/null +++ b/src/Model/Types/Lms.hs @@ -0,0 +1,13 @@ +{-| +Module: Model.Types.Lms +Description: Types for Lms + +-} +module Model.Types.Lms + ( module Model.Types.Lms + ) where + +import Import.NoModel + + +type LmsIdent = Text