From 5c11664830bb127e1daa67b003bdbad16fa65347 Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Wed, 5 Apr 2023 07:35:35 +0000 Subject: [PATCH] chore(letter): implement course qualification letter (done) --- src/Utils/Print.hs | 3 ++- src/Utils/Print/Letters.hs | 17 ++++++++++++++--- src/Utils/Print/RenewQualification.hs | 12 +++++++----- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Utils/Print.hs b/src/Utils/Print.hs index 7d2d46374..3b9bc611e 100644 --- a/src/Utils/Print.hs +++ b/src/Utils/Print.hs @@ -16,6 +16,7 @@ module Utils.Print , toMeta, mbMeta -- single values , mkMeta, appMeta, applyMetas -- multiple values , LetterRenewQualificationF(..) + , LetterCourseCertificate(), makeCourseCertificates ) where -- import Import.NoModel @@ -218,7 +219,7 @@ printLetter'' _ = do } -} -sendEmailOrLetter :: (MDLetter l) => UserId -> l -> Handler Bool +sendEmailOrLetter :: (MDLetter l, MDMail l) => UserId -> l -> Handler Bool sendEmailOrLetter recipient letter = do (underling, receivers, undercopy) <- updateReceivers recipient -- TODO: check to avoid this almost circular dependency now <- liftIO getCurrentTime diff --git a/src/Utils/Print/Letters.hs b/src/Utils/Print/Letters.hs index 9a92a1ea8..dad257c4d 100644 --- a/src/Utils/Print/Letters.hs +++ b/src/Utils/Print/Letters.hs @@ -36,6 +36,8 @@ import Handler.Utils.DateTime -- import Model.Types.Markup -- TODO-QSV: should this module be moved accordingly? +-- instance P.ToMetaValue (CI Text) where +-- toMetaValue = P.MetaString . CI.original ---------------------- -- Pandoc Functions -- @@ -218,8 +220,6 @@ data EncryptPDFfor = NoPassword | PasswordSupervisor | PasswordUnderling deriving (Eq, Show) class MDLetter l where - getMailSubject :: l -> SomeMessage UniWorX -- only used if letter is sent by email as pdf attachment - getMailBody :: l -> DateTimeFormatter -> HtmlUrlI18n (SomeMessage UniWorX) (Route UniWorX) -- only used if letter is sent by email as pdf attachment letterMeta :: l -> DateTimeFormatter -> Lang -> Entity User -> P.Meta getPJId :: l -> PrintJobIdentification getLetterEnvelope :: l -> Char @@ -238,4 +238,15 @@ addApcIdent = P.Meta . toMeta "apc-ident" getApcIdent :: P.Meta -> Maybe Text getApcIdent (P.lookupMeta "apc-ident" -> Just (P.MetaString t)) = Just t -getApcIdent _ = Nothing \ No newline at end of file +getApcIdent _ = Nothing + + +---------------- +-- Mail Class -- +---------------- + +-- this is for letters that may alternatively be sent as attachments to emails + +class MDMail l where + getMailSubject :: l -> SomeMessage UniWorX -- only used if letter is sent by email as pdf attachment + getMailBody :: l -> DateTimeFormatter -> HtmlUrlI18n (SomeMessage UniWorX) (Route UniWorX) -- only used if letter is sent by email as pdf attachment diff --git a/src/Utils/Print/RenewQualification.hs b/src/Utils/Print/RenewQualification.hs index f8228e036..c8723035a 100644 --- a/src/Utils/Print/RenewQualification.hs +++ b/src/Utils/Print/RenewQualification.hs @@ -45,16 +45,18 @@ letterRenewalQualificationFData LetterRenewQualificationF{lmsLogin} = LetterRene lmsUrl = "https://drive.fraport.de" lmsUrlLogin = lmsUrl <> "/?login=" <> lmsIdent lmsIdent = getLmsIdent lmsLogin - + +instance MDMail LetterRenewQualificationF where + getMailSubject l = SomeMessage $ MsgMailSubjectQualificationRenewal $ qualShort l + getMailBody l@LetterRenewQualificationF{..} DateTimeFormatter{ format } = + let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l + in $(ihamletFile "templates/mail/body/qualificationRenewal.hamlet") + instance MDLetter LetterRenewQualificationF where encrypPDFfor _ = PasswordUnderling getLetterKind _ = PinLetter getLetterEnvelope l = maybe 'q' (Char.toLower . fst) $ Text.uncons (qualShort l) getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_renewal.md") - getMailSubject l = SomeMessage $ MsgMailSubjectQualificationRenewal $ qualShort l - getMailBody l@LetterRenewQualificationF{..} DateTimeFormatter{ format } = - let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l - in $(ihamletFile "templates/mail/body/qualificationRenewal.hamlet") letterMeta l@LetterRenewQualificationF{..} DateTimeFormatter{ format } _lang Entity{entityKey=rcvrId, entityVal=User{userDisplayName}} = let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l