{- 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 $(widgetFile "project/list") 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." redirect HomeR FormMissing -> do setMessage "Field(s) missing" defaultLayout $(widgetFile "project/new") FormFailure _l -> do setMessage "Project creation failed, see below" 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 $(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 $(widgetFile "project/one")