mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/portal.git
synced 2026-08-21 05:24:09 +00:00
92 lines
3.7 KiB
PHP
92 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Orders\Processors;
|
|
|
|
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
|
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderRoleObject;
|
|
use App\Classes\Modules\Orders\Services\CreatesOrderRole;
|
|
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
|
|
use App\Classes\ValueObjects\Constants\WarehouseReferences;
|
|
use App\Models\CompanyModule;
|
|
use App\Models\Order;
|
|
use Illuminate\Http\Request;
|
|
|
|
class CreateOrderRolesProcessor
|
|
{
|
|
|
|
|
|
/** @var FetchesCompanyModule */
|
|
private $fetchesCompanyModule;
|
|
|
|
/** @var CreatesOrderRole */
|
|
private $createsOrderRole;
|
|
|
|
/** @var FetchesCompany */
|
|
private $fetchesCompany;
|
|
|
|
/**
|
|
* CreateOrderRolesProcessor constructor.
|
|
* @param FetchesCompanyModule $fetchesCompanyModule
|
|
* @param CreatesOrderRole $createsOrderRole
|
|
* @param FetchesCompany $fetchesCompany
|
|
*/
|
|
public function __construct(FetchesCompanyModule $fetchesCompanyModule, CreatesOrderRole $createsOrderRole, FetchesCompany $fetchesCompany)
|
|
{
|
|
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
|
$this->createsOrderRole = $createsOrderRole;
|
|
$this->fetchesCompany = $fetchesCompany;
|
|
}
|
|
|
|
|
|
public function execute(Request $request, Order $order){
|
|
|
|
$address = $order->addresses()->first();
|
|
|
|
$importer = $order->companyModule;
|
|
|
|
/** @var CompanyModule $originWarehouse */
|
|
$originWarehouse = $this->fetchesCompanyModule->execute(['id' => $request->get('warehouse_id')]);
|
|
$desitnationWarehouseReference = WarehouseReferences::KLANG;
|
|
// $address->state_id === 13 ? WarehouseReferences::SABAH : $address->state_id === 14 ? WarehouseReferences::SARAWAK : WarehouseReferences::KLANG
|
|
if($address->state_id === 13){
|
|
$desitnationWarehouseReference = WarehouseReferences::SABAH;
|
|
}
|
|
if($address->state_id === 14){
|
|
$desitnationWarehouseReference = WarehouseReferences::SARAWAK;
|
|
}
|
|
/** @var CompanyModule $destinationWarehouse */
|
|
$destinationWarehouse = $this->fetchesCompanyModule->execute(['reference' => $desitnationWarehouseReference]);
|
|
|
|
/** @var CompanyModule $freightForwarder */
|
|
$freightForwarder = $originWarehouse->company->companyModules()->freightForwarders()->first();
|
|
|
|
/** @var CompanyModule $supervisor */
|
|
$supervisor = $this->fetchesCompany->execute(['reference' => 'CIEF'])->companyModules()->freightForwarders()->first();
|
|
|
|
$roleObject = new OrderRoleObject($order, $supervisor, OrderRoleTypes::SUPERVISOR);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
$roleObject = new OrderRoleObject($order, $importer, OrderRoleTypes::IMPORTER);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
$roleObject = new OrderRoleObject($order, $originWarehouse, OrderRoleTypes::ORIGIN_WAREHOUSE);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
$roleObject = new OrderRoleObject($order, $freightForwarder, OrderRoleTypes::ORIGIN_FREIGHT_FORWARDER);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
$roleObject = new OrderRoleObject($order, $freightForwarder, OrderRoleTypes::DESTINATION_FREIGHT_FORWARDER);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
$roleObject = new OrderRoleObject($order, $destinationWarehouse, OrderRoleTypes::DESTINATION_WAREHOUSE);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
$roleObject = new OrderRoleObject($order, $freightForwarder, OrderRoleTypes::LAST_MILE_DELIVERY_DRIVER);
|
|
$this->createsOrderRole->execute($roleObject);
|
|
|
|
return true;
|
|
}
|
|
}
|