aboutsummaryrefslogtreecommitdiff
path: root/src/Model/Mail.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Model/Mail.hs')
-rw-r--r--src/Model/Mail.hs78
1 files changed, 39 insertions, 39 deletions
diff --git a/src/Model/Mail.hs b/src/Model/Mail.hs
index 8cc8116..dd166ab 100644
--- a/src/Model/Mail.hs
+++ b/src/Model/Mail.hs
@@ -10,72 +10,72 @@ import qualified Data.Text as T
import Data.Maybe (fromMaybe)
import Model.Date
-import Model.Birthdate
+import Model.Event
-data Event =
+data Time =
Today
| NextWeek
deriving (Eq, Show)
-mailSubject :: [Birthdate] -> [Birthdate] -> Text
-mailSubject birthdaysToday birthdaysNextWeek =
+mailSubject :: [Event] -> [Event] -> Text
+mailSubject eventsToday eventsNextWeek =
T.concat
[ "Hey, "
- , if not . null $ birthdaysToday
- then mailSubjectSentence Today birthdaysToday
+ , if not . null $ eventsToday
+ then mailSubjectSentence Today eventsToday
else ""
- , if not . null $ birthdaysNextWeek
+ , if not . null $ eventsNextWeek
then
T.concat
- [ if not . null $ birthdaysToday then " and " else ""
- , mailSubjectSentence NextWeek birthdaysNextWeek
+ [ if not . null $ eventsToday then " and " else ""
+ , mailSubjectSentence NextWeek eventsNextWeek
]
else
""
, "!"
]
-mailSubjectSentence :: Event -> [Birthdate] -> Text
-mailSubjectSentence event birthdates =
- let count = length birthdates
+mailSubjectSentence :: Time -> [Event] -> Text
+mailSubjectSentence time events =
+ let count = length events
in T.concat
- [ case event of
+ [ case time of
Today -> if count > 1 then "there are" else "there is"
NextWeek -> "there will be"
, " "
, T.pack . show $ count
- , " birthday"
+ , " event"
, if count > 1 then "s" else ""
, " "
- , if event == Today then "today" else "next week"
+ , if time == Today then "today" else "next week"
]
-mailBody :: Date -> SuccessiveDates -> [Birthdate] -> [Birthdate] -> Text
-mailBody currentDate nextWeek birthdaysToday birthdaysNextWeek =
+mailBody :: Date -> SuccessiveDates -> [Event] -> [Event] -> Text
+mailBody currentDate nextWeek eventsToday eventsNextWeek =
T.concat
- [ if not . null $ birthdaysToday
- then mailBodySentence Today currentDate nextWeek birthdaysToday
+ [ if not . null $ eventsToday
+ then mailBodySentence Today currentDate nextWeek eventsToday
else ""
- , if not . null $ birthdaysNextWeek
+ , if not . null $ eventsNextWeek
then
T.concat
- [ if not . null $ birthdaysToday then " " else ""
- , mailBodySentence NextWeek currentDate nextWeek birthdaysNextWeek
+ [ if not . null $ eventsToday then " " else ""
+ , mailBodySentence NextWeek currentDate nextWeek eventsNextWeek
]
else ""
]
-mailBodySentence :: Event -> Date -> SuccessiveDates -> [Birthdate] -> Text
-mailBodySentence event currentDate nextWeek birthdates =
- T.concat $ map (mailBodyPart event currentDate nextWeek) (attachLines birthdates)
+mailBodySentence :: Time -> Date -> SuccessiveDates -> [Event] -> Text
+mailBodySentence time currentDate nextWeek events =
+ T.concat $ map (mailBodyPart time currentDate nextWeek) (attachLines events)
-attachLines :: [Birthdate] -> [(Line, Birthdate)]
-attachLines birthdates =
- let count = length birthdates
+attachLines :: [Event] -> [(Line, Event)]
+attachLines events =
+ let count = length events
lineKind 1 = if count == 1 then SingleLine else FirstLine
lineKind line = if line == count then LastLine else MiddleLine
mapFst f (x, y) = (f x, y)
- in map (mapFst lineKind) . zip [1..] $ birthdates
+ in map (mapFst lineKind) . zip [1..] $ events
data Line =
SingleLine
@@ -84,27 +84,27 @@ data Line =
| LastLine
deriving (Eq, Show)
-mailBodyPart :: Event -> Date -> SuccessiveDates -> (Line, Birthdate) -> Text
-mailBodyPart event currDate nextWeek (line, birthdate) =
- let nextWeekDay = dayAndMonthInRange nextWeek (date birthdate)
+mailBodyPart :: Time -> Date -> SuccessiveDates -> (Line, Event) -> Text
+mailBodyPart time currDate nextWeek (line, event) =
+ let nextWeekDay = dayAndMonthInRange nextWeek (date event)
in T.concat
[ case line of
x | x `elem` [SingleLine, FirstLine] ->
- if event == Today then "Today, " else "Next week, "
+ if time == Today then "Today, " else "Next week, "
MiddleLine ->
", "
LastLine ->
" and "
_ ->
""
- , fullname birthdate
- , if event == Today then " is " else " will be "
+ , name event
+ , if time == Today then " is " else " will be "
, T.pack . show $
- if event == Today
- then age currDate birthdate
- else fromMaybe 0 $ (\d -> year d - year (date birthdate)) <$> nextWeekDay
+ if time == Today
+ then age currDate event
+ else fromMaybe 0 $ (\d -> year d - year (date event)) <$> nextWeekDay
, " years old"
- , if event == NextWeek
+ , if time == NextWeek
then
fromMaybe "" $ (\d -> T.concat [" on " , getWeekDay d]) <$> nextWeekDay
else