chore(lms): add datatypes for export tables

This commit is contained in:
Steffen Jost 2022-02-07 18:18:40 +01:00
parent 303e7096d3
commit cdc297716a
6 changed files with 55 additions and 5 deletions

View File

@ -36,7 +36,7 @@ AuthLDAPLookupFailed: Nutzer:in konnte aufgrund eines LDAP-Fehlers nicht nachges
AuthLDAPInvalidLookup: Bestehender Nutzer/Bestehende Nutzerin konnte nicht eindeutig einem LDAP-Eintrag zugeordnet werden
AuthLDAPAlreadyConfigured: Nutzer:in meldet sich bereits per Fraport AG Kennung in FRADrive an
AuthLDAPConfigured: Nutzer:in meldet sich nun per Fraport AG Kennung in FRADrive an
AuthLDAP !ident-ok: LMU-Account
AuthLDAP !ident-ok: Fraport AG Kennung
PasswordResetQueued: Link zum Passwort-Zurücksetzen versandt
UserAssimilateUser: Benutzer:in
AssimilateUserNotFound: E-Mail Adresse konnte keinem Benutzer/keiner Benutzerin zugeordnet werden

View File

@ -36,7 +36,7 @@ AuthLDAPLookupFailed: User could not be looked up due to a LDAP error
AuthLDAPInvalidLookup: Existing user could not be uniquely matched with a LDAP entry
AuthLDAPAlreadyConfigured: User already logs in using their Fraport AG account
AuthLDAPConfigured: User now logs in using their Fraport AG account
AuthLDAP: LMU-Account
AuthLDAP: Fraport AG account
PasswordResetQueued: Sent link to reset password
UserAssimilateUser: User
AssimilateUserNotFound: Email could not be resolved to an user

View File

@ -122,3 +122,5 @@ MenuCourseNewsEdit: Kursnachricht bearbeiten
MenuCourseEventNew: Neuer Kurstermin
MenuCourseEventEdit: Kurstermin bearbeiten
MenuLanguage: Sprache
MenuLms: Schnittstelle E-Lernen

View File

@ -123,3 +123,5 @@ MenuCourseNewsEdit: Edit course news
MenuCourseEventNew: New course occurrence
MenuCourseEventEdit: Edit course occurrence
MenuLanguage: Language
MenuLms: Interface E-Learning

View File

@ -133,6 +133,8 @@ breadcrumb HealthR = i18nCrumb MsgMenuHealth Nothing
breadcrumb InstanceR = i18nCrumb MsgMenuInstance Nothing
breadcrumb StatusR = i18nCrumb MsgMenuHealth Nothing -- never displayed
breadcrumb LmsR = i18nCrumb MsgMenuLms Nothing
breadcrumb ProfileR = i18nCrumb MsgBreadcrumbProfile Nothing
breadcrumb SetDisplayEmailR = i18nCrumb MsgUserDisplayEmail $ Just ProfileR
breadcrumb ProfileDataR = i18nCrumb MsgMenuProfileData $ Just ProfileR

View File

@ -7,6 +7,49 @@ import Import
import Handler.Utils
import qualified Data.Csv as Csv
import qualified Data.Conduit.List as C
type LmsUserIdent = Text -- Unique random use-once identifier for each individual e-learning course; i.e. users may have several active LmsUserIdents at once!
data LmsUserTableCsv = LmsUserTableCsv -- Export only
{ csvLmsUserIdent :: LmsUserIdent
, csvLmsUserPin :: Text
, csvLmsUserReset, cvsLmsUserRemove, cvsLmsUserIntern :: Bool
}
data LmsUserlistTableCsv = LmsUserlistTableCsv -- Import only, all users that are currently enlisted at the e-learning plattform
{ csvLmsUserlistIdent :: LmsUserIdent
, csvLmsUserlistFailed :: Bool
}
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 = makeLmsFilename "user"
csvLmsUserlistFilename :: IO Text
csvLmsUserlistFilename = makeLmsFilename "userliste"
csvLmsResultFilename :: IO Text
csvLmsResultFilename = makeLmsFilename "ergebnisse"
--| create filenames as specified by LMS
makeLmsFilename :: Text -> IO Text
makeLmsFilename ftag = do
ymth <- get_ymth
return $ "fradrive_f_" <> ftag <> "_" <> ymth <> ".csv"
--| returns current datetime in YYYYMMDDHH format
get_ymth :: IO Text
get_ymth = do
now <- getCurrentTime
return $ formatTime "%Y%m%d%h"
getLmsR :: Handler Html
getLmsR = do
let dbtIdent = "lmsUsers" :: Text
@ -14,7 +57,7 @@ getLmsR = do
dbtSQLQuery q = error "TODO"
dbtRowKey = error "TODO"
dbtProj = dbtProjSimple $ \(userIdent, userPin, doUserPinReset, doDeleteUser, isUserIntern) -> do
return ("abcdefgh", "12345678", 0, 0, 0)
return ("abcdefgh", "12345678", False, False, True) -- Warum keine Liste?
dbtColonnade = colChoices
dbtSorting = mempty
dbtFilter = mempty
@ -41,8 +84,9 @@ getLmsR = do
-- <*> (over (_2.traverse._Just) (examName . entityVal) . over (_1.traverse) (examName . entityVal) <$> view _userExams)
<*> (over traverse (examName . entityVal) <$> view _userExams)
<*> views _userSheets (set (mapped . _1 . mapped) ())
, dbtCsvName, dbtCsvSheetName
, dbtCsvNoExportData = Nothing
, dbtCsvName
, dbtCsvSheetName
, dbtCsvNoExportData = Nothing -- ?
, dbtCsvHeader = return . Vector.filter csvColumns' . userTableCsvHeader showSex tutorials sheets . fromMaybe def
, dbtCsvExampleData = Nothing
}