From fde433d60cc852552cfef952f2caffed3815ed6d Mon Sep 17 00:00:00 2001 From: Fairuz Date: Mon, 26 Jul 2021 13:14:43 +0800 Subject: [PATCH] Created contract at Unity --- .../GenerateOrderStepsProcessor.php | 6 ++-- .../Processors/ConfirmOrderProcessor.php | 4 +-- .../Processors/CreateOrderProcessor.php | 13 ++++++-- .../Processors/CreateContractProcessor.php | 10 +++--- .../Unity/Services/CreatesContract.php | 33 +++++++++++++++++++ config/unity.php | 2 +- 6 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 app/Classes/Modules/Unity/Services/CreatesContract.php diff --git a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php index 343c0ad0..90b7ea18 100644 --- a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php @@ -39,11 +39,11 @@ class GenerateOrderStepsProcessor $this->getUnityContractObligationsProcessor = $getUnityContractObligationsProcessor; } - public function execute(Order $order){ + public function execute(Order $order, array $contract_obligation_list=[]){ - $obligations = $this->getUnityContractObligationsProcessor->execute(); + $obligations = $contract_obligation_list;//$this->getUnityContractObligationsProcessor->execute(); - //TODO: Update Appointee ID to Entity User base on hash key + //TODO: Collect hash_id & search company module table for appointee id foreach($obligations as $step){ $orderSteps[] = new OrderStepsObject( diff --git a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php index 2bf0ea54..a94e755f 100644 --- a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php @@ -26,7 +26,7 @@ class ConfirmOrderProcessor $this->fetchesOrder = $fetchesOrder; } - public function execute(int $orderId){ + public function execute(int $orderId, array $contract_obligation_list = []){ $order_object = new OrderObject(0,'','',0,0, '',$orderId); @@ -34,7 +34,7 @@ class ConfirmOrderProcessor $order = $this->fetchesOrder->execute(['id'=>$order_object->getId()]); - $this->generateOrderStepsProcessor->execute($order); + $this->generateOrderStepsProcessor->execute($order, $contract_obligation_list); } } diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php index 884eda4d..d35ed12d 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php @@ -10,6 +10,7 @@ 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 App\Classes\Modules\Unity\Processors\CreateContractProcessor; use Illuminate\Http\Request; class CreateOrderProcessor @@ -22,12 +23,15 @@ class CreateOrderProcessor private $createOrderStepsProcessor; - public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor) + private $unityCreateContract; + + public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor, CreateContractProcessor $unityCreateContract) { $this->canCreateOrder = $canCreateOrder; $this->createsOrder = $createsOrder; $this->confirmOrderProcessor = $confirmOrderProcessor; $this->createOrderStepsProcessor = $createOrderStepsProcessor; + $this->unityCreateContract = $unityCreateContract; } public function execute(Request $request){ @@ -35,9 +39,12 @@ class CreateOrderProcessor $reference_no = rand(1000000, 9999999); //TODO: Call Unity to create contract and get contract reference no (and all the obligations) - //$contract_reference_no = 99; + $contract = $this->unityCreateContract->execute(); - $order_object = new OrderObject($request->get('company_module_id'), $reference_no, '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING); + $contract_reference_no = $contract->hash_id; + $contract_obligation_list = $contract->contract_obligation_list; + + $order_object = new OrderObject($request->get('company_module_id'), $contract_reference_no, '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING); $this->canCreateOrder->passes($order_object); diff --git a/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php b/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php index 70756d75..19a86060 100644 --- a/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php +++ b/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php @@ -4,18 +4,18 @@ namespace App\Classes\Modules\Unity\Processors; use Config; use Illuminate\Support\Facades\Http; -use App\Classes\Modules\Unity\Services\GetContractObligations; +use App\Classes\Modules\Unity\Services\CreatesContract; class CreateContractProcessor { - private $getContractObligations; + private $createsContract; - public function __construct(GetContractObligations $getContractObligations) + public function __construct(CreatesContract $createsContract) { - $this->getContractObligations = $getContractObligations; + $this->createsContract = $createsContract; } public function execute(){ - return $this->getContractObligations->execute(); + return $this->createsContract->execute(); } } diff --git a/app/Classes/Modules/Unity/Services/CreatesContract.php b/app/Classes/Modules/Unity/Services/CreatesContract.php new file mode 100644 index 00000000..6f50a7e3 --- /dev/null +++ b/app/Classes/Modules/Unity/Services/CreatesContract.php @@ -0,0 +1,33 @@ +createEntityEndpoint = Config::get('unity.url').Config::get('unity.endpoint.create_contract'); + $this->getAccessToken = $getAccessToken; + $this->contract_hash_id = Config::get('unity.contract_template_hash_id'); + } + + public function execute(){ + + $accesToken=$this->getAccessToken->execute(); + + $response = Http::withToken($accesToken)->post($this->createEntityEndpoint,['contract_template_id'=>[$this->contract_hash_id]])->object(); + + return (isset($response->data)) ? $response->data : null; + + } +} diff --git a/config/unity.php b/config/unity.php index 7408dc8c..06a5eb81 100644 --- a/config/unity.php +++ b/config/unity.php @@ -11,7 +11,7 @@ return [ 'login' => env('UNITY_LOGIN_ENDPOINT','login'), 'create_entity' => env('UNITY_CREATE_ENTITY_ENDPOINT','entity/store'), 'get_contract_obligations' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), - 'create_contract' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), + 'create_contract' => env('UNITY_OB_LIST_ENDPOINT','contract/generate'), 'update_obligation_status' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), ],