From d034a285fc0676730fc6a6f5c283e21a2f3fa15d Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Sun, 21 Jan 2024 22:31:16 +0800 Subject: [PATCH] Vue Polling - Solve a problem where query of packing list with contaienrs and packages data is taking too long to complete --- .../Filters/WithContainersPackages.php | 20 ++ .../ListPackingListsJobProcessor.php | 2 +- .../Resources/ListPackingListJobResource.php | 3 +- .../Resources/PackageWithoutOrderResource.php | 7 +- ...mentsBillingWithSearchPollingComponent.vue | 2 +- .../SingleAdminPaymentsBillingComponent.vue | 322 ++++++++++++++++++ 6 files changed, 348 insertions(+), 8 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/WithContainersPackages.php create mode 100644 resources/assets/vue/components/paymentsBilling/elements/SingleAdminPaymentsBillingComponent.vue diff --git a/app/Classes/General/Eloquent/Filters/WithContainersPackages.php b/app/Classes/General/Eloquent/Filters/WithContainersPackages.php new file mode 100644 index 00000000..5fabff27 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WithContainersPackages.php @@ -0,0 +1,20 @@ +with(['containers', 'packages']); + } +} diff --git a/app/Classes/Modules/PackingLists/Processors/ListPackingListsJobProcessor.php b/app/Classes/Modules/PackingLists/Processors/ListPackingListsJobProcessor.php index 4e67f7a1..2a85778e 100644 --- a/app/Classes/Modules/PackingLists/Processors/ListPackingListsJobProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/ListPackingListsJobProcessor.php @@ -37,7 +37,7 @@ class ListPackingListsJobProcessor */ public function execute(ListGenericJobObject $listGenericJobObject) { - $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($listGenericJobObject->getPayload()['filters']), ['page' => $listGenericJobObject->getPayload()['page']]); + $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($listGenericJobObject->getPayload()['filters']), ['page' => $listGenericJobObject->getPayload()['page'], 'with_containers_packages' => true]); foreach ($query->items() as &$item) { $item['userInfo'] = $listGenericJobObject->getUserInfo(); } diff --git a/app/Http/Resources/ListPackingListJobResource.php b/app/Http/Resources/ListPackingListJobResource.php index 348b64a0..1e6ad3aa 100644 --- a/app/Http/Resources/ListPackingListJobResource.php +++ b/app/Http/Resources/ListPackingListJobResource.php @@ -36,7 +36,8 @@ class ListPackingListJobResource extends JsonResource // $this->mergeWhen($this->owner instanceof Order, [ // 'order' => New OrderResource($this->owner) // ]), - 'packages' => PackageWithoutOrderResource::collection($packages), + 'container' => new ContainerResource($this->containers->first()), + 'packages' => PackageWithoutOrderResource::collection($this->packages), $this->mergeWhen($this->owner instanceof Order, [ 'order' => New OrderResource($this->owner) ]), 'shipping_transaction' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first()), 'suspended_invoice' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first()), diff --git a/app/Http/Resources/PackageWithoutOrderResource.php b/app/Http/Resources/PackageWithoutOrderResource.php index 4400aa44..fea5500b 100644 --- a/app/Http/Resources/PackageWithoutOrderResource.php +++ b/app/Http/Resources/PackageWithoutOrderResource.php @@ -16,9 +16,6 @@ class PackageWithoutOrderResource extends JsonResource */ public function toArray($request) { - - $originalPackingList = $this->packingList->owner instanceof PackingList ? $this->packingList->owner : $this->packingList; - return [ 'id' => $this->id, 'type' => $this->type, @@ -34,8 +31,8 @@ class PackageWithoutOrderResource extends JsonResource // $this->mergeWhen($originalPackingList->owner instanceof Order, [ // 'order' => New OrderResource($originalPackingList->owner) // ]), - 'container' => new ContainerResource($originalPackingList->containers()->first()), - 'transport' => new TransportResource($originalPackingList->transports()->first()) + // 'container' => new ContainerResource($originalPackingList->containers()->first()), + // 'transport' => new TransportResource($originalPackingList->transports()->first()) ]; } } diff --git a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchPollingComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchPollingComponent.vue index 120fc803..13df803e 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchPollingComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchPollingComponent.vue @@ -42,7 +42,7 @@ --> diff --git a/resources/assets/vue/components/paymentsBilling/elements/SingleAdminPaymentsBillingComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/SingleAdminPaymentsBillingComponent.vue new file mode 100644 index 00000000..825d9a67 --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/elements/SingleAdminPaymentsBillingComponent.vue @@ -0,0 +1,322 @@ + +