From 926cb61ca371c3f4d09cc37c8afc45965d4d6d24 Mon Sep 17 00:00:00 2001 From: glovetleong Date: Mon, 13 Dec 2021 21:23:04 +0800 Subject: [PATCH] Vt sync update --- .../ApproveChangeOrderAddressProcessor.php | 9 +- .../RequestChangeOrderAddressProcessor.php | 40 +++- .../UpdateDoFromVTPortalProcessor.php | 202 ++++++++++++++++++ .../UpdatePackingListStatusLogic.php | 14 +- 4 files changed, 256 insertions(+), 9 deletions(-) create mode 100644 app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php diff --git a/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php b/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php index fbd84f90..40112301 100644 --- a/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php +++ b/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php @@ -6,6 +6,7 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress; use App\Classes\Modules\Orders\Standards\Rules\CanApproveChangeOrderAddress; use App\Classes\Modules\Orders\Services\UpdatesOrdersAddress; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor; use Illuminate\Http\Request; @@ -26,11 +27,12 @@ class ApproveChangeOrderAddressProcessor * @param FetchesAddress $fetchesAddress * @param UpdatesOrdersAddress $updatesOrdersAddress */ - public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesAddress $fetchesAddress, UpdatesOrdersAddress $updatesOrdersAddress) + public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesAddress $fetchesAddress, UpdatesOrdersAddress $updatesOrdersAddress, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor) { $this->canApproveChangeOrderAddress = $canApproveChangeOrderAddress; $this->fetchesAddress = $fetchesAddress; $this->updatesOrdersAddress = $updatesOrdersAddress; + $this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor; } @@ -43,7 +45,6 @@ class ApproveChangeOrderAddressProcessor */ public function execute(Request $request) { - $status = (int) $request->route('status'); $this->canApproveChangeOrderAddress->passes(); @@ -54,7 +55,9 @@ class ApproveChangeOrderAddressProcessor $address->owner->addresses()->update(['status' => ApprovalStatus::EXPIRED]); } - $this->updatesOrdersAddress->execute($address, $status); + $address = $this->updatesOrdersAddress->execute($address, $status); + + $vt_do_update = $this->updateDoFromVTPortalProcessor->execute($address); return $address; } diff --git a/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php b/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php index 7f01726b..994803e3 100644 --- a/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php +++ b/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php @@ -9,6 +9,10 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress; use App\Classes\Modules\Addresses\Services\DeletesAddress; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; +use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject; +use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; +use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor; use Illuminate\Http\Request; @@ -29,6 +33,12 @@ class RequestChangeOrderAddressProcessor /** @var DeletesAddress */ private $deletesAddress; + /** @var CreateContactProcessor */ + private $createContactProcessor; + + /** @var CreateRemarkProcessor */ + private $createRemarkProcessor; + /** * ChangeOrderAddressProcessor constructor. * @param FetchesOrder $fetchesOrder @@ -36,7 +46,7 @@ class RequestChangeOrderAddressProcessor * @param FetchesAddress $fetchesAddress * @param DeletesAddress $deletesAddress */ - public function __construct(CanChangeOrderAddress $canChangeOrderAddress, FetchesOrder $fetchesOrder, CreatesAddress $createsAddress, FetchesAddress $fetchesAddress, DeletesAddress $deletesAddress) + public function __construct(CanChangeOrderAddress $canChangeOrderAddress, FetchesOrder $fetchesOrder, CreatesAddress $createsAddress, FetchesAddress $fetchesAddress, DeletesAddress $deletesAddress, CreateContactProcessor $createContactProcessor, CreateRemarkProcessor $createRemarkProcessor) { $this->canChangeOrderAddress = $canChangeOrderAddress; @@ -44,12 +54,13 @@ class RequestChangeOrderAddressProcessor $this->createsAddress = $createsAddress; $this->fetchesAddress = $fetchesAddress; $this->deletesAddress = $deletesAddress; + $this->createContactProcessor = $createContactProcessor; + $this->createRemarkProcessor = $createRemarkProcessor; } public function execute(Request $request) { - $this->canChangeOrderAddress->passes(); $order = $this->fetchesOrder->execute(['id' => $request->get('order_id')]); @@ -59,7 +70,30 @@ class RequestChangeOrderAddressProcessor $address = $this->fetchesAddress->execute(['id' => $request->get('address_id')]); $addressObject = new AddressObject($address->street_one, $address->street_two, $address->country_id, $address->state_id, $address->district_id, $address->postcode, $address->reference, ApprovalStatus::PENDING_VERIFICATION); - $this->createsAddress->execute($order, $addressObject); + $order_address = $this->createsAddress->execute($order, $addressObject); + + $contact = $address->contacts()->first(); + $contactObject = new ContactObject( + $contact->reference, + $contact->phone, + '', + '' + ); + + if($contactObject->getPhone()){ + $order_remark = $this->createContactProcessor->execute($contactObject, $order_address); + } + + $remark = $address->remarks()->first(); + + $remarkObject = new RemarkObject( + $remark->content, + Auth()->user()->id + ); + + if($remarkObject->getContent()){ + $this->createRemarkProcessor->execute($order_address, $remarkObject); + } return $order; } diff --git a/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php b/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php new file mode 100644 index 00000000..8b3faeb2 --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php @@ -0,0 +1,202 @@ +fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal; + $this->fetchesAddress = $fetchesAddress; + } + + /** + * @return array + */ + public function execute($address) { + + try { + $order = $address->owner()->orderBy('id', 'desc')->first(); + $packing_list = $order->packingLists()->orderBy('id', 'desc')->first(); + + if ($packing_list) { + $contact = $address->contacts()->first(); + $remark = $address->remarks()->first(); + + $status = 'Release'; + + if ($packing_list->status == ApprovalStatus::PENDING_VERIFICATION) { + $status = 'Release'; + } + else if($packing_list->status == ApprovalStatus::SUSPENDED) { + $status = 'On Hold'; + + } + + $vt_do = $this->fetchesDataFRomVTPortal->clientRequest( + 'http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', + 'POST', + json_decode('{ + "controller": "Do", + "view": "grid1", + "request": { + "PageIndex": -2, + "PageSize": 10, + "PageOffset": 0, + "SortExpression": "", + "GroupExpression": "", + "Filter": [ + "FullMarking:$contains$%js%\"' . $order->reference . '\"\u0000" + ], + "ContextKey": "view2", + "FilterIsExternal": true, + "LookupContextFieldName": null, + "LookupContextController": null, + "LookupContextView": null, + "LookupContext": null, + "Inserting": false, + "LastCommandName": null, + + "DoesNotRequireData": false, + "LastView": "grid1", + "Tag": null, + "RequiresFirstLetters": false, + "ViewType": "Grid", + "SupportsCaching": true, + "SystemFilter": null, + "RequiresRowCount": true, + "QuickFindHint": null, + "RequiresPivot": false, + "PivotDefinitions": null, + "RequiresMetaData": true + } + }' + ), ''); + + $vt_do = $this->fetchesDataFRomVTPortal->getResponseBody($vt_do); + + if ($vt_do) { + foreach ($vt_do->Rows as $key => $row) { + + $vt_do_update = $this->fetchesDataFRomVTPortal->clientRequest( + 'http://portal.vtnation.com.my/Services/DataControllerService.asmx/Execute', + 'POST', + json_decode('{ + "controller": "Do", + "view": "editForm1", + "args": { + "CommandName": "Update", + "CommandArgument": "Save", + "Path": "ag2/a4", + "LastCommandName": "Edit", + "Values": [ + { + "Name": "ShippingAddress", + "NewValue": "' . $address->street_one . ' ' . $address->street_two . '", + "Modified": true, + "ReadOnly": false, + "Error": null + }, + { + "Name": "Attn", + "NewValue": "' . $contact->reference . '", + "Modified": true, + "ReadOnly": false, + "Error": null + }, + { + "Name": "Tel", + "NewValue": "' . $contact->phone . '", + "Modified": true, + "ReadOnly": false, + "Error": null + }, + { + "Name": "Status", + "NewValue": "' . $status . '", + "Modified": true, + "ReadOnly": false, + "Error": null + }, + { + "Name": "Doremarks", + "NewValue": "' . $remark->content . '", + "Modified": true, + "ReadOnly": false, + "Error": null + }, + { + "Name": "ModifiedBy", + "OldValue": "CIEF", + "NewValue": "CIEF", + "Modified": false, + "ReadOnly": false, + "Error": null + }, + { + "Name": "DoID", + "OldValue": 1471, + "NewValue": ' . $row[0] . ', + "Modified": false, + "ReadOnly": true, + "Error": null + } + ], + "ContextKey": "do", + "Controller": "Do", + "View": "editForm1", + "LastView": "grid1", + "Tag": null, + "Filter": [ + "DoID:=%js%' . $row[0] . '", + "ContainerID:=%js%' . $row[1] . '" + ], + "SortExpression": "", + "GroupExpression": "", + "SelectedValues": [] + } + }'), ''); + } + } + } + + } catch (\Exception $exception){ + Log::error($exception); + } + + return []; + } +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php index 67a1733c..c4266dc1 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php @@ -9,6 +9,7 @@ use App\Classes\Modules\PackingLists\Services\FetchesPackingList; use App\Classes\Modules\PackingLists\Services\UpdatesPackingListStatus; use App\Classes\Modules\PackingLists\Standards\Rules\CanUpdatePackingList; use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject; +use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor; use App\Http\Resources\PackingListResource; use ErrorException; use Illuminate\Http\JsonResponse; @@ -34,15 +35,19 @@ class UpdatePackingListStatusLogic extends AbstractControllerLogic /** @var UpdatesPackingListStatus */ private $updatesPackingListStatus; + /** @var UpdateDoFromVTPortalProcessor */ + private $updateDoFromVTPortalProcessor; + /** * UpdatePackingListStatusLogic constructor. * @param FetchesPackingList $fetchesPackingList * @param UpdatesPackingListStatus $updatesPackingListStatus */ - public function __construct(FetchesPackingList $fetchesPackingList, UpdatesPackingListStatus $updatesPackingListStatus) + public function __construct(FetchesPackingList $fetchesPackingList, UpdatesPackingListStatus $updatesPackingListStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor) { $this->fetchesPackingList = $fetchesPackingList; $this->updatesPackingListStatus = $updatesPackingListStatus; + $this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor; } /** @@ -54,9 +59,12 @@ class UpdatePackingListStatusLogic extends AbstractControllerLogic { $packingList = $this->fetchesPackingList->execute(['id' => $request->route('id')]); - $query = $this->updatesPackingListStatus->execute($packingList, $request->route('status')); + $packing_list = $this->updatesPackingListStatus->execute($packingList, $request->route('status')); + $address = $packing_list->owner()->first()->addresses()->first(); - return $this->resourceResponse(new PackingListResource($query)); + $vt_do_update = $this->updateDoFromVTPortalProcessor->execute($address); + + return $this->resourceResponse(new PackingListResource($packing_list)); } }