{- 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.Project ( getProjectsR , postProjectsR , getProjectNewR , getProjectR ) where import Vervis.Import hiding ((==.)) --import Prelude import Text.Blaze.Html (toHtml) import Database.Esqueleto --import Model --import Yesod.Core (Handler) import Vervis.Form.Project getProjectsR :: Text -> Handler Html getProjectsR ident = do projects <- runDB $ select $ from $ \ (sharer, project) -> do where_ $ sharer ^. SharerIdent ==. val ident &&. sharer ^. SharerId ==. project ^. ProjectSharer orderBy [asc $ project ^. ProjectIdent] return $ project ^. ProjectIdent defaultLayout $ do setTitle $ toHtml $ "Vervis > People > " <> ident <> " > Projects" $(widgetFile "projects") postProjectsR :: Text -> Handler Html postProjectsR ident = do Entity _pid person <- requireAuth let sid = personIdent person ((result, widget), enctype) <- runFormPost $ newProjectForm sid case result of FormSuccess project -> do runDB $ insert_ project setMessage "Project added." redirectUltDest HomeR FormMissing -> do setMessage "Field(s) missing" defaultLayout $(widgetFile "project-new") FormFailure l -> do setMessage $ toHtml $ intercalate "; " l defaultLayout $(widgetFile "project-new") getProjectNewR :: Text -> Handler Html getProjectNewR ident = do Entity _pid person <- requireAuth let sid = personIdent person ((_result, widget), enctype) <- runFormPost $ newProjectForm sid defaultLayout $ do setTitle $ toHtml $ "Vervis > People > " <> ident <> " > New Project" $(widgetFile "project-new") getProjectR :: Text -> Text -> Handler Html getProjectR user proj = do project <- runDB $ do Entity sid _s <- getBy404 $ UniqueSharerIdent user Entity _pid p <- getBy404 $ UniqueProject proj sid return p defaultLayout $ do setTitle $ toHtml $ mconcat [ "Vervis > People > " , user , " > Project > " , proj ] $(widgetFile "project")