{-# LANGUAGE FlexibleContexts #-} module Villefort.Daily where import Villefort.Time import Villefort.Definitions import Villefort.Database import Villefort.Stats import Villefort.Todo import Villefort.Summary import Villefort.Config import Control.Monad.Reader import Control.Monad.IO.Class import Data.Time import Data.Time.Calendar.WeekDate weeklyStats :: (MonadReader VConfig m, MonadIO m) => m String weeklyStats = do dates<- liftIO getDatesOfWeek header <- getHeader (_,numWeek,_) <- liftIO $ toWeekDate <$> getDate let addWeek = ( ("

Week " ++ show numWeek ++ "

") ++ ) (header ++ ) <$> addWeek <$> mconcat <$> mapM getSummaryDay dates getSummaryDay :: (MonadReader VConfig m, MonadIO m) => Day -> m String getSummaryDay day = do liftIO $ putStrLn $ show day dat <- getDoneDay $ show day return ( (lookup !! week) ++ (makeTable ["Subject","Time"] $ dat ++ [["Total", show$ total dat]])) where (_,_,week) = toWeekDate day lookup =["","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","Monday"]