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/BillingAddressSectionComponent.vue b/resources/assets/vue/components/addresses/sections/BillingAddressSectionComponent.vue new file mode 100644 index 00000000..fef628a3 --- /dev/null +++ b/resources/assets/vue/components/addresses/sections/BillingAddressSectionComponent.vue @@ -0,0 +1,123 @@ + + + + \ 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..9f9dc3e0 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/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 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');