diff --git a/app/Classes/Modules/Addresses/ControllersLogic/ListStatesLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/ListStatesLogic.php
new file mode 100644
index 00000000..3d6c484f
--- /dev/null
+++ b/app/Classes/Modules/Addresses/ControllersLogic/ListStatesLogic.php
@@ -0,0 +1,54 @@
+ 'Retrieved Addresses',
+ 'message' => 'You have successfully retrieved a list of Addresses'
+ ];
+ }
+
+ /** @var ListsStates */
+ private $listStates;
+
+ /**
+ * ListStatesLogic constructor.
+ * @param ListsStates $listStates
+ */
+ public function __construct(ListsStates $listStates)
+ {
+ $this->listStates = $listStates;
+ }
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $query = $this->listStates->execute($this->listStates->deserializeFilters($request->input('filters')));
+
+ return $this->collectionResponse(StateResource::collection($query));
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/Classes/Modules/Addresses/Services/ListsStates.php b/app/Classes/Modules/Addresses/Services/ListsStates.php
new file mode 100644
index 00000000..5591b823
--- /dev/null
+++ b/app/Classes/Modules/Addresses/Services/ListsStates.php
@@ -0,0 +1,33 @@
+repository = $repository;
+ }
+
+
+ /**
+ * @return Builder
+ */
+ function getRepository(): Builder
+ {
+ return $this->repository->newQuery();
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/Addresses/ListStatesController.php b/app/Http/Controllers/Addresses/ListStatesController.php
new file mode 100644
index 00000000..dee2d1c6
--- /dev/null
+++ b/app/Http/Controllers/Addresses/ListStatesController.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Http/Resources/StateResource.php b/app/Http/Resources/StateResource.php
new file mode 100644
index 00000000..b9d71dae
--- /dev/null
+++ b/app/Http/Resources/StateResource.php
@@ -0,0 +1,23 @@
+ $this->id,
+ 'name' => $this->name,
+ 'country' => $this->country,
+ ];
+ }
+}
diff --git a/app/Models/State.php b/app/Models/State.php
index fa920454..3f7036ac 100644
--- a/app/Models/State.php
+++ b/app/Models/State.php
@@ -2,7 +2,7 @@
namespace App\Models;
-use Illuminate\Database\Eloquent\Relations\HasOne;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
@@ -21,10 +21,10 @@ class State extends AbstractModel
protected $dates = ['deleted_at'];
/**
- * @return HasOne
+ * @return BelongsTo
*/
- public function country(): HasOne
+ public function country(): BelongsTo
{
- return $this->hasOne(Country::class, 'country_id', 'id');
+ return $this->belongsTo(Country::class, 'country_id', 'id');
}
}
diff --git a/resources/assets/vue/components/settings/elements/StatesChargesComponent.vue b/resources/assets/vue/components/settings/elements/StatesChargesComponent.vue
new file mode 100644
index 00000000..9e58b60d
--- /dev/null
+++ b/resources/assets/vue/components/settings/elements/StatesChargesComponent.vue
@@ -0,0 +1,77 @@
+
+ {{data.name}}
+