mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 12:34:18 +00:00
63 lines
2.2 KiB
PHP
63 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Companies\Processors;
|
|
|
|
use App\Classes\Modules\Unity\Processors\CreateEntityProcessor;
|
|
use App\Classes\Modules\Unity\Processors\CreateEntitySignatureProcessor;
|
|
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;
|
|
|
|
private $createEntityProcessor;
|
|
|
|
private $createUnityEntitySignatureProcessor;
|
|
|
|
/**
|
|
* CreateCompanyModuleProcessor constructor.
|
|
* @param CreatesCompanyModule $createsCompanyModule
|
|
*/
|
|
public function __construct(CanCreateCompanyModule $canCreateCompanyModule, CreatesCompanyModule $createsCompanyModule, CreateEntityProcessor $createUnityEntityProcessor, CreateEntitySignatureProcessor $createUnityEntitySignatureProcessor)
|
|
{
|
|
$this->createsCompanyModule = $createsCompanyModule;
|
|
$this->createUnityEntityProcessor = $createUnityEntityProcessor;
|
|
$this->canCreateCompanyModule = $canCreateCompanyModule;
|
|
$this->createUnityEntitySignatureProcessor = $createUnityEntitySignatureProcessor;
|
|
}
|
|
|
|
/**
|
|
* @param Company $company
|
|
* @return Model
|
|
*/
|
|
public function execute(Company $company , ?int $businessType): Model
|
|
{
|
|
$unityEntity = $this->createUnityEntityProcessor->execute($company->name);
|
|
|
|
$unityEntitySignature = $this->createUnityEntitySignatureProcessor->execute($unityEntity->hash_id);
|
|
|
|
$company_module_object = new CompanyModuleObject(
|
|
$company->id,
|
|
$businessType??BusinessType::IMPORTER,
|
|
$company->status,
|
|
$unityEntity->hash_id,
|
|
$unityEntitySignature->hash_id,
|
|
);
|
|
|
|
$this->canCreateCompanyModule->passes($company_module_object);
|
|
|
|
return $this->createsCompanyModule->execute($company_module_object);
|
|
}
|
|
}
|