From d746f53941d3ab6ffd4bf649c6e3600339a95aca Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 30 Jan 2025 16:34:37 +0700 Subject: [PATCH] feat(jenis-legalitas-jaminan): tambahkan dukungan untuk custom fields - Menambahkan kolom 'custom_fields' pada tabel 'jenis_legalitas_jaminan'. - Memperbarui model untuk mengizinkan pengisian 'custom_fields' sebagai array. - Memperbarui request untuk validasi 'custom_fields' sebagai array. - Memperbarui controller untuk mengambil dan mengirimkan custom fields saat membuat dan mengedit jenis legalitas jaminan. --- .../JenisLegalitasJaminanController.php | 7 +- .../Requests/JenisLegalitasJaminanRequest.php | 7 + app/Models/JenisLegalitasJaminan.php | 11 +- ...ields_to_jenis_legalitas_jaminan_table.php | 28 +++ .../jenis_legalitas_jaminan/create.blade.php | 174 ++++++++++-------- 5 files changed, 149 insertions(+), 78 deletions(-) create mode 100644 database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php diff --git a/app/Http/Controllers/JenisLegalitasJaminanController.php b/app/Http/Controllers/JenisLegalitasJaminanController.php index 9c6f4e9..1bb1446 100644 --- a/app/Http/Controllers/JenisLegalitasJaminanController.php +++ b/app/Http/Controllers/JenisLegalitasJaminanController.php @@ -8,6 +8,7 @@ use Maatwebsite\Excel\Facades\Excel; use Modules\Lpj\Exports\JenisLegalitasJaminanExport; use Modules\Lpj\Http\Requests\JenisLegalitasJaminanRequest; + use Modules\Lpj\Models\customField; use Modules\Lpj\Models\JenisLegalitasJaminan; class JenisLegalitasJaminanController extends Controller @@ -40,13 +41,15 @@ public function create() { - return view('lpj::jenis_legalitas_jaminan.create'); + $customFields = CustomField::orderBy('urutan_prioritas', 'asc')->get(); + return view('lpj::jenis_legalitas_jaminan.create',compact('customFields')); } public function edit($id) { $jenisLegalitasJaminan = JenisLegalitasJaminan::find($id); - return view('lpj::jenis_legalitas_jaminan.create', compact('jenisLegalitasJaminan')); + $customFields = CustomField::orderBy('urutan_prioritas', 'asc')->get(); + return view('lpj::jenis_legalitas_jaminan.create', compact('jenisLegalitasJaminan', 'customFields')); } public function update(JenisLegalitasJaminanRequest $request, $id) diff --git a/app/Http/Requests/JenisLegalitasJaminanRequest.php b/app/Http/Requests/JenisLegalitasJaminanRequest.php index 82fb205..b6ca8a1 100644 --- a/app/Http/Requests/JenisLegalitasJaminanRequest.php +++ b/app/Http/Requests/JenisLegalitasJaminanRequest.php @@ -20,6 +20,8 @@ 'slug' => 'required|max:255', 'custom_field' => 'nullable|max:255', 'custom_field_type' => 'nullable|max:255', + 'custom_fields' => 'nullable|array', + 'custom_fields.*' => 'required|string|max:255', ]; } @@ -46,5 +48,10 @@ 'slug' => Str::slug($this->name), ]); } + + // Ensure custom_fields is always an array + if (!is_array($this->custom_fields)) { + $this->merge(['custom_fields' => []]); + } } } diff --git a/app/Models/JenisLegalitasJaminan.php b/app/Models/JenisLegalitasJaminan.php index dd8f840..aefba67 100644 --- a/app/Models/JenisLegalitasJaminan.php +++ b/app/Models/JenisLegalitasJaminan.php @@ -7,5 +7,14 @@ class JenisLegalitasJaminan extends Base { protected $table = 'jenis_legalitas_jaminan'; - protected $fillable = ['code', 'name','slug','custom_field','custom_field_type']; + protected $fillable = ['code', 'name','slug','custom_field','custom_field_type','custom_fields']; + + protected $casts = [ + 'custom_fields' => 'array', + ]; + + public function customFields() + { + return $this->hasMany(CustomField::class); + } } diff --git a/database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php b/database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php new file mode 100644 index 0000000..b4ba94b --- /dev/null +++ b/database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php @@ -0,0 +1,28 @@ +string('custom_fields')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) { + $table->dropColumn('custom_fields'); + }); + } +}; diff --git a/resources/views/jenis_legalitas_jaminan/create.blade.php b/resources/views/jenis_legalitas_jaminan/create.blade.php index d8e273a..c0e6632 100644 --- a/resources/views/jenis_legalitas_jaminan/create.blade.php +++ b/resources/views/jenis_legalitas_jaminan/create.blade.php @@ -10,83 +10,107 @@
@method('PUT') - @else - - @endif - @csrf -
-
-

- {{ isset($jenisLegalitasJaminan->id) ? 'Edit' : 'Tambah' }} Jenis Legalitas Jaminan -

-
- Back -
-
-
- @if(isset($jenisLegalitasJaminan->id)) -
- -
- - @error('code') - {{ $message }} - @enderror -
-
- @endif -
- -
- - @error('name') - {{ $message }} - @enderror -
-
+ @else + + @endif + @csrf +
+
+

+ {{ isset($jenisLegalitasJaminan->id) ? 'Edit' : 'Tambah' }} Jenis Legalitas Jaminan +

+
+ Back +
+
+
+ @if(isset($jenisLegalitasJaminan->id)) +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @endif +
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
- -
- -
- - @error('custom_field') - {{ $message }} - @enderror -
-
+ +
+ +
+ + @error('custom_field') + {{ $message }} + @enderror +
+
- -
- -
- - @error('custom_field_type') - {{ $message }} - @enderror -
-
+ +
+ +
+ + @error('custom_field_type') + {{ $message }} + @enderror +
+
+
+ +
+ @foreach($customFields as $customField) + + @endforeach +
+
-
- -
-
-
- + +
+ +
+
+
+ @endsection