'Fetch Users', 'message' => 'You have successfully retrieved the user by email' ]; } /** @var CanFetchUser */ private $canFetchUser; /** @var FetchesUser */ private $fetchesUser; /** * FetchUserByEmailLogic constructor. * @param CanFetchUser $canFetchUser * @param FetchesUser $fetchessUser */ public function __construct(CanFetchUser $canFetchUser, FetchesUser $fetchesUser) { $this->canFetchUser = $canFetchUser; $this->fetchesUser = $fetchesUser; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $this->canFetchUser->passes(); $query = $this->fetchesUser->execute(['email' => $request->route('email')]); return $this->resourceResponse(new UserCompanyResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }