generatesUniqueAccountNumber = $generatesUniqueAccountNumber; $this->canCreateUser = $canCreateUser; $this->createsUser = $createsUser; $this->createCompanyProcessor = $createCompanyProcessor; $this->createsCompanyModule = $createsCompanyModule; $this->createsCompanyEmployee = $createsCompanyEmployee; $this->createsCompanyConnection = $createsCompanyConnection; $this->createContactProcessor = $createContactProcessor; $this->authenticateUserLogic = $authenticateUserLogic; $this->generatesEmailVerificationAttempt = $generatesEmailVerificationAttempt; $this->sendUserVerificationEmail = $sendUserVerificationEmail; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request): JsonResponse { try { $registrationObject = new RegistrationObject($request->input('email'), $request->input('name'), $request->input('password'), $request->input('confirm_password')); $this->canCreateUser->passes($registrationObject); /** @var User $user */ $user = $this->createsUser->execute($registrationObject); // $attempt = $this->generatesEmailVerificationAttempt->execute($user); // $this->sendUserVerificationEmail::dispatch($user, $attempt); $request->request->set('name', $request->input('type') === 1 ? $request->input('company_name') : $request->input('name')); /** @var Company $company */ $company = $this->createCompanyProcessor->execute($request); $request->request->add(['company_id' => $company->id, 'name' => $registrationObject->getName()]); $this->createContactProcessor->execute($request); /** @var CompanyModule $module */ $module = $this->createsCompanyModule->execute(new ModuleObject($company, ModuleTypes::IMPORTER)); $this->createsCompanyEmployee->execute(new EmployeeObject($module, $user, CompanyRoles::OWNER)); $this->createsCompanyConnection->execute(new ConnectionObject($module, CompanyModule::find(1))); return $this->authenticateUserLogic->execute($request); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }