diff options
Diffstat (limited to 'Handler/Employment.hs')
-rw-r--r-- | Handler/Employment.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Handler/Employment.hs b/Handler/Employment.hs new file mode 100644 index 0000000..ce31dd1 --- /dev/null +++ b/Handler/Employment.hs @@ -0,0 +1,42 @@ +{-# LANGUAGE TupleSections, OverloadedStrings #-} +module Handler.Employment where + +import Import +import qualified Data.Text as T +import Yesod.Form.Jquery (jqueryDayField, def) + +getEmploymentR :: EmploymentId -> Handler RepHtml +getEmploymentR eid = do + emp <- runDB $ get404 eid + user <- runDB $ get404 (employmentUser emp) + let username = userIdent user + (formWidget, formEnctype) <- generateFormPost (employmentForm emp) + defaultLayout $ do + aDomId <- newIdent + (setTitle . toHtml) ("Employment span for " `T.append` username) + $(widgetFile "employmentpage") + +postEmploymentR :: EmploymentId -> Handler RepHtml +postEmploymentR eid = do + emp <- runDB $ get404 eid + user <- runDB $ get404 (employmentUser emp) + let username = userIdent user + ((result, formWidget), formEnctype) <- runFormPost (employmentForm emp) + _ <- case result of + FormSuccess res -> (runDB $ replace eid res) >> return () + _ -> return () + + defaultLayout $ do + aDomId <- newIdent + (setTitle . toHtml) ("Employment span for " `T.append` username) + $(widgetFile "employmentpage") + +employmentAForm :: Employment -> AForm Handler Employment +employmentAForm tc = Employment + <$> pure (employmentUser tc) + <*> areq (jqueryDayField def) "Start date" (Just (employmentStartDate tc)) + <*> aopt (jqueryDayField def) "End date" (Just (employmentEndDate tc)) + <*> areq doubleField "Commitment" (Just (employmentCommitment tc)) + +employmentForm :: Employment -> Html -> MForm Handler (FormResult Employment, Widget) +employmentForm tc h = renderDivs (employmentAForm tc) h |