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 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(), [])), diff --git a/resources/assets/vue/components/address/elements/AddressListComponent.vue b/resources/assets/vue/components/address/elements/AddressListComponent.vue new file mode 100644 index 00000000..b4882ab5 --- /dev/null +++ b/resources/assets/vue/components/address/elements/AddressListComponent.vue @@ -0,0 +1,197 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/address/forms/AddressFormComponent.vue b/resources/assets/vue/components/address/forms/AddressFormComponent.vue index e3508e01..809165a1 100644 --- a/resources/assets/vue/components/address/forms/AddressFormComponent.vue +++ b/resources/assets/vue/components/address/forms/AddressFormComponent.vue @@ -54,7 +54,11 @@ id: { type: Number, required: true - } + }, + type: { + type: Number, + default: 1 + }, }, watch: { 'id': function() { @@ -85,8 +89,9 @@ submitForm(){ this.submit((this.route('api.address.create')), 'post', 'bookingDetailSection', true, true) }, - successHandler(){ - this.updateList() + successHandler(response){ + this.type !== 2 ? this.$emit('updateDefaultAddress', response.payload.data) : this.$emit('createdAddress', response.payload.data); + this.resetForm(); } } } diff --git a/resources/assets/vue/components/address/forms/SetDefaultBillingAddressComponent.vue b/resources/assets/vue/components/address/forms/SetDefaultBillingAddressComponent.vue new file mode 100644 index 00000000..6d5b457e --- /dev/null +++ b/resources/assets/vue/components/address/forms/SetDefaultBillingAddressComponent.vue @@ -0,0 +1,25 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue index 0ed00850..d995c1ee 100644 --- a/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/BookingDetailsSectionComponent.vue @@ -1,5 +1,5 @@