77 lines
3.2 KiB
Haskell
77 lines
3.2 KiB
Haskell
module Handler.Admin.Avs
|
|
( getAdminAvsR
|
|
, postAdminAvsR
|
|
) where
|
|
|
|
import Import
|
|
import qualified Control.Monad.State.Class as State
|
|
-- import Data.Aeson (encode)
|
|
|
|
import Handler.Utils
|
|
import Handler.Utils.Servant.Avs
|
|
|
|
|
|
|
|
makeAvsPersonForm :: Maybe AvsPersonQuery -> Form AvsPersonQuery
|
|
makeAvsPersonForm tmpl = identifyForm FIDAvsPersonQuery . validateForm validateAvsPersonQuery $ \html ->
|
|
flip (renderAForm FormStandard) html $ AvsPersonQuery
|
|
<$> aopt textField (fslI MsgAvsCardNo) (avsPersonQueryCardNo <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsFirstName) (avsPersonQueryFirstName <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsLastName) (avsPersonQueryLastName <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsInternalPersonalNo) (avsPersonQueryInternalPersonalNo <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsVersionNo) (avsPersonQueryVersionNo <$> tmpl)
|
|
|
|
validateAvsPersonQuery :: FormValidator AvsPersonQuery Handler ()
|
|
validateAvsPersonQuery = do
|
|
AvsPersonQuery{..} <- State.get
|
|
guardValidation MsgAvsQueryEmpty $
|
|
is _Just avsPersonQueryCardNo ||
|
|
is _Just avsPersonQueryFirstName ||
|
|
is _Just avsPersonQueryLastName ||
|
|
is _Just avsPersonQueryInternalPersonalNo ||
|
|
is _Just avsPersonQueryVersionNo
|
|
|
|
{-
|
|
|
|
makeAvsForm :: Maybe AvsStatusQuery -> Form AvsStatusQuery
|
|
makeAvsForm tmpl = identifyForm FIDAvsStatusQuery . validateForm validateAvsStatusQuery $ \html ->
|
|
flip (renderAForm FormStandard) html $ AvsStatusQuery
|
|
<$> aopt textField (fslI MsgAvsCardNo) (avsPersonQueryCardNo <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsFirstName) (avsPersonQueryFirstName <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsLastName) (avsPersonQueryLastName <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsInternalPersonalNo) (avsPersonQueryInternalPersonalNo <$> tmpl)
|
|
<*> aopt textField (fslI MsgAvsVersionNo) (avsPersonQueryVersionNo <$> tmpl)
|
|
|
|
validateAvsPersonQuery :: FormValidator AvsPersonQuery Handler ()
|
|
validateAvsPersonQuery = do
|
|
AvsPersonQuery{..} <- State.get
|
|
guardValidation MsgAvsQueryEmpty $
|
|
is _Just avsPersonQueryCardNo ||
|
|
is _Just avsPersonQueryFirstName ||
|
|
is _Just avsPersonQueryLastName ||
|
|
is _Just avsPersonQueryInternalPersonalNo ||
|
|
is _Just avsPersonQueryVersionNo
|
|
-}
|
|
|
|
|
|
getAdminAvsR, postAdminAvsR :: Handler Html
|
|
getAdminAvsR = postAdminAvsR
|
|
postAdminAvsR = do
|
|
((result,widget), enctype) <- runFormPost $ makeAvsPersonForm Nothing
|
|
let procForm fr = do
|
|
res <- runAvsPersonSearch fr
|
|
case res of
|
|
Left err -> return $ Just err
|
|
Right jsn -> return $ Just $ tshow jsn
|
|
mbAnswer <- formResultMaybe result procForm
|
|
|
|
actionUrl <- fromMaybe AdminAvsR <$> getCurrentRoute
|
|
siteLayoutMsg MsgMenuAvs $ do
|
|
setTitleI MsgMenuAvs
|
|
let formWidget = wrapForm widget def
|
|
{ formAction = Just $ SomeRoute actionUrl
|
|
, formEncoding = enctype
|
|
}
|
|
-- TODO: use i18nWidgetFile instead if this is to become permanent
|
|
$(widgetFile "avs")
|