mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
57 lines
2.1 KiB
PHP
57 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Orders\Processors;
|
|
|
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
|
use App\Classes\Modules\Orders\Services\CreatesOrder;
|
|
use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrder;
|
|
use App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor;
|
|
use App\Classes\Modules\OrderSteps\Processors\CreateOrderStepsProcessor;
|
|
use App\Classes\ValueObjects\Constants\OrderStatus;
|
|
use App\Classes\ValueObjects\Constants\OrderSteps;
|
|
use App\Classes\ValueObjects\Constants\OrderType;
|
|
use Illuminate\Http\Request;
|
|
|
|
class CreateOrderProcessor
|
|
{
|
|
private $canCreateOrder;
|
|
|
|
private $createsOrder;
|
|
|
|
private $confirmOrderProcessor;
|
|
|
|
private $createOrderStepsProcessor;
|
|
|
|
public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor)
|
|
{
|
|
$this->canCreateOrder = $canCreateOrder;
|
|
$this->createsOrder = $createsOrder;
|
|
$this->confirmOrderProcessor = $confirmOrderProcessor;
|
|
$this->createOrderStepsProcessor = $createOrderStepsProcessor;
|
|
}
|
|
|
|
public function execute(Request $request){
|
|
|
|
//TODO: Generate internal reference number
|
|
//faker->numberBetween(1000000, 9999999),
|
|
|
|
//TODO: Call Unity to create contract and get contract reference no (and all the obligations)
|
|
//$contract_reference_no = 99;
|
|
|
|
$order_object = new OrderObject($request->get('company_module_id'), $request->get('reference'), '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING);
|
|
|
|
$this->canCreateOrder->passes($order_object);
|
|
|
|
$order = $this->createsOrder->execute($order_object);
|
|
|
|
//Add processing to order step
|
|
//Note: For processing apointee_id is CIEF Freight Forward , id is 1, reserved in company table
|
|
$this->createOrderStepsProcessor->execute($order, OrderSteps::PROCESSING, 1);
|
|
|
|
//Pre-approved order, no need Admin to process it
|
|
$this->confirmOrderProcessor->execute($order->id);
|
|
|
|
return $order;
|
|
}
|
|
}
|