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