From cb00cf6493dd57a0f1ee40ae5823718c087dc529 Mon Sep 17 00:00:00 2001 From: Félix Sipma Date: Fri, 30 Jan 2015 17:11:52 +0100 Subject: Form.ShopDelivery: do not show deliveries which are already associated to a given shop --- Form/ShopDelivery.hs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'Form') diff --git a/Form/ShopDelivery.hs b/Form/ShopDelivery.hs index 505b9f5..bd82dea 100644 --- a/Form/ShopDelivery.hs +++ b/Form/ShopDelivery.hs @@ -9,18 +9,12 @@ data FormShopDelivery = FormShopDelivery , fpDelivery :: DeliveryId } -shopDeliveryForm :: Maybe ShopId -> Maybe DeliveryId -> Html -> MForm Handler (FormResult FormShopDelivery, Widget) -shopDeliveryForm mshopid mdeliveryid = renderBootstrap3 formLayout $ FormShopDelivery - <$> maybe shopField pure mshopid +shopDeliveryForm :: ShopId -> Maybe DeliveryId -> Html -> MForm Handler (FormResult FormShopDelivery, Widget) +shopDeliveryForm shopid mdeliveryid = renderBootstrap3 formLayout $ FormShopDelivery + <$> pure shopid <*> maybe deliveryField pure mdeliveryid where - shopField = areq (selectField shops) (bfs MsgShop) Nothing deliveryField = areq (selectField deliveries) (bfs MsgDelivery) Nothing - shops = do - entities <- runDB $ selectList [ ] [ Asc ShopIdent ] - optionsPairs $ map (\shop -> ( shopIdent $ entityVal shop - , entityKey shop)) - entities deliveries = do now <- lift getCurrentTime options <- runDB $ @@ -28,6 +22,11 @@ shopDeliveryForm mshopid mdeliveryid = renderBootstrap3 formLayout $ FormShopDel E.from $ \(p, d) -> do E.where_ ( d E.^. DeliveryPlace E.==. p E.^. PlaceId E.&&. d E.^. DeliveryFrom E.>. E.val now + E.&&. (E.notExists $ E.from $ \sd -> + E.where_ ( sd E.^. ShopDeliveryDelivery E.==. d E.^. DeliveryId + E.&&. sd E.^. ShopDeliveryShop E.==. E.val shopid + ) + ) ) E.orderBy [ E.asc (p E.^. PlaceIdent) , E.asc (d E.^. DeliveryFrom) -- cgit v1.2.3