Files
portal/database/seeders/CompaniesTableSeeder.php
T
2021-08-03 01:17:54 +08:00

86 lines
2.6 KiB
PHP

<?php
namespace Database\Seeders;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\CompanyType;
use App\Classes\ValueObjects\Constants\BusinessType;
use App\Classes\Modules\Unity\Processors\CreateEntityProcessor;
use App\Classes\Modules\Unity\Processors\CreateEntitySignatureProcessor;
use Illuminate\Database\Seeder;
use App\Models\Company;
use App\Models\CompanyModule;
class CompaniesTableSeeder extends Seeder
{
private $createEntityProcessor;
private $createEntitySignatureProcessor;
public function __construct(CreateEntityProcessor $createEntityProcessor, CreateEntitySignatureProcessor $createEntitySignatureProcessor)
{
$this->createEntityProcessor = $createEntityProcessor;
$this->createEntitySignatureProcessor = $createEntitySignatureProcessor;
}
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$companies = [
[
'id' => 1, //Reserve ID
'name' => 'CIEF SDN BHD',
'reference' => 'CIEF',
'type' => CompanyType::COMPANY_BUSINESS,
'status' => ApprovalStatus::APPROVED,
],
[
'name' => 'Guang Zhou',
'reference' => 'guangzhouwarehouse',
'type' => CompanyType::COMPANY_BUSINESS,
'status' => ApprovalStatus::APPROVED,
],
[
'name' => 'Yiwu',
'reference' => 'yiwuwarehouse',
'type' => CompanyType::COMPANY_BUSINESS,
'status' => ApprovalStatus::APPROVED,
]
];
if (!empty($companies)) {
foreach ($companies as $company) {
$unityEntity = $this->createEntityProcessor->execute($company['name']);
$unityEntitySignature = $this->createEntitySignatureProcessor->execute($unityEntity->hash_id);
$company = Company::create($company);
$companyModule = [
'company_id' => $company->id,
'type' => BusinessType::WAREHOUSE,
'status' => ApprovalStatus::APPROVED,
'unity_hash_id' => $unityEntity->hash_id,
'unity_signature' => $unityEntitySignature->hash_id,
];
if($company['reference']=='CIEF'){
$companyModule['id']= 1; //Reserve ID
$companyModule['type']=BusinessType::FREIGHT_FORWARDER;
}
CompanyModule::create($companyModule);
}
}
}
}