{-# LANGUAGE TupleSections, OverloadedStrings #-} module Handler.Employment where import Import import qualified Data.Text as T import Yesod.Form.Jquery (jqueryDayField, def) getEmploymentR :: EmploymentId -> Handler Html 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 Html 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)) <*> aopt doubleField "Custom anniversary max (0 = infinite)" (Just (employmentPtoMaxRollover tc)) employmentForm :: Employment -> Html -> MForm Handler (FormResult Employment, Widget) employmentForm tc h = renderDivs (employmentAForm tc) h