/**
  * @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);
 }
 /**
  * @depends testQueryParamsAreMutable
  */
 public function testQueryParamsAreNullable(ResourceEvent $event)
 {
     $event->setQueryParams(null);
     $this->assertNull($event->getQueryParams());
 }
 /**
  * @param ResourceEvent $e
  * @return \CargoBackend\API\Booking\Dto\RouteCandidateDto[]
  */
 public function onFetchAll(ResourceEvent $e)
 {
     $trackingId = $e->getRouteMatch()->getParam('tracking_id');
     return $this->bookingService->requestPossibleRoutesForCargo($trackingId);
 }
示例#4
0
 /**
  * Prepare event parameters
  *
  * Merges any event parameters set in the resources with arguments passed
  * to a resource method, and passes them to the `prepareArgs` method of the
  * event manager.
  *
  * @param  array $args
  * @return ArrayObject
  */
 protected function prepareEvent($name, array $args)
 {
     $event = new ResourceEvent($name, $this, $this->prepareEventParams($args));
     $event->setQueryParams($this->getQueryParams());
     $event->setRouteMatch($this->getRouteMatch());
     return $event;
 }