From 1036926470792bf3409ba3a224886d48b7e1d314 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 22 Mar 2021 12:00:07 +0100 Subject: [PATCH] feat(course-participants): csv export first name/surname separately --- messages/uniworx/misc/de-de-formal.msg | 2 ++ messages/uniworx/misc/en-eu.msg | 2 ++ src/Handler/Course/Users.hs | 18 +++++++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/messages/uniworx/misc/de-de-formal.msg b/messages/uniworx/misc/de-de-formal.msg index b8a3e8ebd..8e116ef8f 100644 --- a/messages/uniworx/misc/de-de-formal.msg +++ b/messages/uniworx/misc/de-de-formal.msg @@ -2188,6 +2188,8 @@ CsvColumnExamUserParts: Erreichte Punktezahlen in den Teilprüfungen, sofern vor CsvColumnExamUserResult: Erreichte Prüfungsleistung; "passed", "failed", "no-show", "voided", oder eine Note ("1.0", "1.3", "1.7", ..., "4.0", "5.0") CsvColumnExamUserCourseNote: Notizen zum Teilnehmer +CsvColumnUserSurname: Nachname(n) des Teilnehmers +CsvColumnUserFirstName: Vorname(n) des Teilnehmers CsvColumnUserName: Voller Name des Teilnehmers CsvColumnUserMatriculation: Matrikelnummer des Teilnehmers CsvColumnUserSex: Geschlecht diff --git a/messages/uniworx/misc/en-eu.msg b/messages/uniworx/misc/en-eu.msg index dde4e0b5e..b809ca1c1 100644 --- a/messages/uniworx/misc/en-eu.msg +++ b/messages/uniworx/misc/en-eu.msg @@ -2187,6 +2187,8 @@ CsvColumnExamUserParts: Number of points the participant achieved per exam part. CsvColumnExamUserResult: Exam achievement; "passed", "failed", "no-show", "voided", or any number grade ("1.0", "1.3", "1.7", ..., "4.0", "5.0") CsvColumnExamUserCourseNote: Course notes for the participant +CsvColumnUserSurname: Participant's surname +CsvColumnUserFirstName: Participant's given name CsvColumnUserName: Participant's full name CsvColumnUserMatriculation: Participant's matriculation CsvColumnUserSex: Participant's sex diff --git a/src/Handler/Course/Users.hs b/src/Handler/Course/Users.hs index 22ad69811..d81ad892a 100644 --- a/src/Handler/Course/Users.hs +++ b/src/Handler/Course/Users.hs @@ -167,7 +167,9 @@ colUserSheets shns = cap (Sortable Nothing caption) $ foldMap userSheetCol shns data UserTableCsv = UserTableCsv - { csvUserName :: UserDisplayName + { csvUserSurname :: UserSurname + , csvUserFirstName :: UserFirstName + , csvUserName :: UserDisplayName , csvUserSex :: Maybe Sex , csvUserMatriculation :: Maybe UserMatriculation , csvUserEmail :: UserEmail @@ -183,7 +185,9 @@ makeLenses_ ''UserTableCsv instance Csv.ToNamedRecord UserTableCsv where toNamedRecord UserTableCsv{..} = Csv.namedRecord $ - [ "name" Csv..= csvUserName + [ "surname" Csv..= csvUserSurname + , "first-name" Csv..= csvUserFirstName + , "name" Csv..= csvUserName , "sex" Csv..= csvUserSex , "matriculation" Csv..= csvUserMatriculation , "email" Csv..= csvUserEmail @@ -208,7 +212,9 @@ instance Csv.ToNamedRecord UserTableCsv where ] instance CsvColumnsExplained UserTableCsv where csvColumnsExplanations _ = mconcat - [ single "name" MsgCsvColumnUserName + [ single "surname" MsgCsvColumnUserSurname + , single "first-name" MsgCsvColumnUserFirstName + , single "name" MsgCsvColumnUserName , single "sex" MsgCsvColumnUserSex , single "matriculation" MsgCsvColumnUserMatriculation , single "email" MsgCsvColumnUserEmail @@ -231,7 +237,7 @@ instance Default UserCsvExportData where userTableCsvHeader :: Bool -> [Entity Tutorial] -> [Entity Sheet] -> UserCsvExportData -> Csv.Header userTableCsvHeader showSex tuts sheets UserCsvExportData{..} = Csv.header $ - [ "name" ] ++ + [ "surname", "first-name", "name" ] ++ [ "sex" | showSex ] ++ [ "matriculation", "email", "study-features"] ++ [ "tutorial" | hasEmptyRegGroup ] ++ @@ -460,7 +466,9 @@ makeCourseUserTable cid acts restrict colChoices psValidator csvColumns = do <$> apopt checkBoxField (fslI MsgCourseUserCsvIncludeSheets & setTooltip MsgCourseUserCsvIncludeSheetsTip) (Just $ csvUserIncludeSheets def) , dbtCsvDoEncode = \UserCsvExportData{} -> C.mapM $ \(_, row) -> flip runReaderT row $ UserTableCsv - <$> view (hasUser . _userDisplayName) + <$> view (hasUser . _userSurname) + <*> view (hasUser . _userFirstName) + <*> view (hasUser . _userDisplayName) <*> view (hasUser . _userSex) <*> view (hasUser . _userMatrikelnummer) <*> view (hasUser . _userEmail)