Ejemplo n.º 1
0
 /**
  * Get pick up date time from a driving mission, which may or may not be
  * assigned to a working day or shift.
  *
  * @param DrivingMission $drivingMission
  * @return \DateTime local time
  */
 private function getPickUpDateTime(DrivingMission $drivingMission)
 {
     /** @var DateTimeService $timeService */
     $timeService = $this->container->get('tixi_api.datetimeservice');
     /** @var DrivingOrder $drivingOrder */
     $drivingOrder = $drivingMission->getDrivingOrders()[0];
     $pickUpDate = $timeService->convertToLocalDateTime($drivingOrder->getPickUpDate());
     $localMinutes = $drivingMission->getServiceMinuteOfDay();
     $localHours = intval($localMinutes / 60);
     $localMinutes = $localMinutes - $localHours * 60;
     $pickUpDate->setTime($localHours, $localMinutes);
     return $pickUpDate;
 }
Ejemplo n.º 2
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;
 }
Ejemplo n.º 3
0
 /**
  * Set DTO for one single driving mission (shared ride)
  *
  * @param DailyPlanEditMissionDTO $missionDTO
  * @param DrivingMission $drivingMission
  * @param Vehicle $vehicle
  */
 private function setSharedRideDTO(DailyPlanEditMissionDTO $missionDTO, DrivingMission $drivingMission, Vehicle $vehicle = null)
 {
     $missionDTO->isSharedRide = self::YES;
     /** @var DrivingOrder $drivingOrder */
     $drivingOrder = $drivingMission->getDrivingOrders()[0];
     /** @var Route $route */
     $route = $drivingOrder->getRoute();
     // todo: upgrade the following shared ride placeholders ...
     $missionDTO->missionName = substr($route->getStartAddress()->getCity(), 0, 3) . '+++';
     $missionDTO->serviceTitle = 'Shared ride (work in progress)...';
     $missionDTO->isLongDistance = self::NO;
     $missionDTO->hasWheelChair = self::NO;
     $missionDTO->hasErrorMessage = self::NO;
 }
Ejemplo n.º 4
0
 /**
  * creates an array with RideNodes according to a drivingMission
  * with missionId as arrayKey
  *
  * @param DrivingMission $drivingMission
  * @return RideNode
  */
 public function createRideNodeFromDrivingMission(DrivingMission $drivingMission)
 {
     /**
      * if DrivingMission got no elements in ServiceOrder => singleOrder
      * if elements exist => multiOrder
      */
     if (empty($drivingMission->getServiceOrder())) {
         /**@var $order DrivingOrder */
         $order = $drivingMission->getDrivingOrders()->first();
         $startAddress = $order->getRoute()->getStartAddress();
         $targetAddress = $order->getRoute()->getTargetAddress();
     } else {
         $sort = $drivingMission->getServiceOrder();
         $first = reset($sort);
         $last = count($sort);
         /**@var $firstOrder DrivingOrder */
         $firstOrder = $drivingMission->getDrivingOrders()->get($sort[$first]);
         /**@var $lastOrder DrivingOrder */
         $lastOrder = $drivingMission->getDrivingOrders()->get($sort[$last]);
         if ($drivingMission->getDirection() === DrivingMission::SAME_START) {
             $startAddress = $firstOrder->getRoute()->getStartAddress();
             $targetAddress = $lastOrder->getRoute()->getTargetAddress();
         } else {
             $startAddress = $firstOrder->getRoute()->getStartAddress();
             $targetAddress = $firstOrder->getRoute()->getTargetAddress();
         }
     }
     return RideNode::registerPassengerRide($drivingMission, $startAddress, $targetAddress);
 }