87 lines
3.6 KiB
Haskell
87 lines
3.6 KiB
Haskell
-- SPDX-FileCopyrightText: 2023 Steffen Jost <jost@tcs.ifi.lmu.de>
|
|
--
|
|
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
{-# OPTIONS_GHC -fno-warn-unused-top-binds #-}
|
|
|
|
module Utils.Print.ExpireQualification where
|
|
|
|
import Import
|
|
|
|
-- 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 Utils.Print.RenewQualification (qualificationText)
|
|
|
|
data LetterExpireQualification = LetterExpireQualification
|
|
{ leqHolderCFN :: CryptoFileNameUser
|
|
, leqHolderID :: UserId
|
|
, leqHolderDN :: UserDisplayName
|
|
, leqHolderSN :: UserSurname
|
|
, leqExpiry :: Maybe Day
|
|
, leqId :: QualificationId
|
|
, leqName :: Text
|
|
, leqShort :: Text
|
|
, leqSchool :: SchoolId
|
|
, leqUrl :: Maybe Text
|
|
}
|
|
deriving (Eq, Show)
|
|
|
|
|
|
instance MDLetter LetterExpireQualification where
|
|
encryptPDFfor _ = NoPassword
|
|
getLetterKind _ = Din5008
|
|
getLetterEnvelope _ = 'e'
|
|
getMailSubject l = SomeMessage $ MsgMailSubjectQualificationExpired $ leqShort l
|
|
|
|
{-
|
|
getTemplate LetterExpireQualification{leqShort="F"}
|
|
= decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_f_expiry.md")
|
|
getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_generic_expiry.md")
|
|
-}
|
|
getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_licence_expiry.md")
|
|
|
|
letterMeta LetterExpireQualification{..} DateTimeFormatter{ format } lang Entity{entityKey=rcvrId, entityVal=User{userDisplayName}} =
|
|
let isSupervised = rcvrId /= leqHolderID
|
|
(qArea, qFormal, qLicence) = qualificationText lang leqName leqShort
|
|
in mkMeta $
|
|
guardMonoid isSupervised
|
|
[ toMeta "supervisor" userDisplayName
|
|
] <>
|
|
[ toMeta "lang" lang
|
|
, toMeta "licencename" leqName
|
|
, toMeta "licenceshort" leqShort
|
|
, toMeta "licenceholder" leqHolderDN
|
|
, toMeta "subject-meta" leqHolderDN
|
|
, mbMeta "expiry" (format SelFormatDate <$> leqExpiry)
|
|
, mbMeta "licence-url" leqUrl
|
|
, toMeta "de-opening" $ bool ("Guten Tag " <> leqHolderDN <> ",") "Sehr geehrte Damen und Herren," isSupervised
|
|
, toMeta "en-opening" $ bool ("Dear " <> leqHolderDN <> ",") "Dear supervisor," isSupervised
|
|
, toMeta "de-subject" [st|Entzug "#{leqShort}" (#{qLicence})|]
|
|
, toMeta "en-subject" [st|Revocation "#{leqShort}" (#{qLicence})|]
|
|
, toMeta "qarea" qArea
|
|
, toMeta "qformal" qFormal
|
|
, toMeta "qlicence" qLicence
|
|
]
|
|
|
|
getPJId LetterExpireQualification{..} =
|
|
PrintJobIdentification
|
|
{ pjiName = "Expiry"
|
|
, pjiApcAcknowledge = "ex-" <> toPathPiece leqHolderCFN
|
|
, pjiRecipient = Nothing -- to be filled later
|
|
, pjiSender = Nothing
|
|
, pjiAffected = Just leqHolderID
|
|
, pjiCourse = Nothing
|
|
, pjiQualification = Just leqId
|
|
, pjiLmsUser = Nothing
|
|
, pjiFileName = "expire_" <> CI.original (unSchoolKey leqSchool) <> "-" <> leqShort <> "_" <> leqHolderSN
|
|
-- 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])
|
|
} |