diff --git a/app/Classes/General/Eloquent/Filters/WithOwner.php b/app/Classes/General/Eloquent/Filters/WithOwner.php new file mode 100644 index 00000000..7d31691e --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WithOwner.php @@ -0,0 +1,20 @@ +with('owner'); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/ControllersLogic/ApproveChangeOrderAddressLogic.php b/app/Classes/Modules/Orders/ControllersLogic/ApproveChangeOrderAddressLogic.php index ff78145e..0b469fd1 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/ApproveChangeOrderAddressLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/ApproveChangeOrderAddressLogic.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\Orders\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Orders\Processors\ApproveChangeOrderAddressProcessor; +use App\Http\Resources\AddressResource; use App\Http\Resources\OrderResource; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; @@ -36,8 +37,8 @@ class ApproveChangeOrderAddressLogic extends AbstractControllerLogic public function logic(Request $request): JsonResponse { - $order = $this->approveChangeOrderAddressProcessor->execute($request); + $address = $this->approveChangeOrderAddressProcessor->execute($request); - return $this->resourceResponse(new OrderResource($order)); + return $this->resourceResponse(new AddressResource($address)); } } diff --git a/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php b/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php index 423d8ce5..fbd84f90 100644 --- a/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php +++ b/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php @@ -2,9 +2,8 @@ namespace App\Classes\Modules\Orders\Processors; +use App\Classes\Modules\Addresses\Services\FetchesAddress; use App\Classes\Modules\Orders\Standards\Rules\CanApproveChangeOrderAddress; -use App\Classes\Modules\Orders\Services\FetchesOrder; -use App\Classes\Modules\Addresses\Services\DeletesAddress; use App\Classes\Modules\Orders\Services\UpdatesOrdersAddress; use App\Classes\ValueObjects\Constants\ApprovalStatus; @@ -15,39 +14,48 @@ class ApproveChangeOrderAddressProcessor /** @var CanApproveChangeOrderAddress */ private $canApproveChangeOrderAddress; - /** @var FetchesOrder */ - private $fetchesOrder; + /** @var FetchesAddress */ + private $fetchesAddress; /** @var UpdatesOrdersAddress */ private $updatesOrdersAddress; - /** @var DeletesAddress */ - private $deletesAddress; - /** - * CreateOrderProcessor constructor. + * ApproveChangeOrderAddressProcessor constructor. * @param CanApproveChangeOrderAddress $canApproveChangeOrderAddress - * @param FetchesOrder $fetchesOrder - * @param DeletesAddress $deletesAddress + * @param FetchesAddress $fetchesAddress * @param UpdatesOrdersAddress $updatesOrdersAddress */ - public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesOrder $fetchesOrder, DeletesAddress $deletesAddress, UpdatesOrdersAddress $updatesOrdersAddress) + public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesAddress $fetchesAddress, UpdatesOrdersAddress $updatesOrdersAddress) { $this->canApproveChangeOrderAddress = $canApproveChangeOrderAddress; - $this->fetchesOrder = $fetchesOrder; - $this->deletesAddress = $deletesAddress; + $this->fetchesAddress = $fetchesAddress; $this->updatesOrdersAddress = $updatesOrdersAddress; } + /** + * @param Request $request + * @return mixed + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ public function execute(Request $request) { + + $status = (int) $request->route('status'); + $this->canApproveChangeOrderAddress->passes(); - $order = $this->fetchesOrder->execute(['id' => $request->get('order_id')]); - $this->deletesAddress->execute($order->addressesApproved->first()); - $this->updatesOrdersAddress->execute($order->addressesPendingVerification->first(), ApprovalStatus::APPROVED); + $address = $this->fetchesAddress->execute(['id' => $request->route('id')]); - return $order; + if($status === ApprovalStatus::APPROVED){ + $address->owner->addresses()->update(['status' => ApprovalStatus::EXPIRED]); + } + + $this->updatesOrdersAddress->execute($address, $status); + + return $address; } } diff --git a/app/Classes/Modules/Orders/Services/UpdatesOrdersAddress.php b/app/Classes/Modules/Orders/Services/UpdatesOrdersAddress.php index 3ad6295a..352ce64d 100644 --- a/app/Classes/Modules/Orders/Services/UpdatesOrdersAddress.php +++ b/app/Classes/Modules/Orders/Services/UpdatesOrdersAddress.php @@ -10,7 +10,8 @@ class UpdatesOrdersAddress extends AbstractUpdateRecord /** * @param Address $address * @param int $type - * @return void + * @return \Illuminate\Database\Eloquent\Model + * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute(Address $address, int $type) { diff --git a/app/Http/Resources/AddressResource.php b/app/Http/Resources/AddressResource.php index 3b4c465b..b6903599 100644 --- a/app/Http/Resources/AddressResource.php +++ b/app/Http/Resources/AddressResource.php @@ -23,7 +23,8 @@ class AddressResource extends JsonResource 'state' => $this->state, 'post_code' => $this->postcode, 'country' => $this->country, - 'default' => (int) $this->default + 'default' => (int) $this->default, + 'owner' => new OrderResource($this->whenLoaded('owner')) ]; } } diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 91e1c4b5..390ca1ef 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -27,7 +27,7 @@ class OrderResource extends JsonResource '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()->first()), + '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){ diff --git a/resources/assets/sass/modules/_modals.scss b/resources/assets/sass/modules/_modals.scss index 73272c57..1bafb1cd 100644 --- a/resources/assets/sass/modules/_modals.scss +++ b/resources/assets/sass/modules/_modals.scss @@ -269,7 +269,7 @@ body.modal-open { box-shadow: none; } .modal-dialog { - width: 600px; + width: 1140px; } .modal-sm { width: 300px; diff --git a/resources/assets/vue/components/address/forms/DeleteAddressFormComponent.vue b/resources/assets/vue/components/address/forms/DeleteAddressFormComponent.vue deleted file mode 100644 index 9fbc94a1..00000000 --- a/resources/assets/vue/components/address/forms/DeleteAddressFormComponent.vue +++ /dev/null @@ -1,33 +0,0 @@ - - \ No newline at end of file diff --git a/resources/assets/vue/components/address/elements/AddressComponent.vue b/resources/assets/vue/components/addresses/elements/AddressComponent.vue similarity index 100% rename from resources/assets/vue/components/address/elements/AddressComponent.vue rename to resources/assets/vue/components/addresses/elements/AddressComponent.vue diff --git a/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue b/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue new file mode 100644 index 00000000..5c5e1cbe --- /dev/null +++ b/resources/assets/vue/components/addresses/elements/AddressVerificationComponent.vue @@ -0,0 +1,135 @@ + + + diff --git a/resources/assets/vue/components/addresses/elements/SelectAddressComponent.vue b/resources/assets/vue/components/addresses/elements/SelectAddressComponent.vue index 587f2394..d3e8daf2 100644 --- a/resources/assets/vue/components/addresses/elements/SelectAddressComponent.vue +++ b/resources/assets/vue/components/addresses/elements/SelectAddressComponent.vue @@ -5,10 +5,10 @@
-
+
{{item.reference}}
-
+
{{item.street_one}} {{item.street_two}}, {{item.district.name}}, {{item.post_code}} {{item.state.name}}, {{item.country.name}}
diff --git a/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue b/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue index 3999ce1d..450fe5aa 100644 --- a/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue +++ b/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue @@ -20,13 +20,13 @@
-
+
-
+
diff --git a/resources/assets/vue/components/address/forms/NewEditAddressFormComponent.vue b/resources/assets/vue/components/addresses/forms/NewEditAddressFormComponent.vue similarity index 100% rename from resources/assets/vue/components/address/forms/NewEditAddressFormComponent.vue rename to resources/assets/vue/components/addresses/forms/NewEditAddressFormComponent.vue diff --git a/resources/assets/vue/components/address/forms/SetDefaultAddressFormComponent.vue b/resources/assets/vue/components/addresses/forms/SetDefaultAddressFormComponent.vue similarity index 100% rename from resources/assets/vue/components/address/forms/SetDefaultAddressFormComponent.vue rename to resources/assets/vue/components/addresses/forms/SetDefaultAddressFormComponent.vue diff --git a/resources/assets/vue/components/address/sections/AddressListComponent.vue b/resources/assets/vue/components/addresses/sections/AddressListComponent.vue similarity index 100% rename from resources/assets/vue/components/address/sections/AddressListComponent.vue rename to resources/assets/vue/components/addresses/sections/AddressListComponent.vue diff --git a/resources/assets/vue/components/orders/elements/ChangeAddressComponent.vue b/resources/assets/vue/components/orders/elements/ChangeAddressComponent.vue deleted file mode 100644 index dc82ede2..00000000 --- a/resources/assets/vue/components/orders/elements/ChangeAddressComponent.vue +++ /dev/null @@ -1,22 +0,0 @@ - - diff --git a/resources/assets/vue/components/orders/forms/ChangeOrderAddressFormComponent.vue b/resources/assets/vue/components/orders/forms/ChangeOrderAddressFormComponent.vue index 8e6c3d7b..b138b680 100644 --- a/resources/assets/vue/components/orders/forms/ChangeOrderAddressFormComponent.vue +++ b/resources/assets/vue/components/orders/forms/ChangeOrderAddressFormComponent.vue @@ -1,15 +1,16 @@