/** * @test */ public function it_loads_cargo_for_routing() { $trackingId = $this->bookingService->bookNewCargo('USNYC', 'DEHAM'); $cargoRoutingDto = $this->bookingService->loadCargoForRouting($trackingId); $this->assertInstanceOf('CargoBackend\\API\\Booking\\Dto\\CargoRoutingDto', $cargoRoutingDto); $this->assertEquals('USNYC', $cargoRoutingDto->getOrigin()); $this->assertEquals('DEHAM', $cargoRoutingDto->getFinalDestination()); $this->assertEquals($trackingId, $cargoRoutingDto->getTrackingId()); }
/** * @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); }