From 41ddbaef24505b5a1378a027d6ee169c5e7dc142 Mon Sep 17 00:00:00 2001 From: "@jamaludinarifrohman6661" Date: Wed, 12 Feb 2025 16:46:06 +0700 Subject: [PATCH] feature/create-migration-and-crud-api --- app/Http/Controllers/Api/UmkmController.php | 56 +++++++++++++++++++ app/Http/Requests/UmkmRequest.php | 44 +++++++++++++++ app/Http/Resources/UmkmResource.php | 19 +++++++ app/Models/Umkm.php | 48 ++++++++++++++++ .../2025_02_12_083512_create_table_umkm.php | 46 +++++++++++++++ ..._12_091119_create_business_scale_table.php | 29 ++++++++++ ...2_12_091312_create_permit_status_table.php | 29 ++++++++++ database/seeders/BusinessScaleSeeder.php | 22 ++++++++ database/seeders/PermitStatusSeeder.php | 22 ++++++++ routes/api.php | 3 + 10 files changed, 318 insertions(+) create mode 100644 app/Http/Controllers/Api/UmkmController.php create mode 100644 app/Http/Requests/UmkmRequest.php create mode 100644 app/Http/Resources/UmkmResource.php create mode 100644 app/Models/Umkm.php create mode 100644 database/migrations/2025_02_12_083512_create_table_umkm.php create mode 100644 database/migrations/2025_02_12_091119_create_business_scale_table.php create mode 100644 database/migrations/2025_02_12_091312_create_permit_status_table.php create mode 100644 database/seeders/BusinessScaleSeeder.php create mode 100644 database/seeders/PermitStatusSeeder.php diff --git a/app/Http/Controllers/Api/UmkmController.php b/app/Http/Controllers/Api/UmkmController.php new file mode 100644 index 0000000..5f35540 --- /dev/null +++ b/app/Http/Controllers/Api/UmkmController.php @@ -0,0 +1,56 @@ +validated()); + } + + /** + * Display the specified resource. + */ + public function show(Umkm $umkm): Umkm + { + return $umkm; + } + + /** + * Update the specified resource in storage. + */ + public function update(UmkmRequest $request, Umkm $umkm): Umkm + { + $umkm->update($request->validated()); + + return $umkm; + } + + public function destroy(Umkm $umkm): Response + { + $umkm->delete(); + + return response()->noContent(); + } +} diff --git a/app/Http/Requests/UmkmRequest.php b/app/Http/Requests/UmkmRequest.php new file mode 100644 index 0000000..4d9ba65 --- /dev/null +++ b/app/Http/Requests/UmkmRequest.php @@ -0,0 +1,44 @@ +|string> + */ + public function rules(): array + { + return [ + 'business_name' => 'required|string', + 'business_address' => 'required|string', + 'business_desc' => 'required|string', + 'business_contact' => 'required|string', + 'business_id_number' => 'string', + 'business_scale_id' => 'required', + 'owner_id' => 'required|string', + 'owner_name' => 'required|string', + 'owner_address' => 'required|string', + 'owner_contact' => 'required|string', + 'business_type' => 'required|string', + 'business_form' => 'required|string', + 'revenue' => 'required', + 'village_code' => 'required|string', + 'distric_code' => 'required', + 'number_of_employee' => 'required', + 'permit_status_id' => 'required', + ]; + } +} diff --git a/app/Http/Resources/UmkmResource.php b/app/Http/Resources/UmkmResource.php new file mode 100644 index 0000000..fe395d0 --- /dev/null +++ b/app/Http/Resources/UmkmResource.php @@ -0,0 +1,19 @@ + + */ + public function toArray(Request $request): array + { + return parent::toArray($request); + } +} diff --git a/app/Models/Umkm.php b/app/Models/Umkm.php new file mode 100644 index 0000000..e1f18b3 --- /dev/null +++ b/app/Models/Umkm.php @@ -0,0 +1,48 @@ + + */ + protected $fillable = ['business_name', 'business_address', 'business_desc', 'business_contact', 'business_id_number', 'business_scale_id', 'owner_id', 'owner_name', 'owner_address', 'owner_contact', 'business_type', 'business_form', 'revenue', 'village_code', 'distric_code', 'number_of_employee', 'land_area', 'permit_status_id']; + + +} diff --git a/database/migrations/2025_02_12_083512_create_table_umkm.php b/database/migrations/2025_02_12_083512_create_table_umkm.php new file mode 100644 index 0000000..f13ccd8 --- /dev/null +++ b/database/migrations/2025_02_12_083512_create_table_umkm.php @@ -0,0 +1,46 @@ +id(); + $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); + $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); + $table->string('business_name'); + $table->string('business_address'); + $table->string('business_desc'); + $table->string('business_contact'); + $table->string('business_id_number')->nullable(); + $table->integer('business_scale_id'); + $table->string('owner_id'); + $table->string('owner_name'); + $table->string('owner_address'); + $table->string('owner_contact'); + $table->string('business_type'); + $table->string('business_form'); + $table->decimal('revenue'); + $table->string('village_code'); + $table->integer('distric_code'); + $table->integer('number_of_employee'); + $table->float('land_area')->nullable(); + $table->integer('permit_status_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('umkm'); + } +}; diff --git a/database/migrations/2025_02_12_091119_create_business_scale_table.php b/database/migrations/2025_02_12_091119_create_business_scale_table.php new file mode 100644 index 0000000..4d57e52 --- /dev/null +++ b/database/migrations/2025_02_12_091119_create_business_scale_table.php @@ -0,0 +1,29 @@ +id(); + $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); + $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); + $table->string('business_scale'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('business_scale'); + } +}; diff --git a/database/migrations/2025_02_12_091312_create_permit_status_table.php b/database/migrations/2025_02_12_091312_create_permit_status_table.php new file mode 100644 index 0000000..4d81daf --- /dev/null +++ b/database/migrations/2025_02_12_091312_create_permit_status_table.php @@ -0,0 +1,29 @@ +id(); + $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); + $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); + $table->string('permit_status'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('permit_status'); + } +}; diff --git a/database/seeders/BusinessScaleSeeder.php b/database/seeders/BusinessScaleSeeder.php new file mode 100644 index 0000000..1c31b0f --- /dev/null +++ b/database/seeders/BusinessScaleSeeder.php @@ -0,0 +1,22 @@ +insert([ + ['business_scale' => 'Micro'], + ['business_scale' => 'Kecil'], + ['business_scale' => 'Menengah'], + ]); + } +} diff --git a/database/seeders/PermitStatusSeeder.php b/database/seeders/PermitStatusSeeder.php new file mode 100644 index 0000000..90f4c20 --- /dev/null +++ b/database/seeders/PermitStatusSeeder.php @@ -0,0 +1,22 @@ +insert([ + ['permit_status' => 'Not Registered'], + ['permit_status' => 'Registered'], + ['permit_status' => 'Application Process'], + ]); + } +} diff --git a/routes/api.php b/routes/api.php index 16f4c4b..834d932 100644 --- a/routes/api.php +++ b/routes/api.php @@ -45,6 +45,9 @@ Route::group(['middleware' => 'auth:sanctum'], function (){ Route::apiResource('advertisements', AdvertisementController::class); Route::get('/combobox/search-options', [AdvertisementController::class, 'searchOptionsInAdvertisements']); Route::post('/advertisements/import', [AdvertisementController::class, 'importFromFile']); + + // route + Route::apiResource('umkms', UmkmController::class); });