Пример #1
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);
 }