diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php index bac7a7b8..d81bb8ff 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php @@ -11,6 +11,7 @@ use App\Classes\ValueObjects\Constants\OrderStatus; use App\Classes\ValueObjects\Constants\OrderSteps; use App\Classes\ValueObjects\Constants\OrderType; use App\Classes\Modules\Unity\Processors\CreateContractProcessor; +use App\Classes\Modules\Unity\Processors\ActivateContractProcessor; use App\Classes\Modules\Unity\Processors\CreateContractEntityProcessor; use App\Classes\Modules\Unity\Processors\AssignContractEntityProcessor; use App\Classes\Modules\Orders\Processors\CreateOrderRoleProcessor; @@ -33,11 +34,13 @@ class CreateOrderProcessor private $unityCreateContractEntity; + private $unityActivateContract; + private $createOrderRoleProcessor; private $createOrderAddressProcessor; - public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor, CreateOrderRoleProcessor $createOrderRoleProcessor, CreateOrderAddressProcessor $createOrderAddressProcessor, CreateContractProcessor $unityCreateContract, CreateContractEntityProcessor $unityCreateContractEntity, AssignContractEntityProcessor $unityAssignContractEntity) + public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor, CreateOrderRoleProcessor $createOrderRoleProcessor, CreateOrderAddressProcessor $createOrderAddressProcessor, CreateContractProcessor $unityCreateContract, CreateContractEntityProcessor $unityCreateContractEntity, AssignContractEntityProcessor $unityAssignContractEntity, ActivateContractProcessor $unityActivateContract) { $this->canCreateOrder = $canCreateOrder; @@ -48,6 +51,7 @@ class CreateOrderProcessor $this->createOrderAddressProcessor = $createOrderAddressProcessor; $this->unityCreateContract = $unityCreateContract; + $this->unityActivateContract = $unityActivateContract; $this->unityAssignContractEntity = $unityAssignContractEntity; $this->unityCreateContractEntity = $unityCreateContractEntity; } @@ -56,17 +60,22 @@ class CreateOrderProcessor $reference_no = rand(1000000, 9999999); - //Call Unity to create contract and get contract reference no (and all the obligations) $contract = $this->unityCreateContract->execute(); $contract_reference_no = $contract->hash_id; $contract_obligation_list = $contract->contract_obligation_list; + //Activate Contract (if not activated then cannot update status) + $activated = $this->unityActivateContract->execute($contract_reference_no); + //Create Order on Shipping Platform $order_object = new OrderObject($request->get('company_module_id'), $contract_reference_no, '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING, 0, $request->get('address_id'), $request->get('warehouse_id')); $this->canCreateOrder->passes($order_object); $order = $this->createsOrder->execute($order_object); + //Add address (polymorphic) + $this->createOrderAddressProcessor->execute($request->get('address_id'), $order); + //Add order roles - Allow entity to process this order //This processor calls Unity to create Contract Entity ID $orderRoles = $this->createOrderRoleProcessor->execute($request, $order->id, $contract_reference_no); @@ -74,9 +83,6 @@ class CreateOrderProcessor //Call Unity to assign contract entity to obligation $this->unityAssignContractEntity->execute($request, $orderRoles, $contract_obligation_list); - //Add address polymorphic - $this->createOrderAddressProcessor->execute($request->get('address_id'), $order); - //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); diff --git a/app/Classes/Modules/Unity/Processors/ActivateContractProcessor.php b/app/Classes/Modules/Unity/Processors/ActivateContractProcessor.php new file mode 100644 index 00000000..62ca4e19 --- /dev/null +++ b/app/Classes/Modules/Unity/Processors/ActivateContractProcessor.php @@ -0,0 +1,21 @@ +activatesContract = $activatesContract; + } + + public function execute($contract_hash_id){ + return $this->activatesContract->execute($contract_hash_id); + } +} diff --git a/app/Classes/Modules/Unity/Services/ActivatesContract.php b/app/Classes/Modules/Unity/Services/ActivatesContract.php new file mode 100644 index 00000000..05f193ae --- /dev/null +++ b/app/Classes/Modules/Unity/Services/ActivatesContract.php @@ -0,0 +1,32 @@ +activateEntityEndpoint = Config::get('unity.url').Config::get('unity.endpoint.activate_contract'); + $this->getAccessToken = $getAccessToken; + } + + public function execute($contract_hash_id){ + + $accessToken=$this->getAccessToken->execute(); + + $this->activateEntityEndpoint = str_replace('{hash}',$contract_hash_id,$this->activateEntityEndpoint); + + $response = Http::withToken($accessToken)->put($this->activateEntityEndpoint)->object(); + + return (isset($response->data)) ? $response->data : null; + + } +} diff --git a/config/unity.php b/config/unity.php index 023f8969..43e47358 100644 --- a/config/unity.php +++ b/config/unity.php @@ -14,6 +14,7 @@ return [ 'create_contract_entity' => env('UNITY_CREATE_ENTITY_ENDPOINT','contract-entity/store'), 'get_contract_obligations' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), 'create_contract' => env('UNITY_OB_LIST_ENDPOINT','contract/generate'), + 'activate_contract' => 'contract/active/{hash}', 'assign_entity' => env('UNITY_OB_LIST_ENDPOINT','contract-obligation/assign-contract-entity/{hash}'), 'update_obligation_status' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), ],