/** * Edit and Saves category * * @param FormInterface $form Form * @param CarrierInterface $carrier Carrier * @param ShippingRangeInterface $shippingRange Shipping range * @param boolean $isValid Is valid * * @return RedirectResponse Redirect response * * @Route( * path = "/{id}", * name = "admin_shipping_range_edit", * requirements = { * "id" = "\d+", * }, * methods = {"GET"} * ) * @Route( * path = "/{id}/update", * name = "admin_shipping_range_update", * requirements = { * "id" = "\d+", * }, * methods = {"POST"} * ) * * @Route( * path = "/new", * name = "admin_shipping_range_new", * methods = {"GET"} * ) * @Route( * path = "/new/update", * name = "admin_shipping_range_save", * methods = {"POST"} * ) * * @EntityAnnotation( * class = "elcodi.entity.carrier.class", * mapping = { * "id" = "~carrierId~" * }, * name = "carrier" * ) * @EntityAnnotation( * class = { * "factory" = "elcodi_plugin.custom_shipping.factory.shipping_range", * "method" = "create", * "static" = false * }, * mapping = { * "id" = "~id~" * }, * mappingFallback = true, * name = "shippingRange", * persist = true * ) * @FormAnnotation( * class = "elcodi_plugin_custom_shipping_form_type_shipping_range", * name = "form", * entity = "shippingRange", * handleRequest = true, * validate = "isValid" * ) * * @Template */ public function editAction(FormInterface $form, CarrierInterface $carrier, ShippingRangeInterface $shippingRange, $isValid) { if ($isValid) { /** * We must add the default Carrier */ $shippingRange->setCarrier($carrier); $this->flush($shippingRange); $this->addFlash('success', $this->get('translator')->trans('admin.shipping_range.saved')); return $this->redirectToRoute('admin_carrier_edit', ['id' => $carrier->getId()]); } return ['shippingRange' => $shippingRange, 'carrier' => $carrier, 'form' => $form->createView()]; }
/** * Given ShippingRange zones are satisfied by a cart, * * @param CartInterface $cart Cart * @param ShippingRangeInterface $shippingRange Carrier Range * * @return boolean ShippingRange is satisfied by cart */ private function isShippingRangeZonesSatisfiedByCart(CartInterface $cart, ShippingRangeInterface $shippingRange) { $deliveryAddress = $cart->getDeliveryAddress(); $shippingRange->getToZone()->getName(); return $deliveryAddress === null || $this->zoneMatcher->isAddressContainedInZone($deliveryAddress, $shippingRange->getToZone()); }