summaryrefslogtreecommitdiff
path: root/Handler/Employment.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Handler/Employment.hs')
-rw-r--r--Handler/Employment.hs42
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