/**
  * @param RepeatedDrivingOrderPlan $orderPlan
  * @return RepeatedDrivingOrderEmbeddedListDTO
  */
 public function orderPlanToEmbeddedListDTOs(RepeatedDrivingOrderPlan $orderPlan)
 {
     $dto = new RepeatedDrivingOrderEmbeddedListDTO();
     $dto->id = $orderPlan->getId();
     $dto->isDeleted = !$orderPlan->isActive();
     $dto->anchorDate = $orderPlan->getAnchorDate()->format('d.m.Y');
     $dto->endDate = $orderPlan->getEndingDate() != DateTimeService::getMaxDateTime() ? $orderPlan->getEndingDate()->format('d.m.Y') : 'repeateddrivingorder.validtillrecalled';
     /** @var Passenger $passenger */
     $passenger = $orderPlan->getPassenger();
     $dto->passengerId = $passenger->getId();
     $repeatedDrivingOrders = $orderPlan->getRepeatedDrivingOrders();
     /** @var RepeatedDrivingOrder $repeatedDrivingOrder */
     foreach ($repeatedDrivingOrders as $repeatedDrivingOrder) {
         if ($repeatedDrivingOrder->getDirection() == RepeatedDrivingOrder::OUTWARD_DIRECTION) {
             $dto->weekDay = $this->convertWeekDay($repeatedDrivingOrder->getWeekday());
             $dto->outwardTime = $this->dateTimeService->convertToLocalTimeString($repeatedDrivingOrder->getPickUpTime());
         } else {
             $dto->returnTime = $this->dateTimeService->convertToLocalTimeString($repeatedDrivingOrder->getPickUpTime());
         }
     }
     return $dto;
 }
 /** -------------------------
  * Build one driving order for one working day.
  *
  * @param RepeatedDrivingOrderPlan $drivingOrderPlan
  * @param RepeatedDrivingOrder $repeatedDrivingOrder
  * @param \DateTime $day
  * @param mixed $status
  * @return DrivingOrder
  */
 protected function handleNewDrivingOrderForDate(RepeatedDrivingOrderPlan &$drivingOrderPlan, $repeatedDrivingOrder, \DateTime $day, $status)
 {
     $drivingOrder = DrivingOrder::registerDrivingOrder($drivingOrderPlan->getPassenger(), $day, $repeatedDrivingOrder->getPickUpTime(), $drivingOrderPlan->getCompanion(), $drivingOrderPlan->getMemo(), $status, false, $drivingOrderPlan->getAdditionalTime());
     $drivingOrder->assignZone($drivingOrderPlan->getZone());
     $drivingOrder->assignRepeatedDrivingOrderPlan($drivingOrderPlan);
     $drivingOrder->assignRepeatedDrivingOrder($repeatedDrivingOrder);
     $drivingOrderPlan->assignDrivingOrder($drivingOrder);
     return $drivingOrder;
 }
 /**
  * @param \DateTime $anchorDate
  * @param null $withHolidays
  * @param null $companion
  * @param \DateTime $endingDate
  * @param null $memo
  * @param null $additionalTime
  * @return RepeatedDrivingOrderPlan
  */
 public static function registerRepeatedDrivingOrderPlan(\DateTime $anchorDate, $withHolidays = null, $companion = null, \DateTime $endingDate = null, $memo = null, $additionalTime = null)
 {
     $correctedWithHolidays = null !== $withHolidays ? $withHolidays : false;
     $correctedCompanion = null !== $companion ? $companion : 0;
     $correctedAdditionalTime = null !== $additionalTime ? $additionalTime : 0;
     $correctedEndingDate = $endingDate !== null ? $endingDate : DateTimeService::getMaxDateTime();
     $correctedMemo = $memo !== null ? $memo : '';
     $rdPlan = new RepeatedDrivingOrderPlan();
     $rdPlan->setAnchorDate($anchorDate);
     $rdPlan->setEndingDate($correctedEndingDate);
     $rdPlan->setWithHolidays($correctedWithHolidays);
     $rdPlan->setCompanion($correctedCompanion);
     $rdPlan->setMemo($correctedMemo);
     $rdPlan->setAdditionalTime($correctedAdditionalTime);
     return $rdPlan;
 }