From a5c652ef91f3c97d707a282ba1579da405513e53 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Fri, 10 Sep 2021 23:55:20 +0800 Subject: [PATCH] fix address resource loop --- app/Http/Resources/AddressResource.php | 11 + app/Http/Resources/OrderResource.php | 115 ++++----- .../elements/AddressVerificationComponent.vue | 228 +++++++++--------- 3 files changed, 185 insertions(+), 169 deletions(-) diff --git a/app/Http/Resources/AddressResource.php b/app/Http/Resources/AddressResource.php index 4c6b8a39..6f6a6237 100644 --- a/app/Http/Resources/AddressResource.php +++ b/app/Http/Resources/AddressResource.php @@ -2,6 +2,7 @@ namespace App\Http\Resources; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Models\Order; use Illuminate\Http\Resources\Json\JsonResource; @@ -15,6 +16,7 @@ class AddressResource extends JsonResource */ public function toArray($request) { + return [ 'id' => $this->id, 'reference' => $this->reference, @@ -25,6 +27,15 @@ class AddressResource extends JsonResource 'post_code' => $this->postcode, 'country' => $this->country, 'default' => (int) $this->default, + 'status' => (int) $this->status, + $this->mergeWhen($this->relationLoaded('owner'), [ + 'owner' => $this->when($this->owner instanceof Order, [ + 'reference' => $this->owner->reference, + 'company_module' => new CompanyModuleResource($this->owner->companyModule), + 'address' => new AddressResource($this->owner->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()) + ]) + ]) + ]; } } diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 390ca1ef..e3a66981 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -19,66 +19,71 @@ class OrderResource extends JsonResource */ public function toArray($request) { - return [ - 'id' => $this->id, - 'reference' => $this->reference, - 'reference_contract' => (int) $this->type, - 'type' => (int) $this->type, - 'status' => (int) $this->status, - 'company_module' => new CompanyModuleResource($this->companyModule), - 'warehouse' => new CompanyModuleResource($this->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee), - 'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()), - 'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()), - $this->mergeWhen($this->relationLoaded('parcels'), [ - 'origin_warehouse_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ - return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereDoesntHave('containers', function($query) { - return $query->whereHas('transports', function($query){ - return $query->whereHas('schedules', function($query){ + try { + return [ + 'id' => $this->id, + 'reference' => $this->reference, + 'reference_contract' => (int) $this->type, + 'type' => (int) $this->type, + 'status' => (int) $this->status, + 'company_module' => new CompanyModuleResource($this->companyModule), + 'warehouse' => new CompanyModuleResource($this->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee), + 'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()), + 'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()), + $this->mergeWhen($this->relationLoaded('parcels'), [ + 'origin_warehouse_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereDoesntHave('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + }); + })->get()), + 'in_transit_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + }); + })->get()), + 'destination_warehouse_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->where('type', '=', TransportType::SEA)->where('status', '=', ApprovalStatus::COMPLETED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + })->whereDoesntHave('transports', function($query){ + return $query->where('type', '=', TransportType::LAND)->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ return $query->where('etd', '<', Carbon::now()); }); }); - }); - })->get()), - 'in_transit_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ - return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { - return $query->whereHas('transports', function($query){ - return $query->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ + })->get()), + 'delivered_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->where('type', '=', TransportType::SEA)->where('status', '=', ApprovalStatus::COMPLETED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + })->whereHas('transports', function($query){ + return $query->where('type', '=', TransportType::LAND)->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ return $query->where('etd', '<', Carbon::now()); }); }); - }); - })->get()), - 'destination_warehouse_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ - return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { - return $query->whereHas('transports', function($query){ - return $query->where('type', '=', TransportType::SEA)->where('status', '=', ApprovalStatus::COMPLETED)->whereHas('schedules', function($query){ - return $query->where('etd', '<', Carbon::now()); - }); - }); - })->whereDoesntHave('transports', function($query){ - return $query->where('type', '=', TransportType::LAND)->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ - return $query->where('etd', '<', Carbon::now()); - }); - }); - })->get()), - 'delivered_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ - return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { - return $query->whereHas('transports', function($query){ - return $query->where('type', '=', TransportType::SEA)->where('status', '=', ApprovalStatus::COMPLETED)->whereHas('schedules', function($query){ - return $query->where('etd', '<', Carbon::now()); - }); - }); - })->whereHas('transports', function($query){ - return $query->where('type', '=', TransportType::LAND)->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ - return $query->where('etd', '<', Carbon::now()); - }); - }); - })->get()), - 'parcels' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ - return $query->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST); - })->get()), - ]), - 'created_at' => $this->created_at->format('d-m-Y') - ]; + })->get()), + 'parcels' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST); + })->get()), + ]), + 'created_at' => $this->created_at->format('d-m-Y') + ]; + } catch (\Exception $exception){ + $this->id; + } + } } diff --git a/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue b/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue index ab58d626..5c5e1cbe 100644 --- a/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue +++ b/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue @@ -2,120 +2,120 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+
+ +
+
+
+
+
+
+
Original Address
+
+
+
+
+
{{item.owner.address.street_one+' '+(item.owner.address.street_two ? item.owner.address.street_two : '')+', '+ item.owner.address.district.name+', '+item.owner.address.post_code+' '+item.owner.address.state.name+', '+item.owner.address.country.name}}
+
+
+
+
+
+
+
+
+
New Address
+
+
+
+
+
{{item.street_one+' '+(item.street_two ? item.street_two : '')+', '+ item.district.name+', '+item.post_code+' '+item.state.name+', '+item.country.name}}
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
Reject Address Change Request
+
Are you sure you want to reject order delivery address change request?
+
+
+
+
+
Cancel
+
+
+
Reject
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
Approve Address Change Request
+
Are you sure you want to approve this order delivery address change request?
+
+
+
+
+
Cancel
+
+
+
Approve
+
+
+
+
+
+
+
+
+
+
+
+
+
+