'Created Milestone', 'message' => 'You have successfully created a new Milestone' ]; } /** @var CanCreateMilestone */ private $canCreateMilestone; /** @var CreatesMilestone */ private $createsMilestone; /** * CreateMilestoneControllerLogic constructor. * @param CanCreateMilestone $canCreateMilestone * @param CreatesMilestone $createsMilestone */ public function __construct(CanCreateMilestone $canCreateMilestone, CreatesMilestone $createsMilestone) { $this->canCreateMilestone = $canCreateMilestone; $this->createsMilestone = $createsMilestone; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $object = new MilestoneObject($request->input('project_type'), $request->input('name')); $this->canCreateMilestone->passes($object); $query = $this->createsMilestone->execute($object); return $this->resourceResponse(new MilestoneResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }