/** * @param ResourceEvent $e * @return CargoRoutingDto * @throws \PhlyRestfully\Exception\CreationException */ public function onCreate(ResourceEvent $e) { $data = $e->getParam('data'); $this->cargoFrom->setData((array) $data); if (!$this->cargoFrom->isValid()) { $creationException = new CreationException("Provided Cargo data is invalid."); $creationException->setAdditionalDetails(array('errors' => $this->cargoFrom->getMessages())); throw $creationException; } $trackingId = $this->bookingService->bookNewCargo($this->cargoFrom->get('origin')->getValue(), $this->cargoFrom->get('final_destination')->getValue()); $cargoRouting = new CargoRoutingDto(); $cargoRouting->setTrackingId($trackingId); $cargoRouting->setOrigin($this->cargoFrom->get('origin')->getValue()); $cargoRouting->setFinalDestination($this->cargoFrom->get('final_destination')->getValue()); return $cargoRouting; }
public function testUsesAdditionalDetailsFromExceptionWhenProvided() { $exception = new Exception\CreationException('exception message', 401); $exception->setAdditionalDetails(array('foo' => 'bar')); $apiProblem = new ApiProblem('401', $exception); $payload = $apiProblem->toArray(); $this->assertArrayHasKey('foo', $payload); $this->assertEquals('bar', $payload['foo']); }