Files
shipping-portal/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php
T
2021-07-22 16:53:52 +08:00

54 lines
1.7 KiB
PHP

<?php
namespace App\Classes\Modules\Companies\Processors;
use App\Classes\Modules\Unity\Processors\CreateEntityProcessor;
use App\Classes\Modules\Companies\DataTransferObjects\CompanyModuleObject;
use App\Classes\Modules\Companies\Services\CreatesCompanyModule;
use App\Classes\Modules\Companies\Standards\Rules\CanCreateCompanyModule;
use App\Classes\ValueObjects\Constants\BusinessType;
use Illuminate\Database\Eloquent\Model;
use App\Models\Company;
class CreateCompanyModuleProcessor
{
/** @var CreatesCompanyModule */
private $createsCompanyModule;
private $createUnityEntityProcessor;
private $canCreateCompanyModule;
/**
* CreateCompanyModuleProcessor constructor.
* @param CreatesCompanyModule $createsCompanyModule
*/
public function __construct(CanCreateCompanyModule $canCreateCompanyModule, CreatesCompanyModule $createsCompanyModule, CreateEntityProcessor $createUnityEntityProcessor)
{
$this->createsCompanyModule = $createsCompanyModule;
$this->createUnityEntityProcessor = $createUnityEntityProcessor;
$this->canCreateCompanyModule = $canCreateCompanyModule;
}
/**
* @param Company $company
* @return Model
*/
public function execute(Company $company , ?int $businessType): Model
{
$unityEntity = $this->createUnityEntityProcessor->execute($company->name);
$company_module_object = new CompanyModuleObject(
$company->id,
$businessType??BusinessType::IMPORTER,
$company->status,
$unityEntity->hash_id
);
$this->canCreateCompanyModule->passes($company_module_object);
return $this->createsCompanyModule->execute($company_module_object);
}
}