From 2421f6dcf089e3146fa9fba5b3a4bf43d6d84570 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 2 Mar 2023 16:15:51 +0800 Subject: [PATCH 1/2] allow user to edit billing address --- .../CreateBillingAddressLogic.php | 86 ++++++++++++ .../CreateBillingAddressController.php | 20 +++ .../sections/BillingAddressListComponent.vue | 122 ++++++++++++++++++ .../CustomerProfileSectionComponent.vue | 6 + routes/address.php | 2 + 5 files changed, 236 insertions(+) create mode 100644 app/Classes/Modules/Addresses/ControllersLogic/CreateBillingAddressLogic.php create mode 100644 app/Http/Controllers/Addresses/CreateBillingAddressController.php create mode 100644 resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue diff --git a/app/Classes/Modules/Addresses/ControllersLogic/CreateBillingAddressLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/CreateBillingAddressLogic.php new file mode 100644 index 00000000..a82e4b2b --- /dev/null +++ b/app/Classes/Modules/Addresses/ControllersLogic/CreateBillingAddressLogic.php @@ -0,0 +1,86 @@ + 'Created Billing Address', + 'message' => 'You have successfully created a new Billing Address' + ]; + } + + /** @var CanCreateAddress */ + private $canCreateAddress; + + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + + /** @var CreatesAddress */ + private $createsAddress; + + /** @var FetchesAddress */ + private $fetchesAddress; + + /** + * CreateAddressLogic constructor. + * @param CanCreateAddress $canCreateAddress + * @param FetchesCompanyModule $fetchesCompanyModule + * @param CreatesAddress $createsAddress + * @param FetchesAddress $fetchesAddress + */ + public function __construct(CanCreateAddress $canCreateAddress, FetchesCompanyModule $fetchesCompanyModule, CreatesAddress $createsAddress, FetchesAddress $fetchesAddress) + { + $this->canCreateAddress = $canCreateAddress; + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->createsAddress = $createsAddress; + $this->fetchesAddress = $fetchesAddress; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $companyModule = $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]); + + $address = $this->fetchesAddress->execute(['id' => $request->input('billing_address_id')]); + + if ($address->type !== AddressType::BILLING || $address !== $companyModule->addresses->where('type', AddressType::BILLING)->first()) { + // delete all current billing address + Address::where('owner_type', CompanyModule::class)->where('owner_id', $request->input('company_module_id'))->where('type', AddressType::BILLING)->delete(); + + // create addrress + $billingAddress = new AddressObject($address->street_one, $address->street_two, $address->country_id, $address->state_id, $address->district_id, $address->postcode, AddressType::BILLING, ApprovalStatus::APPROVED, $address->reference); + $this->canCreateAddress->passes($billingAddress); + $this->createsAddress->execute($companyModule, $billingAddress); + } + + return $this->resourceResponse(new AddressResource($address)); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Addresses/CreateBillingAddressController.php b/app/Http/Controllers/Addresses/CreateBillingAddressController.php new file mode 100644 index 00000000..866cb842 --- /dev/null +++ b/app/Http/Controllers/Addresses/CreateBillingAddressController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue b/resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue new file mode 100644 index 00000000..89e5fbdd --- /dev/null +++ b/resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue @@ -0,0 +1,122 @@ + + + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue index 31189028..f787c5f3 100644 --- a/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue +++ b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue @@ -58,6 +58,12 @@ +
+
Change Billing Address
+
+ + + diff --git a/routes/address.php b/routes/address.php index 96cfe8ab..8b166712 100644 --- a/routes/address.php +++ b/routes/address.php @@ -14,6 +14,8 @@ Route::group(['prefix' => 'address', 'as' => 'address.', 'namespace' => 'Address Route::get('state/list', 'ListStatesController@list')->name('state.list'); Route::post('/create', 'CreateAddressController@create')->name('create'); + + Route::post('billingAddress/create', 'CreateBillingAddressController@create')->name('billingAddress.create'); Route::put('/update/{id}', 'UpdateAddressController@update')->name('update'); From 0802198c971a221a0c6932cbfd14f4dccc101d3f Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 2 Mar 2023 16:25:51 +0800 Subject: [PATCH 2/2] update allow user to edit billing address --- ...vue => BillingAddressSectionComponent.vue} | 1 + .../CustomerProfileSectionComponent.vue | 2 +- .../forms/BillingAddressFormComponent.vue | 66 ------------------- 3 files changed, 2 insertions(+), 67 deletions(-) rename resources/assets/vue/components/addresses/sections/{BillingAddressListComponent.vue => BillingAddressSectionComponent.vue} (99%) delete mode 100644 resources/assets/vue/components/paymentsBilling/forms/BillingAddressFormComponent.vue diff --git a/resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue b/resources/assets/vue/components/addresses/sections/BillingAddressSectionComponent.vue similarity index 99% rename from resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue rename to resources/assets/vue/components/addresses/sections/BillingAddressSectionComponent.vue index 89e5fbdd..fef628a3 100644 --- a/resources/assets/vue/components/addresses/sections/BillingAddressListComponent.vue +++ b/resources/assets/vue/components/addresses/sections/BillingAddressSectionComponent.vue @@ -116,6 +116,7 @@ }, successHandler(response){ this.closeModal(); + location.reload(); }, } } diff --git a/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue index f787c5f3..9f9dc3e0 100644 --- a/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue +++ b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue @@ -62,7 +62,7 @@
Change Billing Address
- + diff --git a/resources/assets/vue/components/paymentsBilling/forms/BillingAddressFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/BillingAddressFormComponent.vue deleted file mode 100644 index c21a88b4..00000000 --- a/resources/assets/vue/components/paymentsBilling/forms/BillingAddressFormComponent.vue +++ /dev/null @@ -1,66 +0,0 @@ - - \ No newline at end of file