summaryrefslogtreecommitdiff
path: root/Form
diff options
context:
space:
mode:
Diffstat (limited to 'Form')
-rw-r--r--Form/ShopDelivery.hs17
1 files changed, 8 insertions, 9 deletions
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)