summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Form/ShopDelivery.hs17
-rw-r--r--Handler/ShopShopDelivery.hs2
-rw-r--r--Widget/ShopDelivery.hs2
3 files changed, 10 insertions, 11 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)
diff --git a/Handler/ShopShopDelivery.hs b/Handler/ShopShopDelivery.hs
index 7fa855f..d0f1de9 100644
--- a/Handler/ShopShopDelivery.hs
+++ b/Handler/ShopShopDelivery.hs
@@ -5,7 +5,7 @@ import Form.ShopDelivery (shopDeliveryForm, FormShopDelivery (..))
postShopShopDeliveryR :: ShopId -> Handler Html
postShopShopDeliveryR shopid = do
- ((res, _), _) <- runFormPost $ shopDeliveryForm (Just shopid) Nothing
+ ((res, _), _) <- runFormPost $ shopDeliveryForm shopid Nothing
case res of
FormSuccess (FormShopDelivery shopid' deliveryid) -> do
_ <- runDB $ insert $ ShopDelivery shopid' deliveryid
diff --git a/Widget/ShopDelivery.hs b/Widget/ShopDelivery.hs
index a70a780..1c26345 100644
--- a/Widget/ShopDelivery.hs
+++ b/Widget/ShopDelivery.hs
@@ -5,5 +5,5 @@ import Form.ShopDelivery (shopDeliveryForm)
shopDeliveryAddWidget :: ShopId -> Widget
shopDeliveryAddWidget shopid = do
- (shopDeliveryWidget, enctype) <- handlerToWidget $ generateFormPost $ shopDeliveryForm (Just shopid) Nothing
+ (shopDeliveryWidget, enctype) <- handlerToWidget $ generateFormPost $ shopDeliveryForm shopid Nothing
$(widgetFile "shopdelivery-add")