-- SPDX-FileCopyrightText: 2023 Steffen Jost -- -- SPDX-License-Identifier: AGPL-3.0-or-later {-# OPTIONS_GHC -fno-warn-unused-top-binds #-} module Utils.Print.ExpireQualification where import Import import Text.Hamlet -- import Data.Char as Char -- import qualified Data.Text as Text import qualified Data.CaseInsensitive as CI import Data.FileEmbed (embedFile) import Utils.Print.Letters import Handler.Utils.Widgets (nameHtml) -- , nameHtml') data LetterExpireQualificationF = LetterExpireQualificationF { leqfHolderCFN :: CryptoFileNameUser , leqfHolderID :: UserId , leqfHolderDN :: UserDisplayName , leqfHolderSN :: UserSurname , leqfExpiry :: Maybe Day , leqfId :: QualificationId , leqfName :: Text , leqfShort :: Text , leqfSchool :: SchoolId , leqfUrl :: Maybe Text } deriving (Eq, Show) -- TODO: use markdown to generate the Letter instance MDMail LetterExpireQualificationF where attachPDFLetter _ = False getMailSubject l = SomeMessage $ MsgMailSubjectQualificationExpired $ leqfShort l getMailBody LetterExpireQualificationF{..} DateTimeFormatter{ format } = return $ let expiryDate = format SelFormatDate <$> leqfExpiry userDisplayName = leqfHolderDN userSurname = leqfHolderSN qualificationName = leqfName qualificationShorthand = CI.mk leqfShort qualificationSchool = leqfSchool qname = qualificationName ihamletSomeMessage _ _ _ = (mempty :: Html) -- TODO: use markdown for letter editNotifications = () -- TODO: use markdown for letter in $(ihamletFile "templates/mail/qualificationExpired.hamlet") -- const $ const html -- Html -> HtmlUrlI18n (SomeMessage UniWorX) (Route UniWorX) -- foo _ _ html -> html -- [shamlet|#Ansprache #{html}|] um Html umzuwandeln! -- instance MDLetter LetterExpireQualificationF where encryptPDFfor _ = NoPassword getLetterKind _ = Din5008 getLetterEnvelope _ = 'e' getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_f_expiry.md") letterMeta LetterExpireQualificationF{..} DateTimeFormatter{ format } lang Entity{entityKey=rcvrId, entityVal=User{userDisplayName}} = let isSupervised = rcvrId /= leqfHolderID in mkMeta $ guardMonoid isSupervised [ toMeta "supervisor" userDisplayName ] <> [ toMeta "lang" lang , toMeta "licenceholder" leqfHolderDN , mbMeta "expiry" (format SelFormatDate <$> leqfExpiry) , mbMeta "licence-url" leqfUrl , toMeta "de-opening" $ bool ("Guten Tag " <> leqfHolderDN <> ",") "Sehr geehrte Damen und Herren," isSupervised , toMeta "en-opening" $ bool ("Dear " <> leqfHolderDN <> ",") "Dear supervisor," isSupervised ] getPJId LetterExpireQualificationF{..} = PrintJobIdentification { pjiName = "Expiry" , pjiApcAcknowledge = "ex-" <> toPathPiece leqfHolderCFN , pjiRecipient = Nothing -- to be filled later , pjiSender = Nothing , pjiCourse = Nothing , pjiQualification = Just leqfId , pjiLmsUser = Nothing , pjiFileName = "expire_" <> CI.original (unSchoolKey leqfSchool) <> "-" <> leqfShort <> "_" <> leqfHolderSN -- let nameRecipient = abbrvName <$> recipient -- nameSender = abbrvName <$> sender -- nameCourse = CI.original . courseShorthand <$> course -- nameQuali = CI.original . qualificationShorthand <$> quali -- in .. = T.replace " " "-" (T.intercalate "_" . catMaybes $ [Just printJobName, nameQuali, nameCourse, nameSender, nameRecipient]) }