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