{- This file is part of Vervis. - - Written in 2016 by fr33domlover . - - ♡ 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 - . -} module Vervis.Handler.Home ( getHomeR ) where import Vervis.Import hiding (on) import Database.Esqueleto hiding ((==.)) import Vervis.GitOld import qualified Database.Esqueleto as E ((==.)) import Vervis.Model.Ident import Vervis.Model.Repo import Vervis.Path intro :: Handler Html intro = do rows <- do repos <- runDB $ select $ from $ \ (repo `LeftOuterJoin` project `InnerJoin` sharer) -> do on $ repo ^. RepoSharer E.==. sharer ^. SharerId on $ repo ^. RepoProject E.==. project ?. ProjectId orderBy [ asc $ sharer ^. SharerIdent , asc $ project ?. ProjectIdent , asc $ repo ^. RepoIdent ] return ( sharer ^. SharerIdent , project ?. ProjectIdent , repo ^. RepoIdent , repo ^. RepoVcs ) forM repos $ \ (Value sharer, Value mproj, Value repo, Value vcs) -> do ago <- case vcs of VCSDarcs -> return "[Not implemented yet]" VCSGit -> do path <- askRepoDir sharer repo mdt <- liftIO $ lastChange path case mdt of Nothing -> return "never" Just dt -> liftIO $ timeAgo dt return (sharer, mproj, repo, vcs, ago) defaultLayout $ do setTitle "Welcome to Vervis!" $(widgetFile "homepage") personalOverview :: Entity Person -> Handler Html personalOverview (Entity _pid person) = do (ident, projects) <- runDB $ do let sid = personIdent person sharer <- get404 sid projs <- selectList [ProjectSharer ==. sid] [Asc ProjectIdent] let pi (Entity _ proj) = projectIdent proj return (sharerIdent sharer, map pi projs) defaultLayout $ do setTitle "Vervis > Overview" $(widgetFile "personal-overview") getHomeR :: Handler Html getHomeR = do mp <- maybeAuth case mp of Just p -> personalOverview p Nothing -> intro