/** * @test */ public function it_lists_all_stored_cargos() { $trackingIdOne = $this->bookingService->bookNewCargo('USNYC', 'DEHAM'); $trackingIdTwo = $this->bookingService->bookNewCargo('NLRTM', 'USNYC'); $cargoRoutingDtos = $this->bookingService->listAllCargos(); $this->assertEquals(2, count($cargoRoutingDtos)); $generatedTrackingIds = [$trackingIdOne, $trackingIdTwo]; foreach ($cargoRoutingDtos as $cargoRoutingDto) { $this->assertTrue(in_array($cargoRoutingDto->getTrackingId(), $generatedTrackingIds)); } }
/** * @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); }
/** * @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); }