'Delete User', 'message' => 'You have successfully deleted the User' ]; } /** @var CanDeleteUser */ private $canDeleteUser; /** @var DeletesUser */ private $deletesUser; /** @var FetchesUser */ private $fetchesUser; public function __construct( CanDeleteUser $canDeleteUser, DeletesUser $deletesUser, FetchesUser $fetchesUser ) { $this->canDeleteUser = $canDeleteUser; $this->deletesUser = $deletesUser; $this->fetchesUser = $fetchesUser; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request): JsonResponse { try { DB::beginTransaction(); $user = $this->fetchesUser->execute(['id' => $request->route('id')]); $this->canDeleteUser->passes(); $this->deletesUser->execute($user); DB::commit(); return $this->resourceResponse(new UserResource($user)); } catch (\Exception $exception) { throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }