/**
  * @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;
 }