module Util.Time
  ( belongToCurrentMonth
  , belongToCurrentWeek
  ) where

import           Data.Time.Calendar          (toGregorian)
import           Data.Time.Calendar.WeekDate (toWeekDate)
import           Data.Time.Clock             (UTCTime, getCurrentTime)

import qualified Common.Util.Time            as Time

belongToCurrentMonth :: UTCTime -> IO Bool
belongToCurrentMonth time = do
  (timeYear, timeMonth, _) <- toGregorian <$> Time.timeToDay time
  (actualYear, actualMonth, _) <- toGregorian <$> (getCurrentTime >>= Time.timeToDay)
  return (actualYear == timeYear && actualMonth == timeMonth)

belongToCurrentWeek :: UTCTime -> IO Bool
belongToCurrentWeek time = do
  (timeYear, timeWeek, _) <- toWeekDate <$> Time.timeToDay time
  (actualYear, actualWeek, _) <- toWeekDate <$> (getCurrentTime >>= Time.timeToDay)
  return (actualYear == timeYear && actualWeek == timeWeek)