'Retrieved User', 'message' => 'You have successfully retrieved a User by email' ]; } /** @var CanFetchUser */ private $canFetchUser; /** @var FetchesUser */ private $fetchesUser; /** * FetchUserByEmailLogic constructor. * @param CanFetchUser $canFetchUser * @param FetchesUser $fetchesUser */ public function __construct(CanFetchUser $canFetchUser, FetchesUser $fetchesCompany) { $this->canFetchUser = $canFetchUser; $this->fetchesUser = $fetchesCompany; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request) : JsonResponse { $this->canFetchUser->passes(); $query = $this->fetchesUser->execute(['email' => $request->route('email')]); return $this->resourceResponse(new UserCompanyResource($query)); } }