/** * @param DrivingOrderRegisterDTO $registerDTO * @param Passenger $passenger * @param array $errors * @return RepeatedDrivingOrderPlan */ public function registerDTOtoNewDrivingOrderPlan(DrivingOrderRegisterDTO $registerDTO, Passenger $passenger, &$errors) { /** @var Address $fromAddress */ $fromAddress = $this->addressAssembler->addressLookaheadDTOtoAddress($registerDTO->lookaheadaddressFrom); /** @var Address $toAddress */ $toAddress = $this->addressAssembler->addressLookaheadDTOtoAddress($registerDTO->lookaheadaddressTo); /** @var Zone $zone */ $zone = $this->zonePlanManagement->getZoneWithHighestPriorityForCities(array($fromAddress->getCity(), $toAddress->getCity())); if (null == $zone) { $errors[] = 'drivingorder.form.error.zone'; } if ($zone->isUnclassified()) { $errors[] = 'repeateddrivingorder.form.error.longDistance'; } $route = $this->routeManagement->getRouteFromAddresses($fromAddress, $toAddress); $drivingOrderPlan = RepeatedDrivingOrderPlan::registerRepeatedDrivingOrderPlan($registerDTO->anchorDate, $registerDTO->withHolidays, $registerDTO->compagnion, $registerDTO->endDate, $registerDTO->memo, $registerDTO->additionalTime); $drivingOrderPlan->assignPassenger($passenger); $drivingOrderPlan->assignRoute($route); $drivingOrderPlan->assignZone($zone); $passenger->assignRepeatedDrivingOrderPlan($drivingOrderPlan); return $drivingOrderPlan; }