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 = ( ("<h1> Week " ++ show numWeek ++ "</h1> ") ++ )
(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"]