-- SPDX-FileCopyrightText: 2022 Gregor Kleen ,Sarah Vaupel ,Winnie Ros -- -- SPDX-License-Identifier: AGPL-3.0-or-later module Jobs.Handler.Invitation ( dispatchJobInvitation ) where import Import import Handler.Utils.Mail import Handler.Utils.Users import qualified Data.CaseInsensitive as CI import Text.Hamlet dispatchJobInvitation :: Maybe UserId -> UserEmail -> Text -> Text -> Html -> JobHandler UniWorX dispatchJobInvitation jInviter jInvitee jInvitationUrl jInvitationSubject jInvitationExplanation = JobHandlerException $ do (mInviter, mInviterAddress) <- ifMaybeM jInviter (Nothing,Nothing) $ \uid -> runDB $ do usrEnt <- getEntity uid usrAdr <- join <$> traverse getEmailAddress usrEnt return (usrEnt ^? _Just . _entityVal, usrAdr) mailT def $ do _mailTo .= [Address Nothing $ CI.original jInvitee] whenIsJust mInviterAddress $ \jInviterAddress -> replaceMailHeader "Reply-To" . Just $ renderAddress jInviterAddress replaceMailHeader "Auto-Submitted" $ Just "auto-generated" replaceMailHeader "Subject" $ Just jInvitationSubject addHtmlMarkdownAlternatives ($(ihamletFile "templates/mail/invitation.hamlet") :: HtmlUrlI18n (SomeMessage UniWorX) (Route UniWorX))