{-# 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 getMail :: User -> Text -> [Text] -> M.Mail getMail user url to = M.Mail { M.to = to , M.subject = "Sign in to Shared Cost" , M.plainBody = plainBody user url , M.htmlBody = htmlBody user url } plainBody :: User -> Text -> LT.Text plainBody user url = LT.intercalate "\n" [ LT.concat ["Hi ", strictToLazy . userName $ user, ","] , "" , "Click to the following link in order to sign in to Shared Cost:" , strictToLazy url ] htmlBody :: User -> Text -> LT.Text htmlBody user url = renderHtml . docTypeHtml . body $ do toHtml $ LT.concat ["Hi ", strictToLazy . userName $ user, ","] br br "Click to the following link in order to sign in to Shared Cost:" br toHtml url strictToLazy :: Text -> LT.Text strictToLazy = toLazyText . fromText