Пример #1
0
 /**
  * passenger ride, represents necessary details of a ordered ride
  * @param DrivingMission $drivingMission
  * @param Address $startAddress
  * @param Address $endAddress
  * @return RideNode
  */
 public static function registerPassengerRide(DrivingMission $drivingMission, Address $startAddress, Address $endAddress)
 {
     $ride = new RideNode(self::RIDE_PASSENGER);
     $ride->drivingMission = $drivingMission;
     $ride->duration = $drivingMission->getServiceDuration();
     // todo check if passenger.extraMinutes are included here
     $ride->distance = $drivingMission->getServiceDistance();
     $ride->startMinute = $drivingMission->getServiceMinuteOfDay();
     $ride->endMinute = $drivingMission->getServiceMinuteOfDay() + $drivingMission->getServiceDuration();
     //fill amount of passenger with or without wheelchair
     foreach ($drivingMission->getDrivingOrders() as $order) {
         /**@var $order DrivingOrder */
         $passenger = $order->getPassenger();
         if ($passenger->getIsInWheelChair()) {
             $ride->wheelChairs++;
         } else {
             $ride->passengers++;
         }
         //add additional companion passenger
         $ride->passengers += $order->getCompanion();
         foreach ($passenger->getContradictVehicleCategories() as $contradict) {
             $ride->contradictingVehicleCategories[$contradict->getId()] = $contradict;
         }
     }
     $ride->startAddress = $startAddress;
     $ride->targetAddress = $endAddress;
     return $ride;
 }
Пример #2
0
 /**
  * Set DTO for one single driving mission (not a shared ride)
  *
  * @param DailyPlanEditMissionDTO $missionDTO
  * @param DrivingMission $drivingMission
  * @param Vehicle|null $vehicle
  */
 private function setSingleRideDTO(DailyPlanEditMissionDTO $missionDTO, DrivingMission $drivingMission, Vehicle $vehicle = null)
 {
     $missionDTO->isSharedRide = self::NO;
     $errors = array();
     $missionDTO->hasErrorMessage = self::NO;
     $tr = $this->container->get('translator');
     /** @var DrivingOrder $drivingOrder */
     $drivingOrder = $drivingMission->getDrivingOrders()[0];
     /** @var Route $route */
     $route = $drivingOrder->getRoute();
     $startCity = $route->getStartAddress()->getCity();
     $targetCity = $route->getTargetAddress()->getCity();
     $missionDTO->isLongDistance = self::NO;
     /** @var Zone $zone */
     $zone = $drivingOrder->getZone();
     if ($zone instanceof Zone && $zone->isUnclassified()) {
         $missionDTO->isLongDistance = self::YES;
         $missionDTO->missionName = $startCity . "→" . $targetCity;
     } else {
         $missionDTO->missionName = $this->getLocalMissionName($startCity, $targetCity);
     }
     $missionDTO->hasWheelChair = $drivingOrder->getPassenger()->getIsInWheelChair() ? self::YES : self::NO;
     if (null !== $vehicle) {
         if (!$drivingOrder->getPassenger()->isCompatibleWithVehicleCategory($vehicle->getCategory())) {
             $errors[] = $tr->trans('dailyplan.error.wrong.vehicle');
         }
     }
     $missionDTO->serviceTitle = $tr->trans('dailyplan.field.from') . ": " . $route->getStartAddress()->toString() . "
" . $tr->trans('dailyplan.field.to') . ": " . $route->getTargetAddress()->toString() . "
" . $tr->trans('dailyplan.field.ride') . "(ID:" . $drivingMission->getId() . "/" . $drivingOrder->getId() . "): " . $this->dateTimeService->convertToLocalTimeString($drivingOrder->getPickUpTime()) . "UTC+1, " . round($drivingMission->getServiceDistance() / 1000, 1) . "km, " . $drivingMission->getServiceDuration() . "min
" . $tr->trans('dailyplan.field.passenger') . ": " . $drivingOrder->getPassenger()->getNameStringForContact();
     if (count($errors) > 0) {
         $missionDTO->hasErrorMessage = self::YES;
         $missionDTO->serviceTitle = $this->setErrorMessagesInTitle($errors, $missionDTO->serviceTitle);
     }
 }