private function updateShipment(ShipmentForm $form) { $values = $form->getValues(); if ($this->shipment instanceof ShipmentPersonalPoint || $this->shipment instanceof ShipmentCollectionPoint) { $this->shipment->setAddress($values->address->name !== '' ? $values->address->name : null, $values->address->street, $values->address->city, $values->address->zip); if ($values->address->longitude !== '') { $this->shipment->setGps($values->address->longitude, $values->address->latitude); } else { $this->shipment->removeGps(); } } if ($this->shipment instanceof ShipmentTransportCompany || $this->shipment instanceof ShipmentCollectionPoint) { $this->shipment->setPrice($values->price); if ($values->enableFreeFromCertainOrderPrice) { $this->shipment->setMinimumOrderPriceToBeFree($values->minimumOrderPriceToBeFree); } else { $this->shipment->eraseToBeFreeFromCertainOrderPrice(); } } if ($this->shipment instanceof ShipmentTransportCompany) { $this->shipment->setName($values->companyName); } try { if (!$form->hasErrors()) { $this->shipmentService->update($this->shipment); $this->flashMessage('Shipment has been updated.'); $this->redirect(':Admin:Shipment:List:'); } } catch (EntityDuplicateException $e) { $form->addError(sprintf('Shipment company with name %s already exists.', $this->shipment->getName())); } }
/** * @param ShipmentPersonalPoint|ShipmentCollectionPoint|null $shipment */ private function addAddressControls(ShipmentOption $shipment = null, ChoiceControl $typeControl = null) { $addressContainer = new AddressFormContainer(); $this->addComponent($addressContainer, 'address'); $defaultName = null; $defaultStreet = null; $defaultCity = null; $defaultZip = null; $defaultLongitude = null; $defaultLatitude = null; if ($shipment !== null) { $defaultName = $shipment->getName(); $defaultStreet = $shipment->getStreet(); $defaultCity = $shipment->getCity(); $defaultZip = $shipment->getZip(); $defaultLongitude = $shipment->getLongitude(); $defaultLatitude = $shipment->getLatitude(); } $addressContainer->addText('name', 'Name')->setDefaultValue($defaultName); $requiring = true; if ($typeControl !== null) { $requiring = function (TextInput $control) use($typeControl) { return $control->addConditionOn($typeControl, self::NOT_EQUAL, ShipmentType::BY_TRANSPORT_COMPANY); }; $typeControl->addCondition(self::NOT_EQUAL, ShipmentType::BY_TRANSPORT_COMPANY)->toggle('shipment-address'); } $addressContainer->addStreetControl('street', $defaultStreet, $requiring); $addressContainer->addCityControl('city', $defaultCity, $requiring); $addressContainer->addZipControl('zip', $defaultZip, $requiring); $addressContainer->addGpsControls('longitude', 'latitude', $defaultLongitude, $defaultLatitude); }
/** * @param ShipmentCollectionPoint|ShipmentPersonalPoint $shipment */ private function getAddressDescription(ShipmentOption $shipment) { $description = sprintf('%s %s %s', $shipment->getStreet(), $shipment->getCity(), $shipment->getZip()); if ($shipment->hasName()) { $description = sprintf('%s, %s', $shipment->getName(), $description); } return $description; }
private function checkDuplicity(ShipmentOption $shipment) { if ($shipment instanceof ShipmentTransportCompany) { $duplicate = $this->transportCompanyRepository->findOneBy(['name' => $shipment->getName()]); if ($duplicate !== null) { throw new EntityDuplicateException(sprintf('Shipment company with name %s already exists.', $shipment->getName())); } } }