/** * @param Itinerary $anItinerary * @return RouteCandidateDto */ public function toDto(Itinerary $anItinerary) { $legs = array(); foreach ($anItinerary->legs() as $leg) { $legDto = new LegDto(); $legDto->setLoadLocation($leg->loadLocation()); $legDto->setUnloadLocation($leg->unloadLocation()); $legDto->setLoadTime($leg->loadTime()->format(\DateTime::ISO8601)); $legDto->setUnloadTime($leg->unloadTime()->format(\DateTime::ISO8601)); $legs[] = $legDto; } $routeCandidate = new RouteCandidateDto(); $routeCandidate->setLegs($legs); return $routeCandidate; }
/** * @param ResourceEvent $e * @return \CargoBackend\API\Booking\Dto\CargoRoutingDto * @throws \PhlyRestfully\Exception\UpdateException */ public function onUpdate(ResourceEvent $e) { $trackingId = $e->getRouteMatch()->getParam('tracking_id'); $data = $e->getParam('data'); if (!isset($data->legs)) { throw new UpdateException("Legs missing in CargoRouting payload", 400); } $routeCandidate = new RouteCandidateDto(); $routeCandidate->setLegs($this->toLegDtosFromData($data->legs)); $this->bookingService->assignCargoToRoute($trackingId, $routeCandidate); return $this->bookingService->loadCargoForRouting($trackingId); }