{-# LANGUAGE OverloadedStrings #-} module View.Mail.SignIn ( getMail ) where import Data.Text (Text) import qualified Data.Text.Lazy as LT import Data.Text.Lazy.Builder (toLazyText, fromText) import Text.Blaze.Html import Text.Blaze.Html5 import Text.Blaze.Html.Renderer.Text (renderHtml) import Model.Database (User(..)) import qualified Model.Mail as M import Model.Message.Key import Model.Message getMail :: User -> Text -> [Text] -> M.Mail getMail user url to = M.Mail { M.from = (getMessage NoReplyMail) , M.to = to , M.subject = (getMessage SignInMailTitle) , M.plainBody = plainBody user url , M.htmlBody = htmlBody user url } plainBody :: User -> Text -> LT.Text plainBody user url = LT.intercalate "\n" [ strictToLazy (getParamMessage [userName user] HiMail) , "" , strictToLazy (getMessage SignInLinkMail) , strictToLazy url ] htmlBody :: User -> Text -> LT.Text htmlBody user url = renderHtml . docTypeHtml . body $ do toHtml $ strictToLazy (getParamMessage [userName user] HiMail) br br toHtml $ strictToLazy (getMessage SignInLinkMail) br toHtml url strictToLazy :: Text -> LT.Text strictToLazy = toLazyText . fromText