'Retrieved Package', 'message' => 'You have successfully retrieved a Package' ]; } /** @var CanFetchPackage */ private $canFetchPackage; /** @var FetchesPackage */ private $fetchesPackage; /** * FetchPackageControllersLogic constructor. * @param CanFetchPackage $canFetchPackage * @param FetchesPackage $fetchesPackage */ public function __construct(CanFetchPackage $canFetchPackage, FetchesPackage $fetchesPackage) { $this->canFetchPackage = $canFetchPackage; $this->fetchesPackage = $fetchesPackage; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $this->canFetchPackage->passes(); $query = $this->fetchesPackage->execute(['id' => $request->route('id')]); return $this->resourceResponse(new PackageResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }