module View.Interval ( renderDurationAndInterval , renderYearInterval , renderDuration ) where import Data.Maybe (fromMaybe) import Model.Date import Model.Translation.Language import qualified Model.Translation.Key as K import Model.Translation.Message renderDurationAndInterval :: Language -> Date -> Date -> Maybe Date -> String renderDurationAndInterval language currentDate beginDate mbEndDate = let duration = renderDuration language beginDate (fromMaybe currentDate mbEndDate) interval = renderYearInterval language beginDate mbEndDate in duration ++ ", " ++ interval renderDuration :: Language -> Date -> Date -> String renderDuration language d1 d2 = let (years, months) = yearAndMonthDiff d1 d2 renderYears = (show years) ++ " " ++ (getMessage (K.YearText years) language) renderMonths = (show months) ++ " " ++ (getMessage (K.MonthText months) language) spaceAnd = " " ++ (getMessage K.And language) ++ " " in if years > 0 then renderYears ++ (if months > 0 then spaceAnd ++ renderMonths else "") else renderMonths renderYearInterval :: Language -> Date -> (Maybe Date) -> String renderYearInterval language beginDate Nothing = (getMessage K.Since language) ++ " " ++ (show . year $ beginDate) renderYearInterval language beginDate (Just endDate) = let beginYear = year beginDate endYear = year endDate in if beginYear == endYear then show beginYear else (show beginYear) ++ " " ++ (getMessage K.To language) ++ " " ++ (show endYear)