36 lines
1.4 KiB
Haskell
36 lines
1.4 KiB
Haskell
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de>
|
|
--
|
|
-- 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))
|