createsCompanyModule = $createsCompanyModule; $this->createUnityEntityProcessor = $createUnityEntityProcessor; $this->canCreateCompanyModule = $canCreateCompanyModule; $this->createsEntityProcessor = $createsEntityProcessor; $this->createUnityEntitySignatureProcessor = $createUnityEntitySignatureProcessor; } /** * @param Company $company * @param int|null $businessType * @return Model * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(Company $company , ?int $businessType = BusinessType::IMPORTER): Model { $unityEntity = $this->createUnityEntityProcessor->execute($company->name); $unityEntitySignature = $this->createUnityEntitySignatureProcessor->execute($unityEntity->hash_id); $company_module_object = new CompanyModuleObject($company->name, $company->reference, $unityEntity->hash_id, $unityEntitySignature->hash_id, $businessType, $company->status); $this->canCreateCompanyModule->passes($company_module_object); /** @var CompanyModule $companyModule */ $companyModule = $this->createsCompanyModule->execute($company, $company_module_object); return $companyModule; } }