Files
portal/database/seeders/CompaniesTableSeeder.php
T

138 lines
6.1 KiB
PHP

<?php
namespace Database\Seeders;
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
use App\Classes\Modules\Addresses\Services\CreatesAddress;
use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject;
use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor;
use App\Classes\Modules\Companies\Services\CreatesCompany;
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
use App\Classes\Modules\Contacts\Services\CreatesContact;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\CompanyType;
use App\Classes\ValueObjects\Constants\BusinessType;
use App\Models\CompanyModule;
use Illuminate\Database\Seeder;
use App\Models\Company;
class CompaniesTableSeeder extends Seeder
{
/** @var CreatesCompany */
private $createsCompany;
/** @var CreateCompanyModuleProcessor */
private $createCompanyModuleProcessor;
/** @var CreatesAddress */
private $createsAddress;
/** @var CreatesContact */
private $createsContact;
/**
* CompaniesTableSeeder constructor.
* @param CreatesCompany $createsCompany
* @param CreateCompanyModuleProcessor $createCompanyModuleProcessor
* @param CreatesAddress $createsAddress
* @param CreatesContact $createsContact
*/
public function __construct(CreatesCompany $createsCompany, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreatesAddress $createsAddress, CreatesContact $createsContact)
{
$this->createsCompany = $createsCompany;
$this->createCompanyModuleProcessor = $createCompanyModuleProcessor;
$this->createsAddress = $createsAddress;
$this->createsContact = $createsContact;
}
/**
* Run the database seeds.
*
* @return void
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function run()
{
$companies = [
new CompanyObject('CIEF Worldwide Sdn Bhd', 'CIEF', CompanyType::COMPANY_BUSINESS, ApprovalStatus::APPROVED),
new CompanyObject('Atvantic Import & Export Sdn Bhd', 'VT-NATION', CompanyType::COMPANY_BUSINESS, ApprovalStatus::APPROVED)
];
foreach ($companies as $companyObject) {
/** @var Company $company */
$company = $this->createsCompany->execute($companyObject);
if($companyObject->getReference() === 'CIEF') {
/** @var CompanyModule $companyModule */
$companyModule = $this->createCompanyModuleProcessor->execute($company, BusinessType::FREIGHT_FORWARDER);
$address = new AddressObject('Malaysian Global Innovation & Creativity Center Level 1 CWS', 'Block 3730,Persiaran APEC', 1, 15, 402, 63000);
$this->createsAddress->execute($companyModule, $address);
$contact = new ContactObject('Office Number', '0182909252', '', '');
$this->createsContact->execute($companyModule, $contact);
continue;
}
foreach ([BusinessType::FREIGHT_FORWARDER, BusinessType::WAREHOUSE] as $businessType){
if($businessType === BusinessType::WAREHOUSE){
foreach(['Guangzhou', 'Yiwu', 'Klang', 'Sabah', 'Sarawak'] as $name){
/** @var CompanyModule $companyModule */
$companyModule = $this->createCompanyModuleProcessor->execute($company, $businessType);
if ($name === 'Guangzhou'){
$companyModule->update(['name' => $name, 'reference' => 'GZ-V01']);
$address = new AddressObject('白云区,大朗南路 白云湖大道自编13号 7号仓库', '高德地图导航:广州市世通行', 2, 35, 633, 510450);
$contact = new ContactObject('杨维民', '13600055019', '', '');
} elseif ($name === 'Yiwu') {
$companyModule->update(['name' => $name, 'reference' => 'YW-V01']);
$address = new AddressObject('义乌市诚信大道义乌港A区2楼194号', '', 2, 27, 532, 322000);
$contact = new ContactObject('小曾', '13575982901', '', '');
} elseif ($name === 'Klang') {
$companyModule->update(['name' => $name, 'reference' => 'KL-V01']);
$address = new AddressObject('LOT 1357 A, JALAN TANJUNG SHAWAL', 'KAMPUNG SUNGAI PINANG', 1, 15, 412, 41400);
$contact = new ContactObject('Mr. Yang', '0162237680', '', '');
} elseif ($name === 'Sabah') {
$companyModule->update(['name' => $name, 'reference' => 'SB-V01']);
$address = new AddressObject('Warehouse A & B, No. 2, Lorong Kacang Tanah 1', 'Jalan Kolombong, Kolombong', 1, 13, 316, 88450);
} elseif ($name === 'Sarawak') {
$companyModule->update(['name' => $name, 'reference' => 'SRW-V01']);
$address = new AddressObject('OPPOSITE HT POLE 51, LT 664 JALAN SUNGAI SALIM', '', 1, 14, 381, 96000);
}
$this->createsAddress->execute($companyModule, $address);
$this->createsContact->execute($companyModule, $contact);
}
continue;
}
/** @var CompanyModule $companyModule */
$companyModule = $this->createCompanyModuleProcessor->execute($company, $businessType);
$address = new AddressObject('2, Jalan TSB 6, Taman Industri Sungai Buloh', '', 1, 15, 419, 47000);
$this->createsAddress->execute($companyModule, $address);
$contact = new ContactObject('Office Number', '036148 8108', '', '');
$this->createsContact->execute($companyModule, $contact);
}
}
}
}