'Updated Task', 'message' => 'You have successfully updated the Task' ]; } /** @var CanUpdateTask */ private $canUpdateTask; /** @var UpdatesTask */ private $updatesTask; /** @var FetchesTask */ private $fetchesTask; /** * UpdateTaskControllerLogic constructor. * @param CanUpdateTask $canUpdateTask * @param UpdatesTask $updatesTask * @param FetchesTask $fetchesTask */ public function __construct(CanUpdateTask $canUpdateTask, UpdatesTask $updatesTask, FetchesTask $fetchesTask) { $this->canUpdateTask = $canUpdateTask; $this->updatesTask = $updatesTask; $this->fetchesTask = $fetchesTask; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $object = new TaskObject($request->input('type_id'), $request->input('title'), $request->input('description'), $request->input('status'), $request->input('active'), $request->input('milestone_id')); $this->canUpdateTask->passes($object); $query = $this->fetchesTask->execute(['id' => $request->route('id')]); $query = $this->updatesTask->execute($query, $object); return $this->resourceResponse(new TaskResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }