{- This file is part of Vervis.
 -
 - Written in 2016 by fr33domlover <fr33domlover@riseup.net>.
 -
 - ♡ Copying is an act of love. Please copy, reuse and share.
 -
 - The author(s) have dedicated all copyright and related and neighboring
 - rights to this software to the public domain worldwide. This software is
 - distributed without any warranty.
 -
 - You should have received a copy of the CC0 Public Domain Dedication along
 - with this software. If not, see
 - <http://creativecommons.org/publicdomain/zero/1.0/>.
 -}

module Handler.Home
    ( getHomeR
    )
where

import Import hiding ((==.))

import Database.Esqueleto
import Git

getHomeR :: Handler Html
getHomeR = do
    rows <- do
        repos <- runDB $ select $ from $ \ (sharer, project, repo) -> do
            where_ $
                project ^. ProjectSharer ==. sharer ^. SharerId &&.
                repo ^. RepoProject ==. project ^. ProjectId
            orderBy
                [ asc $ sharer ^. SharerIdent
                , asc $ project ^. ProjectIdent
                , asc $ repo ^. RepoIdent
                ]
            return
                ( sharer ^. SharerIdent
                , project ^. ProjectIdent
                , repo ^. RepoIdent
                )
        liftIO $ forM repos $ \ (Value sharer, Value project, Value repo) -> do
            let path =
                    unpack $
                    intercalate "/"
                        [ "state2"
                        , sharer
                        , project
                        , repo
                        ]
            dt <- lastChange path
            ago <- timeAgo dt
            return (sharer, project, repo, ago)
    mp <- maybeAuth
    defaultLayout $ do
        setTitle "Welcome to Vervis!"
        $(widgetFile "homepage")