From cdb54c67fc00530b225977762b0fef3f98ae2b30 Mon Sep 17 00:00:00 2001 From: weichien Date: Fri, 19 Mar 2021 07:07:23 +0800 Subject: [PATCH 01/20] feat: [BE] Set a address as default billing address. --- .../SetAddressToDefaultLogic.php | 70 +++++++++++++++++++ .../Services/ResetsAddressesDefault.php | 19 +++++ .../Services/SetsAddressToDefault.php | 22 ++++++ .../SetAddressToDefaultController.php | 20 ++++++ 4 files changed, 131 insertions(+) create mode 100644 app/Classes/Modules/Addresses/ControllersLogic/SetAddressToDefaultLogic.php create mode 100644 app/Classes/Modules/Addresses/Services/ResetsAddressesDefault.php create mode 100644 app/Classes/Modules/Addresses/Services/SetsAddressToDefault.php create mode 100644 app/Http/Controllers/Addresses/SetAddressToDefaultController.php diff --git a/app/Classes/Modules/Addresses/ControllersLogic/SetAddressToDefaultLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/SetAddressToDefaultLogic.php new file mode 100644 index 00000000..2f94809b --- /dev/null +++ b/app/Classes/Modules/Addresses/ControllersLogic/SetAddressToDefaultLogic.php @@ -0,0 +1,70 @@ + 'Updated Address', + 'message' => 'You have successfully set the default Address' + ]; + } + + /** @var ResetsAddressesDefault */ + private $resetsAddressesDefault; + + /** @var FetchesAddress */ + private $fetchesAddress; + + /** @var SetsAddressToDefault*/ + private $setsAddressToDefault; + + /** + * SetAddressToDefaultLogic constructor. + * @param ResetsAddressesDefault $resetsAddressesDefault + * @param FetchesAddress $fetchesAddress + * @param SetsAddressToDefault $setsAddressToDefault + */ + public function __construct(ResetsAddressesDefault $resetsAddressesDefault, FetchesAddress $fetchesAddress, SetsAddressToDefault $setsAddressToDefault) + { + $this->resetsAddressesDefault = $resetsAddressesDefault; + $this->fetchesAddress = $fetchesAddress; + $this->setsAddressToDefault = $setsAddressToDefault; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request): JsonResponse + { + + /** @var Address $address */ + + $address = $this->fetchesAddress->execute(['id' => $request->route('id')]); + + $this->resetsAddressesDefault->execute($address); + + return $this->resourceResponse(new AddressResource($this->setsAddressToDefault->execute($address))); + } +} diff --git a/app/Classes/Modules/Addresses/Services/ResetsAddressesDefault.php b/app/Classes/Modules/Addresses/Services/ResetsAddressesDefault.php new file mode 100644 index 00000000..b9f6346e --- /dev/null +++ b/app/Classes/Modules/Addresses/Services/ResetsAddressesDefault.php @@ -0,0 +1,19 @@ +company->addresses()->update(['billing' => false]); + } +} diff --git a/app/Classes/Modules/Addresses/Services/SetsAddressToDefault.php b/app/Classes/Modules/Addresses/Services/SetsAddressToDefault.php new file mode 100644 index 00000000..07d2a2fc --- /dev/null +++ b/app/Classes/Modules/Addresses/Services/SetsAddressToDefault.php @@ -0,0 +1,22 @@ +billing = true; + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Addresses/SetAddressToDefaultController.php b/app/Http/Controllers/Addresses/SetAddressToDefaultController.php new file mode 100644 index 00000000..4dc7115f --- /dev/null +++ b/app/Http/Controllers/Addresses/SetAddressToDefaultController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file From 5c31f067a2740af614e37fe45507b1bfdfc18a86 Mon Sep 17 00:00:00 2001 From: weichien Date: Fri, 19 Mar 2021 07:10:32 +0800 Subject: [PATCH 02/20] fix: [BE] return default billing address to billing detail on MyTransfer. --- app/Http/Resources/CompanyResource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php index 1cc465aa..3893e5dc 100644 --- a/app/Http/Resources/CompanyResource.php +++ b/app/Http/Resources/CompanyResource.php @@ -29,7 +29,7 @@ class CompanyResource extends JsonResource 'business_type' => (int) $this->business_type, 'status' => (int) $this->status, 'contact' => new ContactResource ($this->when($this->has('contacts'), $this->contacts->first())), - 'address' => new AddressResource($this->when($this->has('addresses'), $this->addresses->first())), + 'address' => new AddressResource($this->when($this->has('addresses'), $this->addresses->where('billing', true)->first())), 'employee' => new UserResource($this->employees->first()), 'identification' => new DocumentResource($this->whenLoaded('documents', $this->documents->whereIn('document_type', DocumentType::IDENTIFICATION_DOCUMENTS)->first())), 'bookings' => BookingResource::collection($this->whenLoaded('bookings', $this->bookings()->orderBy('id', 'DESC')->get(), [])), From 8fc1e6a9e79951795d89062ca237940890de60f5 Mon Sep 17 00:00:00 2001 From: weichien Date: Fri, 19 Mar 2021 07:13:19 +0800 Subject: [PATCH 03/20] feat: [BE] add route to update default billing address --- routes/crud.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routes/crud.php b/routes/crud.php index cdc418e2..f01b72f7 100644 --- a/routes/crud.php +++ b/routes/crud.php @@ -12,6 +12,8 @@ Route::group(['prefix' => 'address', 'as' => 'address.', 'namespace' => 'Address Route::put('/update/{id}', 'UpdateAddressController@update')->name('update'); + Route::put('/{id}/default', 'SetAddressToDefaultController@update')->name('default'); + Route::delete('/delete/{id}', 'DeleteAddressController@destroy')->name('delete'); }); From 23741c1b8c769790e95ebc66ccb83f5b225c32fa Mon Sep 17 00:00:00 2001 From: weichien Date: Fri, 19 Mar 2021 10:13:45 +0800 Subject: [PATCH 04/20] feat: [FE] add new component to manage billing address. --- .../sections/BookingDetailsSectionComponent.vue | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue index 67de1163..0cba9c2f 100644 --- a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue @@ -1,5 +1,5 @@