'Retrieved Project Milestone', 'message' => 'You have successfully retrieved a Project Milestone' ]; } /** @var CanFetchProjectMilestone */ private $canFetchProjectMilestone; /** @var FetchesProjectMilestone */ private $fetchesProjectMilestone; /** * FetchProjectMilestoneControllerLogic constructor. * @param CanFetchProjectMilestone $canFetchProjectMilestone * @param FetchesProjectMilestone $fetchesProjectMilestone */ public function __construct(CanFetchProjectMilestone $canFetchProjectMilestone, FetchesProjectMilestone $fetchesProjectMilestone) { $this->canFetchProjectMilestone = $canFetchProjectMilestone; $this->fetchesProjectMilestone = $fetchesProjectMilestone; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $this->canFetchProjectMilestone->passes(); $query = $this->fetchesProjectMilestone->execute(['id' => $request->route('id')]); return $this->resourceResponse(new ProjectMilestoneResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }