{-# LANGUAGE OverloadedStrings #-} module Model.Event ( Event(..) , renderEvent , age , filterBirthdayAt , filterBirthdayInside ) where import Data.Text (Text) import qualified Data.Text as T import Data.Maybe (isJust) import Model.Date data Event = Event { date :: Date , name :: Text } deriving (Eq, Show) renderEvent :: Event -> Text renderEvent event = T.concat [ name event , " (" , renderDate (date event) , ")" ] age :: Date -> Event -> Int age currentDate event = yearsGap currentDate (date event) filterBirthdayAt :: Date -> [Event] -> [Event] filterBirthdayAt d = filter (sameDayAndMonth d . date) filterBirthdayInside :: [Date] -> [Event] -> [Event] filterBirthdayInside dates = filter (isJust . dayAndMonthInRange dates . date)