コード例 #1
0
 /**
  * @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::ATOM));
         $legDto->setUnloadTime($leg->unloadTime()->format(\DateTime::ATOM));
         $legs[] = $legDto;
     }
     $routeCandidate = new RouteCandidateDto();
     $routeCandidate->setLegs($legs);
     return $routeCandidate;
 }
コード例 #2
0
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     if (null === ($trackingId = $request->getAttribute('trackingId'))) {
         return new EmptyResponse(404);
     }
     $cargoData = $request->getParsedBody();
     if (!isset($cargoData['legs']) || !is_array($cargoData['legs'])) {
         throw new \InvalidArgumentException("Missing legs for cargo");
     }
     $routeCandidate = new RouteCandidateDto();
     $routeCandidate->setLegs($this->toLegDtosFromData($cargoData['legs']));
     try {
         $this->bookingService->assignCargoToRoute($trackingId, $routeCandidate);
         $cargoRoutingDto = $this->bookingService->loadCargoForRouting($trackingId);
         return new JsonResponse($cargoRoutingDto->getArrayCopy());
     } catch (CargoNotFoundException $e) {
         return new EmptyResponse(404);
     }
 }