From f820ba578f72b9622c6660c79b83b3d0d9996b10 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Fri, 24 Apr 2026 17:48:41 +0800 Subject: [PATCH] Fx to resolve a 504 Endpoint request timed out error on loading packages details on order page --- ...tchOrderPackagesOriginWarehouseV2Logic.php | 59 +++++++++ .../Orders/FetchOrderPackagesV2Controller.php | 16 ++- .../OrderPackagesOriginWarehouseResource.php | 30 +++++ .../OrderPackagesReceivedResource.php | 2 - .../elements/OrderPackagesV2Component.vue | 122 ++++++++++++++++++ ...rderPackagesV2OriginWarehouseComponent.vue | 83 ++++++++++++ .../OrderPackageReceivedSectionComponent.vue | 2 +- routes/order.php | 1 + 8 files changed, 308 insertions(+), 7 deletions(-) create mode 100644 app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesOriginWarehouseV2Logic.php create mode 100644 app/Http/Resources/OrderPackagesOriginWarehouseResource.php create mode 100644 resources/assets/vue/components/orders/elements/OrderPackagesV2Component.vue create mode 100644 resources/assets/vue/components/orders/elements/OrderPackagesV2OriginWarehouseComponent.vue diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesOriginWarehouseV2Logic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesOriginWarehouseV2Logic.php new file mode 100644 index 00000000..d542d232 --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesOriginWarehouseV2Logic.php @@ -0,0 +1,59 @@ + 'Retrieved Order Packages Origin Warehouse', + 'message' => 'You have successfully retrieved an order packages' + ]; + } + + /** @var CanFetchOrder */ + private $canFetchOrder; + + /** @var FetchesOrder */ + private $fetchesOrder; + + /** + * FetchOrderPackagesOriginWarehouseV2Logic constructor. + * @param CanFetchOrder $canFetchOrder + * @param FetchesOrder $fetchesOrder + */ + public function __construct(CanFetchOrder $canFetchOrder, FetchesOrder $fetchesOrder) + { + $this->canFetchOrder = $canFetchOrder; + $this->fetchesOrder = $fetchesOrder; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchOrder->passes(); + + $query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_packing_lists' => true]); + + //Can refer FetchOrderPackagesLogic for different type of OrderPackages Resources + return $this->resourceResponse(new OrderPackagesOriginWarehouseResource($query)); + } + +} diff --git a/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php b/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php index 819c5d16..cefd55de 100644 --- a/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php +++ b/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php @@ -4,12 +4,21 @@ namespace App\Http\Controllers\Orders; use App\Classes\Modules\Orders\ControllersLogic\FetchOrderPackagesReceivedV2Logic; use App\Classes\Modules\Orders\ControllersLogic\FetchOrderPackagesV2Logic; +use App\Classes\Modules\Orders\ControllersLogic\FetchOrderPackagesOriginWarehouseV2Logic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class FetchOrderPackagesV2Controller { - //cief todo: 150 - fetchOriginWarehouse + /** + * @param Request $request + * @param FetchOrderPackagesV2Logic $logic + * @return JsonResponse + */ + public function fetch(Request $request, FetchOrderPackagesV2Logic $logic): JsonResponse + { + return $logic->execute($request); + } /** * @param Request $request @@ -21,13 +30,12 @@ class FetchOrderPackagesV2Controller return $logic->execute($request); } - /** * @param Request $request - * @param FetchOrderPackagesV2Logic $logic + * @param FetchOrderPackagesOriginWarehouseV2Logic $logic * @return JsonResponse */ - public function fetch(Request $request, FetchOrderPackagesV2Logic $logic): JsonResponse + public function fetchOriginWarehouse(Request $request, FetchOrderPackagesOriginWarehouseV2Logic $logic): JsonResponse { return $logic->execute($request); } diff --git a/app/Http/Resources/OrderPackagesOriginWarehouseResource.php b/app/Http/Resources/OrderPackagesOriginWarehouseResource.php new file mode 100644 index 00000000..fa508bb4 --- /dev/null +++ b/app/Http/Resources/OrderPackagesOriginWarehouseResource.php @@ -0,0 +1,30 @@ +packingLists()->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('packages')->get(); //$this->originWarehousePackages()->get(); + + return [ + 'id' => $this->id, + 'reference_contract' => (int) $this->type, + 'type' => (int) $this->type, + 'status' => (int) $this->status, + 'origin_warehouse_packages' => PackingListForPackagesReceivedResource::collection($origin_warehouse_packages), + 'created_at' => $this->created_at->format('d-m-Y') + ]; + } +} diff --git a/app/Http/Resources/OrderPackagesReceivedResource.php b/app/Http/Resources/OrderPackagesReceivedResource.php index 00c2cc97..500fbb10 100644 --- a/app/Http/Resources/OrderPackagesReceivedResource.php +++ b/app/Http/Resources/OrderPackagesReceivedResource.php @@ -17,7 +17,6 @@ class OrderPackagesReceivedResource extends JsonResource public function toArray($request) { $received_packages = $this->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get(); - //$origin_warehouse_packages = $this->packingLists()->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('packages')->get(); //$this->originWarehousePackages()->get(); //cief todo: 150 return [ 'id' => $this->id, @@ -26,7 +25,6 @@ class OrderPackagesReceivedResource extends JsonResource 'type' => (int) $this->type, 'status' => (int) $this->status, 'received_packages' => PackingListForPackagesReceivedResource::collection($received_packages), - // 'origin_warehouse_packages' => PackingListForPackagesReceivedResource::collection($origin_warehouse_packages), 'created_at' => $this->created_at->format('d-m-Y') ]; } diff --git a/resources/assets/vue/components/orders/elements/OrderPackagesV2Component.vue b/resources/assets/vue/components/orders/elements/OrderPackagesV2Component.vue new file mode 100644 index 00000000..c68a7190 --- /dev/null +++ b/resources/assets/vue/components/orders/elements/OrderPackagesV2Component.vue @@ -0,0 +1,122 @@ + + diff --git a/resources/assets/vue/components/orders/elements/OrderPackagesV2OriginWarehouseComponent.vue b/resources/assets/vue/components/orders/elements/OrderPackagesV2OriginWarehouseComponent.vue new file mode 100644 index 00000000..dbcf7a9e --- /dev/null +++ b/resources/assets/vue/components/orders/elements/OrderPackagesV2OriginWarehouseComponent.vue @@ -0,0 +1,83 @@ + + diff --git a/resources/assets/vue/components/orders/sections/OrderPackageReceivedSectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderPackageReceivedSectionComponent.vue index e97ab822..64162446 100644 --- a/resources/assets/vue/components/orders/sections/OrderPackageReceivedSectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderPackageReceivedSectionComponent.vue @@ -19,7 +19,7 @@
- +
diff --git a/routes/order.php b/routes/order.php index 8b28f635..31a3607f 100644 --- a/routes/order.php +++ b/routes/order.php @@ -44,6 +44,7 @@ Route::group(['prefix' => 'order', 'as' => 'order.'], function () { Route::get('/{id}/shipping-cost', [ShippingCostController::class, 'calculate'])->name('shipping.cost'); Route::get('/packages/{id}', [FetchOrderPackagesController::class, 'fetch'])->name('packages'); Route::get('/v2/packages/received/{id}', [FetchOrderPackagesV2Controller::class, 'fetchReceived'])->name('packages.received.v2'); + Route::get('/v2/packages/origin-warehouse/{id}', [FetchOrderPackagesV2Controller::class, 'fetchOriginWarehouse'])->name('packages.origin_warehouse.v2'); Route::get('/v2/packages/{id}', [FetchOrderPackagesV2Controller::class, 'fetch'])->name('packages.v2'); Route::post('/{id}/supplier-tax-rebate/create', [CreateSupplierTaxRebateController::class, 'create'])->name('tax_rebate.create');