Files
shipping-portal/app/Classes/Modules/Orders/Processors/CreateOrderRoleProcessor.php
T
2021-08-03 01:18:34 +08:00

62 lines
2.7 KiB
PHP

<?php
namespace App\Classes\Modules\Orders\Processors;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;;
use App\Classes\Modules\Orders\DataTransferObjects\OrderRoleObject;
use App\Classes\Modules\Orders\Services\CreatesOrderRole;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrderRole;
use App\Classes\Modules\Unity\Processors\CreateContractEntityProcessor;
use App\Classes\ValueObjects\Constants\OrderStatus;
use App\Classes\ValueObjects\Constants\OrderSteps;
use App\Classes\ValueObjects\Constants\OrderType;
use App\Classes\Modules\Companies\Services\FetchesCompany;
use Illuminate\Http\Request;
class CreateOrderRoleProcessor
{
private $canCreateOrderRole;
private $createsOrderRole;
private $fetchesCompany;
private $unityCreateContractEntity;
public function __construct(CanCreateOrderRole $canCreateOrderRole, CreatesOrderRole $createsOrderRole, FetchesCompany $fetchesCompany, CreateContractEntityProcessor $unityCreateContractEntity)
{
$this->canCreateOrderRole = $canCreateOrderRole;
$this->createsOrderRole = $createsOrderRole;
$this->fetchesCompany = $fetchesCompany;
$this->unityCreateContractEntity = $unityCreateContractEntity;
}
public function execute(Request $request, int $orderId, string $contract_reference_no){
$companies = $this->fetchesCompany->getRepository()->whereIn('id',[1, $request->get('warehouse_id')])->get();
$cief_company = $companies[0]->id == 1 ? $companies[0] : $companies[1];
$warehouse_company = $companies[0]->id != 1 ? $companies[0] : $companies[1];
$cief_company_module = $cief_company->companyModule()->first();
$contractEntities[] = $this->unityCreateContractEntity->execute( $contract_reference_no, [$cief_company_module->unity_hash_id]);
$contractEntities[0]->{"company_module_id"} = $cief_company_module->id;
$warehouse_company_module = $warehouse_company->companyModule()->first();
$contractEntities[] = $this->unityCreateContractEntity->execute( $contract_reference_no, [$warehouse_company_module->unity_hash_id]);
$contractEntities[1]->{"company_module_id"} = $warehouse_company_module->id;
foreach($contractEntities as $entity){
$order_role_object = new OrderRoleObject($orderId, $entity->company_module_id, $entity->hash_id, $entity->entity_signature_hash_id);
$this->canCreateOrderRole->passes($order_role_object);
$this->createsOrderRole->execute($order_role_object);
}
return $contractEntities;
}
}