diff --git a/app/Http/Controllers/Repuve/MunicipalityController.php b/app/Http/Controllers/Repuve/MunicipalityController.php new file mode 100644 index 0000000..268eab1 --- /dev/null +++ b/app/Http/Controllers/Repuve/MunicipalityController.php @@ -0,0 +1,72 @@ + + * + * @version 1.0.0 + */ +class MunicipalityController extends Controller +{ + public function index() + { + $municipalities = Municipality::all(); + + return ApiResponse::OK->response([ + 'data' => $municipalities, + ]); + } + + public function store(Request $request) + { + $request->validate([ + 'code' => 'required|unique:municipalities,code', + 'name' => 'required|string', + ]); + + $municipality = Municipality::create([ + 'code' => $request->input('code'), + 'name' => $request->input('name'), + ]); + + return ApiResponse::CREATED->response([ + 'data' => $municipality, + ]); + } + + public function update(Request $request, $id) + { + $municipality = Municipality::findOrFail($id); + + $request->validate([ + 'code' => 'required|unique:municipalities,code,' . $municipality->id, + 'name' => 'required|string', + ]); + + $municipality->update([ + 'code' => $request->input('code'), + 'name' => $request->input('name'), + ]); + + return ApiResponse::OK->response([ + 'data' => $municipality, + ]); + } + + public function destroy($id) + { + $municipality = Municipality::findOrFail($id); + $municipality->delete(); + + return ApiResponse::NO_CONTENT->response(); + } +} diff --git a/app/Models/Municipality.php b/app/Models/Municipality.php new file mode 100644 index 0000000..b0d82a4 --- /dev/null +++ b/app/Models/Municipality.php @@ -0,0 +1,22 @@ + + * + * @version 1.0.0 + */ +class Municipality extends Model +{ + protected $fillable = [ + 'code', + 'name', + ]; +} diff --git a/database/migrations/2025_11_03_145945_create_municipalities_table.php b/database/migrations/2025_11_03_145945_create_municipalities_table.php new file mode 100644 index 0000000..1ac9863 --- /dev/null +++ b/database/migrations/2025_11_03_145945_create_municipalities_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('code')->unique(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('municipalities'); + } +}; diff --git a/database/seeders/DevSeeder.php b/database/seeders/DevSeeder.php index 8eed7db..7aabe03 100644 --- a/database/seeders/DevSeeder.php +++ b/database/seeders/DevSeeder.php @@ -25,5 +25,6 @@ public function run(): void $this->call(ModuleSeeder::class); $this->call(CatalogNameImgSeeder::class); + $this->call(MunicipalitySeeder::class); } } diff --git a/database/seeders/MunicipalitySeeder.php b/database/seeders/MunicipalitySeeder.php new file mode 100644 index 0000000..4488406 --- /dev/null +++ b/database/seeders/MunicipalitySeeder.php @@ -0,0 +1,51 @@ + + * + * @version 1.0.0 + */ +class MunicipalitySeeder extends Seeder +{ + /** + * Ejecutar sembrado de base de datos + */ + public function run(): void + { + $municipalities = [ + ['code' => '001', 'name' => 'Balancán'], + ['code' => '002', 'name' => 'Cárdenas'], + ['code' => '003', 'name' => 'Centla'], + ['code' => '004', 'name' => 'Centro'], + ['code' => '005', 'name' => 'Comalcalco'], + ['code' => '006', 'name' => 'Cunduacán'], + ['code' => '007', 'name' => 'Emiliano Zapata'], + ['code' => '008', 'name' => 'Huimanguillo'], + ['code' => '009', 'name' => 'Jalapa'], + ['code' => '010', 'name' => 'Jalpa de Méndez'], + ['code' => '011', 'name' => 'Jonuta'], + ['code' => '012', 'name' => 'Macuspana'], + ['code' => '013', 'name' => 'Nacajuca'], + ['code' => '014', 'name' => 'Paraíso'], + ['code' => '015', 'name' => 'Tacotalpa'], + ['code' => '016', 'name' => 'Teapa'], + ['code' => '017', 'name' => 'Tenosique'], + ]; + + foreach ($municipalities as $municipality) { + Municipality::create($municipality); + } + } +} diff --git a/routes/api.php b/routes/api.php index d644ffd..7a2793e 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,5 +1,7 @@