module Handler.UpdateItem where import Import import Handler.Common getUpdateItemR, postUpdateItemR :: ItemId -> Handler TypedContent getUpdateItemR = postUpdateItemR postUpdateItemR fsUpdateItem = do Just entity <- fmap (Entity fsUpdateItem) <$> runDB (get fsUpdateItem) ((updateResult, fsUpdateForm), fsUpdateEncoding) <- runFormPost . itemForm . Just $ entityVal entity mapM_ (addMessage "formError" . toHtml) =<< case updateResult of FormSuccess Item{..} -> [] <$ runDB (update fsUpdateItem [ ItemKind =. itemKind , ItemNormKind =. normalizeKind itemKind , ItemBought =. itemBought , ItemExpires =. itemExpires , ItemOpened =. itemOpened ]) FormFailure errors -> return errors _ -> return [] selectRep $ do provideRep $ case updateResult of FormSuccess _ -> redirect $ InventoryListingR :#: fsUpdateItem :: Handler Html _ -> do (sortOn entityVal -> stock) <- runDB $ selectList [] [] defaultLayout $ inventoryListing InventoryState { formState = Just UpdateForm{..} , .. } provideJson ()