From cdb54c67fc00530b225977762b0fef3f98ae2b30 Mon Sep 17 00:00:00 2001 From: weichien Date: Fri, 19 Mar 2021 07:07:23 +0800 Subject: [PATCH] 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