From 41c1651d169c7ec3c4c92cc35201a575e5258c77 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 6 Nov 2024 17:46:31 +0700 Subject: [PATCH 1/5] Mengubah tampilan pada edit dan create email kantor, PIC Reviewer, PIC Admin, PIC Marketing pada Menu Basic Data -> KJPP part 1 --- app/Http/Controllers/KJPPController.php | 5 +- app/Http/Requests/KJPPRequest.php | 145 +++++++++++--- app/Models/KJPP.php | 9 +- .../2024_09_18_084905_create_kjpp_table.php | 26 +-- .../2024_11_05_031735_update_kjpp_table.php | 40 ++++ .../seeders/JenisLegalitasJaminanSeeder.php | 16 ++ database/seeders/LpjDatabaseSeeder.php | 54 ++--- database/seeders/PermohonanSeeder.php | 4 +- resources/views/kjpp/create.blade.php | 185 ++++++++++++++++-- resources/views/kjpp/scripts/index.blade.php | 107 ++++++++++ 10 files changed, 505 insertions(+), 86 deletions(-) create mode 100644 database/migrations/2024_11_05_031735_update_kjpp_table.php create mode 100644 resources/views/kjpp/scripts/index.blade.php diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 4898ab5..4d46f45 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -57,6 +57,8 @@ class KJPPController extends Controller { $validated = $request->validated(); + dd($validated); + if ($validated) { $file = $request->file('attachment'); $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : 'default.pdf'; @@ -69,9 +71,6 @@ class KJPPController extends Controller Storage::copy('public/test/default.pdf', 'public/uploads_pdf/' . $filename); } - $validated['ijin_usaha_id'] = json_encode($request->input('ijin_usaha_id')); - $validated['jenis_aset_id'] = json_encode($request->input('jenis_aset_id')); - // Tambahkan nama file ke data yang divalidasi $validated['attachment'] = $filename; diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php index e3e6fe4..653366d 100644 --- a/app/Http/Requests/KJPPRequest.php +++ b/app/Http/Requests/KJPPRequest.php @@ -3,7 +3,6 @@ namespace Modules\Lpj\Http\Requests; use Illuminate\Foundation\Http\FormRequest; -use daengdeni\LaravelIdGenerator\IdGenerator; class KJPPRequest extends FormRequest { @@ -17,24 +16,31 @@ class KJPPRequest extends FormRequest 'jenis_kantor' => 'required', 'nomor_ijin_usaha' => 'required', 'province_code' => 'required', - 'city_code' => 'required', - 'district_code' => 'required', - 'village_code' => 'required', + 'city_code' => 'nullable', + 'district_code' => 'nullable', + 'village_code' => 'nullable', 'address' => 'required', - 'postal_code' => 'required|numeric', - 'nomor_telepon_kantor' => 'required|numeric|digits_between:8,15', + 'postal_code' => 'nullable|numeric', + 'nomor_telepon_kantor' => 'nullable|numeric|digits_between:8,15', 'email_kantor' => 'required|email', + 'detail_email_kantor' => 'nullable|email', 'nama_pimpinan' => 'required|string|not_regex:/^\d+$/|max:255', 'nomor_hp_pimpinan' => 'required|numeric|digits_between:10,15', - 'nama_pic_reviewer' => 'required|string|not_regex:/^\d+$/|max:255', - 'nomor_hp_pic_reviewer' => 'required|numeric|digits_between:10,15', - 'nama_pic_admin' => 'required|string|not_regex:/^\d+$/|max:255', - 'nomor_hp_pic_admin' => 'required|numeric|digits_between:10,15', - 'nama_pic_marketing' => 'required|string|not_regex:/^\d+$/|max:255', - 'nomor_hp_pic_marketing' => 'required|numeric|digits_between:10,15', - 'ijin_usaha_id' => 'required|array', + 'nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', + // 'detail_nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', + // 'detail_nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', + 'nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', + // 'detail_nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', + // 'detail_nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', + 'nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', + // 'detail_nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', + // 'detail_nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', + 'ijin_usaha_id' => 'nullable|array', 'ijin_usaha_id.*' => 'exists:ijin_usaha,code', - 'jenis_aset_id' => 'required|array', + 'jenis_aset_id' => 'nullable|array', 'jenis_aset_id.*' => 'exists:jenis_jaminan,code', 'attachment' => 'nullable|mimes:pdf|max:1024' ]; @@ -69,37 +75,36 @@ class KJPPRequest extends FormRequest 'nomor_ijin_usaha.required' => 'Nomor Ijin Usaha Wajib diisi!', 'nomor_ijin_usaha.max' => 'Nomor Ijin Usaha maksimal 255 huruf!', 'province_code.required' => 'Provinsi Wajib diisi!', - 'city_code.required' => 'Kota / Kabupaten Wajib diisi!', - 'district_code.required' => 'Kecamatan Wajib diisi!', - 'village_code.required' => 'Kelurahan Wajib diisi!', - 'postal_code.required' => 'Kode Pos Wajib diisi!', 'postal_code.numeric' => 'Kode Pos harus berupa angka!', 'address.required' => 'Alamat Kantor Wajib diisi!', - 'nomor_telepon_kantor.required' => 'Nomor Telepon Kantor Wajib diisi!', 'nomor_telepon_kantor.numeric' => 'Nomor Telepon Kantor harus berupa angka!', 'nomor_telepon_kantor.digits_between' => 'Nomor Telepon Kantor minimum 8 digit dan maksimum 15 digit!', 'email_kantor.required' => 'Email Kantor Wajib diisi!', 'email_kantor.email' => 'Email Kantor tidak valid!', + // 'detail_email_kantor.email' => 'Email Kantor tidak valid!', 'nama_pimpinan.required' => 'Nama Pimpinan Wajib diisi!', 'nama_pimpinan.not_regex' => 'Nama Pimpinan harus berupa huruf!', 'nomor_hp_pimpinan.required' => 'Nomor HP Pimpinan Wajib diisi!', 'nomor_hp_pimpinan.numeric' => 'Nomor HP Pimpinan harus berupa angka!', 'nomor_hp_pimpinan.digits_between' => 'Nomor HP Pimpinan minimum 10 digit dan maksimum 15 digit!', - 'nama_pic_reviewer.required' => 'Nama PIC Reviewer Wajib diisi!', 'nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', - 'nomor_hp_pic_reviewer.required' => 'Nomor HP PIC Reviewer Wajib diisi!', + // 'detail_nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', 'nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', + // 'detail_nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', 'nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', - 'nama_pic_admin.required' => 'Nama PIC Admin Wajib diisi!', + // 'detail_nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', 'nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', - 'nomor_hp_pic_admin.required' => 'Nomor HP PIC Admin Wajib diisi!', + // 'detail_nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', 'nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', + // 'detail_nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', 'nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', - 'nama_pic_marketing.required' => 'Nama PIC Marketing Wajib diisi!', + // 'detail_nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', 'nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', - 'nomor_hp_pic_marketing.required' => 'Nomor HP PIC Marketing Wajib diisi!', + // 'detail_nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', 'nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', + // 'detail_nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', 'nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', + // 'detail_nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', 'ijin_usaha_id.required' => 'Ijin Usaha Wajib diisi!', 'ijin_usaha_id.min' => 'Ijin Usaha Wajib diisi minimal satu atau lebih!', 'jenis_aset_id.required' => 'Jenis Aset Wajib diisi!', @@ -108,4 +113,94 @@ class KJPPRequest extends FormRequest 'attachment.max' => 'Attachment berukuran maksimum 1 MB!', ]; } + + public function prepareForValidation() + { + $detailEmailKantor = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + // Get input data with safe default values + $emailKantor = $this->input('detail_email_kantor.email_kantor', []); + $namaPicReviewer = $this->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); + $nomorHpPicReviewer = $this->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); + $namaPicAdmin = $this->input('detail_nama_pic_admin.nama_pic_admin', []); + $nomorHpPicAdmin = $this->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); + $namaPicMarketing = $this->input('detail_nama_pic_marketing.nama_pic_marketing', []); + $nomorHpPicMarketing = $this->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); + + foreach ($emailKantor as $value) { + $detailEmailKantor[] = [ + 'email_kantor' => $value + ]; + } + + $this->merge([ + 'detail_email_kantor' => json_encode($detailEmailKantor), + ]); + + foreach ($namaPicReviewer as $value) { + $detailNamaPicReviewer[] = [ + 'nama_pic_reviewer' => $value + ]; + } + + $this->merge([ + 'detail_nama_pic_reviewer' => json_encode($detailNamaPicReviewer), + ]); + + foreach ($nomorHpPicReviewer as $value) { + $detailNomorHpPicReviewer[] = [ + 'nomor_hp_pic_reviewer' => $value + ]; + } + + $this->merge([ + 'detail_nomor_hp_pic_reviewer' => json_encode($detailNomorHpPicReviewer), + ]); + + foreach ($namaPicAdmin as $value) { + $detailNamaPicAdmin[] = [ + 'nama_pic_admin' => $value + ]; + } + + $this->merge([ + 'detail_nama_pic_admin' => json_encode($detailNamaPicAdmin), + ]); + + foreach ($nomorHpPicAdmin as $value) { + $detailNomorHpPicAdmin[] = [ + 'nomor_hp_pic_admin' => $value + ]; + } + + $this->merge([ + 'detail_nomor_hp_pic_admin' => json_encode($detailNomorHpPicAdmin), + ]); + + foreach ($namaPicMarketing as $value) { + $detailNamaPicMarketing[] = [ + 'nama_pic_marketing' => $value + ]; + } + + $this->merge([ + 'detail_nama_pic_marketing' => json_encode($detailNamaPicMarketing), + ]); + + foreach ($nomorHpPicMarketing as $value) { + $detailNomorHpPicMarketing[] = [ + 'nomor_hp_pic_marketing' => $value + ]; + } + + $this->merge([ + 'detail_nomor_hp_pic_marketing' => json_encode($detailNomorHpPicMarketing), + ]); + } } diff --git a/app/Models/KJPP.php b/app/Models/KJPP.php index 426d940..9072e12 100644 --- a/app/Models/KJPP.php +++ b/app/Models/KJPP.php @@ -31,16 +31,23 @@ class KJPP extends Model 'postal_code', 'nomor_telepon_kantor', 'email_kantor', + 'detail_email_kantor', 'nama_pimpinan', 'nomor_hp_pimpinan', 'nama_pic_reviewer', + 'detail_nama_pic_reviewer', 'nomor_hp_pic_reviewer', + 'detail_nomor_hp_pic_reviewer', 'nama_pic_admin', + 'detail_nama_pic_admin', 'nomor_hp_pic_admin', + 'detail_nomor_hp_pic_admin', 'nama_pic_marketing', + 'detail_nama_pic_marketing', 'nomor_hp_pic_marketing', + 'detail_nomor_hp_pic_marketing', 'ijin_usaha_id', 'jenis_aset_id', - 'attachment' + 'attachment', ]; } diff --git a/database/migrations/2024_09_18_084905_create_kjpp_table.php b/database/migrations/2024_09_18_084905_create_kjpp_table.php index 387af1f..8429fcc 100644 --- a/database/migrations/2024_09_18_084905_create_kjpp_table.php +++ b/database/migrations/2024_09_18_084905_create_kjpp_table.php @@ -18,23 +18,23 @@ return new class extends Migration $table->string('jenis_kantor'); $table->string('nomor_ijin_usaha'); $table->string('province_code'); - $table->string('city_code'); - $table->string('district_code'); - $table->string('village_code'); + $table->string('city_code')->nullable(); + $table->string('district_code')->nullable(); + $table->string('village_code')->nullable(); $table->string('address'); - $table->string('postal_code'); - $table->string('nomor_telepon_kantor'); + $table->string('postal_code')->nullable(); + $table->string('nomor_telepon_kantor')->nullable(); $table->string('email_kantor'); $table->string('nama_pimpinan'); $table->string('nomor_hp_pimpinan'); - $table->string('nama_pic_reviewer'); - $table->string('nomor_hp_pic_reviewer'); - $table->string('nama_pic_admin'); - $table->string('nomor_hp_pic_admin'); - $table->string('nama_pic_marketing'); - $table->string('nomor_hp_pic_marketing'); - $table->string('ijin_usaha_id')->nullable(); - $table->string('jenis_aset_id')->nullable(); + $table->string('nama_pic_reviewer')->nullable(); + $table->string('nomor_hp_pic_reviewer')->nullable(); + $table->string('nama_pic_admin')->nullable(); + $table->string('nomor_hp_pic_admin')->nullable(); + $table->string('nama_pic_marketing')->nullable(); + $table->string('nomor_hp_pic_marketing')->nullable(); + $table->string('ijin_usaha_id'); + $table->string('jenis_aset_id'); $table->string('attachment')->nullable(); $table->boolean('status')->default(true)->nullable(); $table->char('authorized_status', 1)->nullable(); diff --git a/database/migrations/2024_11_05_031735_update_kjpp_table.php b/database/migrations/2024_11_05_031735_update_kjpp_table.php new file mode 100644 index 0000000..12d90ae --- /dev/null +++ b/database/migrations/2024_11_05_031735_update_kjpp_table.php @@ -0,0 +1,40 @@ +string('detail_email_kantor')->nullable()->after('email_kantor'); + $table->string('detail_nama_pic_reviewer')->nullable()->after('nama_pic_reviewer'); + $table->string('detail_nomor_hp_pic_reviewer')->nullable()->after('nomor_hp_pic_reviewer'); + $table->string('detail_nama_pic_admin')->nullable()->after('nama_pic_admin'); + $table->string('detail_nomor_hp_pic_admin')->nullable()->after('nomor_hp_pic_admin'); + $table->string('detail_nama_pic_marketing')->nullable()->after('nama_pic_marketing'); + $table->string('detail_nomor_hp_pic_marketing')->nullable()->after('nomor_hp_pic_marketing'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('kjpp', function (Blueprint $table) { + $table->dropColumn('detail_email_kantor'); + $table->dropColumn('detail_nama_pic_reviewer'); + $table->dropColumn('detail_nomor_hp_pic_reviewer'); + $table->dropColumn('detail_nama_pic_admin'); + $table->dropColumn('detail_nomor_hp_pic_admin'); + $table->dropColumn('detail_nama_pic_marketing'); + $table->dropColumn('detail_nomor_hp_pic_marketing'); + }); + } +}; diff --git a/database/seeders/JenisLegalitasJaminanSeeder.php b/database/seeders/JenisLegalitasJaminanSeeder.php index fa45d3a..43ac917 100644 --- a/database/seeders/JenisLegalitasJaminanSeeder.php +++ b/database/seeders/JenisLegalitasJaminanSeeder.php @@ -17,6 +17,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ001', 'name' => 'Sertifikat', 'slug' => 'sertifikat', + 'custom_field' => 'Luas Tanah', + 'custom_field_type' => 'number', 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -85,6 +87,20 @@ class JenisLegalitasJaminanSeeder extends Seeder 'updated_by' => 1, 'deleted_by' => null ], + [ + 'code' => 'JLJ007', + 'name' => 'IMB', + 'slug' => 'imb', + 'custom_field' => 'Luas Bangunan', + 'custom_field_type' => 'number', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ] ]); } } diff --git a/database/seeders/LpjDatabaseSeeder.php b/database/seeders/LpjDatabaseSeeder.php index d81021d..53a1b25 100644 --- a/database/seeders/LpjDatabaseSeeder.php +++ b/database/seeders/LpjDatabaseSeeder.php @@ -12,34 +12,34 @@ class LpjDatabaseSeeder extends Seeder public function run(): void { $this->call([ - BranchSeeder::class, - CurrencySeeder::class, - JenisFasilitasKreditSeeder::class, - JenisLegalitasJaminanSeeder::class, - JenisJaminanSeeder::class, - JenisDokumenSeeder::class, - TujuanPenilaianSeeder::class, - NilaiPlatformSeeder::class, - HubunganPemilikJaminanSeeder::class, - HubunganPenghuniJaminanSeeder::class, - ArahMataAnginSeeder::class, - StatusPermohonanSeeder::class, - RegionSeeder::class, - TeamsSeeder::class, - TeamUsersSeeder::class, - JenisPenilaianSeeder::class, - TujuanPenilaianKJPPSeeder::class, - IjinUsahaSeeder::class, - JenisLaporanSeeder::class, - KJPPSeeder::class, - DebitureSeeder::class, - PermohonanSeeder::class, + // BranchSeeder::class, + // CurrencySeeder::class, + // JenisFasilitasKreditSeeder::class, + // JenisLegalitasJaminanSeeder::class, + // JenisJaminanSeeder::class, + // JenisDokumenSeeder::class, + // TujuanPenilaianSeeder::class, + // NilaiPlatformSeeder::class, + // HubunganPemilikJaminanSeeder::class, + // HubunganPenghuniJaminanSeeder::class, + // ArahMataAnginSeeder::class, + // StatusPermohonanSeeder::class, + // RegionSeeder::class, + // TeamsSeeder::class, + // TeamUsersSeeder::class, + // JenisPenilaianSeeder::class, + // TujuanPenilaianKJPPSeeder::class, + // IjinUsahaSeeder::class, + // JenisLaporanSeeder::class, + // DebitureSeeder::class, + // PermohonanSeeder::class, PemilikJaminanSeeder::class, - DokumenJaminanSeeder::class, - DetailDokumenJaminanSeeder::class, - PenawaranSeeder::class, - DetailPenawaranSeeder::class, - PenilaianSeeder::class, + // DokumenJaminanSeeder::class, + // DetailDokumenJaminanSeeder::class, + // KJPPSeeder::class, + // PenawaranSeeder::class, + // DetailPenawaranSeeder::class, + // PenilaianSeeder::class, ]); } } diff --git a/database/seeders/PermohonanSeeder.php b/database/seeders/PermohonanSeeder.php index f43aafb..a8b82d7 100644 --- a/database/seeders/PermohonanSeeder.php +++ b/database/seeders/PermohonanSeeder.php @@ -20,7 +20,7 @@ class PermohonanSeeder extends Seeder 'branch_id' => 1, 'tujuan_penilaian_id' => 1, 'debiture_id' => 1, - 'status' => 'persetujuan-penawaran', + 'status' => 'registered', 'created_at' => now(), 'updated_at' => now(), 'created_by' => 1, @@ -38,7 +38,7 @@ class PermohonanSeeder extends Seeder 'branch_id' => 1, 'tujuan_penilaian_id' => 1, 'debiture_id' => 1, - 'status' => 'tender', + 'status' => 'registered', 'created_at' => now(), 'updated_at' => now(), 'created_by' => 1, diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 41284bb..f2b5e45 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -222,12 +222,30 @@ -
+
@error('email_kantor') {{ $message }} @enderror +
+
+ @if (isset($kjpp->detail_email_kantor)) + @foreach (json_decode($kjpp->detail_email_kantor) as $detail) + + @error('detail_email_kantor') + {{ $message }} + @enderror + + @endforeach + @endif +
+
+
@@ -277,6 +295,53 @@ @enderror
+
+
+ @if (isset($kjpp->detail_nama_pic_reviewer)) + @foreach (json_decode($kjpp->detail_nama_pic_reviewer) as $detail) +
+ +
+ + @error('detail_nama_pic_reviewer') + {{ $message }} + @enderror +
+ @foreach (json_decode($kjpp->detail_nomor_hp_pic_reviewer) as $detail) + +
+ + @error('detail_nomor_hp_pic_reviewer') + {{ $message }} + @enderror +
+ @endforeach + +
+ @endforeach + @endif +
+
+
+ +
+ +
+
+
+
+ @if (isset($kjpp->detail_nama_pic_admin)) + @foreach (json_decode($kjpp->detail_nama_pic_admin) as $detail) +
+ +
+ + @error('detail_nama_pic_admin') + {{ $message }} + @enderror +
+ @foreach (json_decode($kjpp->detail_nomor_hp_pic_admin) as $detail) + +
+ + @error('detail_nomor_hp_pic_admin') + {{ $message }} + @enderror +
+ @endforeach + +
+ @endforeach + @endif +
+
+
+ +
+ +
+
-
- - @error('nama_pic_marketing') - {{ $message }} - @enderror -
+ + @error('nama_pic_marketing') + {{ $message }} + @enderror + + @error('nomor_hp_pic_marketing') + {{ $message }} + @enderror +
+
+
+ @if (isset($kjpp->detail_nama_pic_marketing)) + @foreach (json_decode($kjpp->detail_nama_pic_marketing) as $detail) +
+ +
+ + @error('detail_nama_pic_marketing') + {{ $message }} + @enderror +
+ @foreach (json_decode($kjpp->detail_nomor_hp_pic_marketing) as $detail) + +
+ + @error('detail_nomor_hp_pic_marketing') + {{ $message }} + @enderror +
+ @endforeach + +
+ @endforeach + @endif +
+
+
+
- - @error('nomor_hp_pic_marketing') - {{ $message }} - @enderror +
@@ -397,3 +550,5 @@
@endsection + +@include('lpj::kjpp.scripts.index') diff --git a/resources/views/kjpp/scripts/index.blade.php b/resources/views/kjpp/scripts/index.blade.php new file mode 100644 index 0000000..c963810 --- /dev/null +++ b/resources/views/kjpp/scripts/index.blade.php @@ -0,0 +1,107 @@ +@push('scripts') + +@endpush From d560b37d5649e0741e1a3e5715c6e4e1178028ae Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 7 Nov 2024 15:21:31 +0700 Subject: [PATCH 2/5] Menyelesaikan fitur Basic Data KJPP untuk menambahkan lebih dari satu email kantor, pic reviewer, pic admin, pic marketing --- app/Http/Controllers/KJPPController.php | 235 +++++++++++++++++- app/Http/Requests/KJPPRequest.php | 120 +-------- app/Models/KJPP.php | 33 +-- .../2024_09_18_084905_create_kjpp_table.php | 7 + ...e_kategori_form_analisa_inspeksi_table.php | 1 + .../2024_11_05_031735_update_kjpp_table.php | 40 --- .../seeders/JenisLegalitasJaminanSeeder.php | 10 + database/seeders/LpjDatabaseSeeder.php | 54 ++-- resources/views/kjpp/create.blade.php | 152 ++++++----- resources/views/kjpp/scripts/index.blade.php | 13 + resources/views/kjpp/show.blade.php | 99 ++++++-- 11 files changed, 451 insertions(+), 313 deletions(-) delete mode 100644 database/migrations/2024_11_05_031735_update_kjpp_table.php diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 4d46f45..e043735 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -5,8 +5,6 @@ namespace Modules\Lpj\Http\Controllers; use Throwable; use Illuminate\Http\Request; use Modules\Lpj\Models\KJPP; -use Illuminate\Http\Response; -use Modules\Lpj\Models\Branch; use Modules\Location\Models\City; use Modules\Lpj\Models\IjinUsaha; use Modules\Lpj\Exports\KJPPExport; @@ -57,9 +55,80 @@ class KJPPController extends Controller { $validated = $request->validated(); - dd($validated); - if ($validated) { + $detailEmailKantor = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $namaPicReviewer = $request->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); + $nomorHpPicReviewer = $request->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); + $namaPicAdmin = $request->input('detail_nama_pic_admin.nama_pic_admin', []); + $nomorHpPicAdmin = $request->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); + $namaPicMarketing = $request->input('detail_nama_pic_marketing.nama_pic_marketing', []); + $nomorHpPicMarketing = $request->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); + + foreach ($emailKantor as $value) { + $detailEmailKantor[] = [ + 'email_kantor' => $value + ]; + } + // Encode to JSON and store + $detailEmailKantorJson = json_encode($detailEmailKantor); + + // Process detail_nama_pic_reviewer + foreach ($namaPicReviewer as $value) { + $detailNamaPicReviewer[] = [ + 'nama_pic_reviewer' => $value + ]; + } + $detailNamaPicReviewerJson = json_encode($detailNamaPicReviewer); + + // Process detail_nomor_hp_pic_reviewer + foreach ($nomorHpPicReviewer as $value) { + $detailNomorHpPicReviewer[] = [ + 'nomor_hp_pic_reviewer' => $value + ]; + } + $detailNomorHpPicReviewerJson = json_encode($detailNomorHpPicReviewer); + + // Process detail_nama_pic_admin + foreach ($namaPicAdmin as $value) { + $detailNamaPicAdmin[] = [ + 'nama_pic_admin' => $value + ]; + } + $detailNamaPicAdminJson = json_encode($detailNamaPicAdmin); + + // Process detail_nomor_hp_pic_admin + foreach ($nomorHpPicAdmin as $value) { + $detailNomorHpPicAdmin[] = [ + 'nomor_hp_pic_admin' => $value + ]; + } + $detailNomorHpPicAdminJson = json_encode($detailNomorHpPicAdmin); + + // Process detail_nama_pic_marketing + foreach ($namaPicMarketing as $value) { + $detailNamaPicMarketing[] = [ + 'nama_pic_marketing' => $value + ]; + } + $detailNamaPicMarketingJson = json_encode($detailNamaPicMarketing); + + // Process detail_nomor_hp_pic_marketing + foreach ($nomorHpPicMarketing as $value) { + $detailNomorHpPicMarketing[] = [ + 'nomor_hp_pic_marketing' => $value + ]; + } + $detailNomorHpPicMarketingJson = json_encode($detailNomorHpPicMarketing); + + $file = $request->file('attachment'); $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : 'default.pdf'; @@ -71,9 +140,20 @@ class KJPPController extends Controller Storage::copy('public/test/default.pdf', 'public/uploads_pdf/' . $filename); } + $validated['detail_email_kantor'] = $detailEmailKantorJson; + $validated['detail_nama_pic_reviewer'] = $detailNamaPicReviewerJson; + $validated['detail_nomor_hp_pic_reviewer'] = $detailNomorHpPicReviewerJson; + $validated['detail_nama_pic_admin'] = $detailNamaPicAdminJson; + $validated['detail_nomor_hp_pic_admin'] = $detailNomorHpPicAdminJson; + $validated['detail_nama_pic_marketing'] = $detailNamaPicMarketingJson; + $validated['detail_nomor_hp_pic_marketing'] = $detailNomorHpPicMarketingJson; + $validated['ijin_usaha_id'] = json_encode($validated['ijin_usaha_id']); + $validated['jenis_aset_id'] = json_encode($validated['jenis_aset_id']); // Tambahkan nama file ke data yang divalidasi $validated['attachment'] = $filename; + // dd($validated); + // Simpan data ke database KJPP::create($validated); @@ -100,8 +180,36 @@ class KJPPController extends Controller $cities = City::where('code', $kjpp->city_code)->get(); $districts = District::where('code', $kjpp->district_code)->get(); $villages = Village::where('code', $kjpp->village_code)->get(); - // dd($branches); - return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'kjpp', 'provinces', 'cities', 'districts', 'villages')); + $detailEmailKantor = json_decode($kjpp->detail_email_kantor); + $detailNamaPicReviewer = json_decode($kjpp->detail_nama_pic_reviewer); + $detailNomorHpPicReviewer = json_decode($kjpp->detail_nomor_hp_pic_reviewer); + $detailNamaPicAdmin = json_decode($kjpp->detail_nama_pic_admin); + $detailNomorHpPicAdmin = json_decode($kjpp->detail_nomor_hp_pic_admin); + $detailNamaPicMarketing = json_decode($kjpp->detail_nama_pic_marketing); + $detailNomorHpPicMarketing = json_decode($kjpp->detail_nomor_hp_pic_marketing); + + $detailJoinPicReviewer = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_reviewer' => $nama->nama_pic_reviewer, + 'nomor_hp_pic_reviewer' => $nomor->nomor_hp_pic_reviewer + ]; + }, $detailNamaPicReviewer, $detailNomorHpPicReviewer)); + + $detailJoinPicAdmin = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_admin' => $nama->nama_pic_admin, + 'nomor_hp_pic_admin' => $nomor->nomor_hp_pic_admin + ]; + }, $detailNamaPicAdmin, $detailNomorHpPicAdmin)); + + $detailJoinPicMarketing = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_marketing' => $nama->nama_pic_marketing, + 'nomor_hp_pic_marketing' => $nomor->nomor_hp_pic_marketing + ]; + }, $detailNamaPicMarketing, $detailNomorHpPicMarketing)); + + return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'kjpp', 'provinces', 'cities', 'districts', 'villages', 'detailEmailKantor', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing')); } /** @@ -116,8 +224,36 @@ class KJPPController extends Controller $cities = City::where('province_code', $kjpp->province_code)->get(); $districts = District::where('city_code', $kjpp->city_code)->get(); $villages = Village::where('district_code', $kjpp->district_code)->get(); + $detailEmailKantor = json_decode($kjpp->detail_email_kantor); + $detailNamaPicReviewer = json_decode($kjpp->detail_nama_pic_reviewer); + $detailNomorHpPicReviewer = json_decode($kjpp->detail_nomor_hp_pic_reviewer); + $detailNamaPicAdmin = json_decode($kjpp->detail_nama_pic_admin); + $detailNomorHpPicAdmin = json_decode($kjpp->detail_nomor_hp_pic_admin); + $detailNamaPicMarketing = json_decode($kjpp->detail_nama_pic_marketing); + $detailNomorHpPicMarketing = json_decode($kjpp->detail_nomor_hp_pic_marketing); - return view('lpj::kjpp.create', compact('kjpp', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages')); + $detailJoinPicReviewer = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_reviewer' => $nama->nama_pic_reviewer, + 'nomor_hp_pic_reviewer' => $nomor->nomor_hp_pic_reviewer + ]; + }, $detailNamaPicReviewer, $detailNomorHpPicReviewer)); + + $detailJoinPicAdmin = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_admin' => $nama->nama_pic_admin, + 'nomor_hp_pic_admin' => $nomor->nomor_hp_pic_admin + ]; + }, $detailNamaPicAdmin, $detailNomorHpPicAdmin)); + + $detailJoinPicMarketing = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_marketing' => $nama->nama_pic_marketing, + 'nomor_hp_pic_marketing' => $nomor->nomor_hp_pic_marketing + ]; + }, $detailNamaPicMarketing, $detailNomorHpPicMarketing)); + + return view('lpj::kjpp.create', compact('kjpp', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing', 'detailEmailKantor')); } /** @@ -127,7 +263,82 @@ class KJPPController extends Controller { $validated = $request->validated(); + // dd($validated); + if ($validated) { + $detailEmailKantor = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $namaPicReviewer = $request->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); + $nomorHpPicReviewer = $request->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); + $namaPicAdmin = $request->input('detail_nama_pic_admin.nama_pic_admin', []); + $nomorHpPicAdmin = $request->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); + $namaPicMarketing = $request->input('detail_nama_pic_marketing.nama_pic_marketing', []); + $nomorHpPicMarketing = $request->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); + + foreach ($emailKantor as $value) { + $detailEmailKantor[] = [ + 'email_kantor' => $value + ]; + } + // Encode to JSON and store + $detailEmailKantorJson = json_encode($detailEmailKantor); + + // Process detail_nama_pic_reviewer + foreach ($namaPicReviewer as $value) { + $detailNamaPicReviewer[] = [ + 'nama_pic_reviewer' => $value + ]; + } + $detailNamaPicReviewerJson = json_encode($detailNamaPicReviewer); + + // Process detail_nomor_hp_pic_reviewer + foreach ($nomorHpPicReviewer as $value) { + $detailNomorHpPicReviewer[] = [ + 'nomor_hp_pic_reviewer' => $value + ]; + } + $detailNomorHpPicReviewerJson = json_encode($detailNomorHpPicReviewer); + + // Process detail_nama_pic_admin + foreach ($namaPicAdmin as $value) { + $detailNamaPicAdmin[] = [ + 'nama_pic_admin' => $value + ]; + } + $detailNamaPicAdminJson = json_encode($detailNamaPicAdmin); + + // Process detail_nomor_hp_pic_admin + foreach ($nomorHpPicAdmin as $value) { + $detailNomorHpPicAdmin[] = [ + 'nomor_hp_pic_admin' => $value + ]; + } + $detailNomorHpPicAdminJson = json_encode($detailNomorHpPicAdmin); + + // Process detail_nama_pic_marketing + foreach ($namaPicMarketing as $value) { + $detailNamaPicMarketing[] = [ + 'nama_pic_marketing' => $value + ]; + } + $detailNamaPicMarketingJson = json_encode($detailNamaPicMarketing); + + // Process detail_nomor_hp_pic_marketing + foreach ($nomorHpPicMarketing as $value) { + $detailNomorHpPicMarketing[] = [ + 'nomor_hp_pic_marketing' => $value + ]; + } + $detailNomorHpPicMarketingJson = json_encode($detailNomorHpPicMarketing); + + $file = $request->file('attachment'); $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : null; @@ -147,6 +358,16 @@ class KJPPController extends Controller $validated['attachment'] = $kjpp->attachment ?? 'default.pdf'; } + $validated['detail_email_kantor'] = $detailEmailKantorJson; + $validated['detail_nama_pic_reviewer'] = $detailNamaPicReviewerJson; + $validated['detail_nomor_hp_pic_reviewer'] = $detailNomorHpPicReviewerJson; + $validated['detail_nama_pic_admin'] = $detailNamaPicAdminJson; + $validated['detail_nomor_hp_pic_admin'] = $detailNomorHpPicAdminJson; + $validated['detail_nama_pic_marketing'] = $detailNamaPicMarketingJson; + $validated['detail_nomor_hp_pic_marketing'] = $detailNomorHpPicMarketingJson; + $validated['ijin_usaha_id'] = json_encode($validated['ijin_usaha_id']); + $validated['jenis_aset_id'] = json_encode($validated['jenis_aset_id']); + // Perbarui data di database KJPP::where('id', $id)->update($validated); diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php index 653366d..6a693a8 100644 --- a/app/Http/Requests/KJPPRequest.php +++ b/app/Http/Requests/KJPPRequest.php @@ -23,24 +23,24 @@ class KJPPRequest extends FormRequest 'postal_code' => 'nullable|numeric', 'nomor_telepon_kantor' => 'nullable|numeric|digits_between:8,15', 'email_kantor' => 'required|email', - 'detail_email_kantor' => 'nullable|email', + 'detail_email_kantor' => 'nullable', 'nama_pimpinan' => 'required|string|not_regex:/^\d+$/|max:255', 'nomor_hp_pimpinan' => 'required|numeric|digits_between:10,15', 'nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', - // 'detail_nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pic_reviewer' => 'nullable', 'nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', - // 'detail_nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', + 'detail_nomor_hp_pic_reviewer' => 'nullable', 'nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', - // 'detail_nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pic_admin' => 'nullable', 'nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', - // 'detail_nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', + 'detail_nomor_hp_pic_admin' => 'nullable', 'nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', - // 'detail_nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pic_marketing' => 'nullable', 'nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', - // 'detail_nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', - 'ijin_usaha_id' => 'nullable|array', + 'detail_nomor_hp_pic_marketing' => 'nullable', + 'ijin_usaha_id' => 'required|array', 'ijin_usaha_id.*' => 'exists:ijin_usaha,code', - 'jenis_aset_id' => 'nullable|array', + 'jenis_aset_id' => 'required|array', 'jenis_aset_id.*' => 'exists:jenis_jaminan,code', 'attachment' => 'nullable|mimes:pdf|max:1024' ]; @@ -81,126 +81,24 @@ class KJPPRequest extends FormRequest 'nomor_telepon_kantor.digits_between' => 'Nomor Telepon Kantor minimum 8 digit dan maksimum 15 digit!', 'email_kantor.required' => 'Email Kantor Wajib diisi!', 'email_kantor.email' => 'Email Kantor tidak valid!', - // 'detail_email_kantor.email' => 'Email Kantor tidak valid!', 'nama_pimpinan.required' => 'Nama Pimpinan Wajib diisi!', 'nama_pimpinan.not_regex' => 'Nama Pimpinan harus berupa huruf!', 'nomor_hp_pimpinan.required' => 'Nomor HP Pimpinan Wajib diisi!', 'nomor_hp_pimpinan.numeric' => 'Nomor HP Pimpinan harus berupa angka!', 'nomor_hp_pimpinan.digits_between' => 'Nomor HP Pimpinan minimum 10 digit dan maksimum 15 digit!', 'nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', - // 'detail_nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', 'nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', - // 'detail_nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', 'nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', - // 'detail_nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', 'nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', - // 'detail_nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', 'nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', - // 'detail_nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', 'nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', - // 'detail_nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', 'nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', - // 'detail_nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', 'nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', - // 'detail_nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', 'nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', - // 'detail_nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', 'ijin_usaha_id.required' => 'Ijin Usaha Wajib diisi!', - 'ijin_usaha_id.min' => 'Ijin Usaha Wajib diisi minimal satu atau lebih!', 'jenis_aset_id.required' => 'Jenis Aset Wajib diisi!', - 'jenis_aset_id.min' => 'Jenis Aset Wajib diisi minimal satu atau lebih!', 'attachment.mimes' => 'Attachment harus berformat pdf!', 'attachment.max' => 'Attachment berukuran maksimum 1 MB!', ]; } - - public function prepareForValidation() - { - $detailEmailKantor = []; - $detailNamaPicReviewer = []; - $detailNomorHpPicReviewer = []; - $detailNamaPicAdmin = []; - $detailNomorHpPicAdmin = []; - $detailNamaPicMarketing = []; - $detailNomorHpPicMarketing = []; - - // Get input data with safe default values - $emailKantor = $this->input('detail_email_kantor.email_kantor', []); - $namaPicReviewer = $this->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); - $nomorHpPicReviewer = $this->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); - $namaPicAdmin = $this->input('detail_nama_pic_admin.nama_pic_admin', []); - $nomorHpPicAdmin = $this->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); - $namaPicMarketing = $this->input('detail_nama_pic_marketing.nama_pic_marketing', []); - $nomorHpPicMarketing = $this->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); - - foreach ($emailKantor as $value) { - $detailEmailKantor[] = [ - 'email_kantor' => $value - ]; - } - - $this->merge([ - 'detail_email_kantor' => json_encode($detailEmailKantor), - ]); - - foreach ($namaPicReviewer as $value) { - $detailNamaPicReviewer[] = [ - 'nama_pic_reviewer' => $value - ]; - } - - $this->merge([ - 'detail_nama_pic_reviewer' => json_encode($detailNamaPicReviewer), - ]); - - foreach ($nomorHpPicReviewer as $value) { - $detailNomorHpPicReviewer[] = [ - 'nomor_hp_pic_reviewer' => $value - ]; - } - - $this->merge([ - 'detail_nomor_hp_pic_reviewer' => json_encode($detailNomorHpPicReviewer), - ]); - - foreach ($namaPicAdmin as $value) { - $detailNamaPicAdmin[] = [ - 'nama_pic_admin' => $value - ]; - } - - $this->merge([ - 'detail_nama_pic_admin' => json_encode($detailNamaPicAdmin), - ]); - - foreach ($nomorHpPicAdmin as $value) { - $detailNomorHpPicAdmin[] = [ - 'nomor_hp_pic_admin' => $value - ]; - } - - $this->merge([ - 'detail_nomor_hp_pic_admin' => json_encode($detailNomorHpPicAdmin), - ]); - - foreach ($namaPicMarketing as $value) { - $detailNamaPicMarketing[] = [ - 'nama_pic_marketing' => $value - ]; - } - - $this->merge([ - 'detail_nama_pic_marketing' => json_encode($detailNamaPicMarketing), - ]); - - foreach ($nomorHpPicMarketing as $value) { - $detailNomorHpPicMarketing[] = [ - 'nomor_hp_pic_marketing' => $value - ]; - } - - $this->merge([ - 'detail_nomor_hp_pic_marketing' => json_encode($detailNomorHpPicMarketing), - ]); - } } diff --git a/app/Models/KJPP.php b/app/Models/KJPP.php index 9072e12..b9f2e34 100644 --- a/app/Models/KJPP.php +++ b/app/Models/KJPP.php @@ -18,36 +18,5 @@ class KJPP extends Model /** * The attributes that are mass assignable. */ - protected $fillable = [ - 'code', - 'name', - 'jenis_kantor', - 'nomor_ijin_usaha', - 'province_code', - 'city_code', - 'district_code', - 'village_code', - 'address', - 'postal_code', - 'nomor_telepon_kantor', - 'email_kantor', - 'detail_email_kantor', - 'nama_pimpinan', - 'nomor_hp_pimpinan', - 'nama_pic_reviewer', - 'detail_nama_pic_reviewer', - 'nomor_hp_pic_reviewer', - 'detail_nomor_hp_pic_reviewer', - 'nama_pic_admin', - 'detail_nama_pic_admin', - 'nomor_hp_pic_admin', - 'detail_nomor_hp_pic_admin', - 'nama_pic_marketing', - 'detail_nama_pic_marketing', - 'nomor_hp_pic_marketing', - 'detail_nomor_hp_pic_marketing', - 'ijin_usaha_id', - 'jenis_aset_id', - 'attachment', - ]; + protected $guarded = ['id']; } diff --git a/database/migrations/2024_09_18_084905_create_kjpp_table.php b/database/migrations/2024_09_18_084905_create_kjpp_table.php index 8429fcc..0539cf6 100644 --- a/database/migrations/2024_09_18_084905_create_kjpp_table.php +++ b/database/migrations/2024_09_18_084905_create_kjpp_table.php @@ -25,14 +25,21 @@ return new class extends Migration $table->string('postal_code')->nullable(); $table->string('nomor_telepon_kantor')->nullable(); $table->string('email_kantor'); + $table->string('detail_email_kantor')->nullable(); $table->string('nama_pimpinan'); $table->string('nomor_hp_pimpinan'); $table->string('nama_pic_reviewer')->nullable(); + $table->string('detail_nama_pic_reviewer')->nullable(); $table->string('nomor_hp_pic_reviewer')->nullable(); + $table->string('detail_nomor_hp_pic_reviewer')->nullable(); $table->string('nama_pic_admin')->nullable(); + $table->string('detail_nama_pic_admin')->nullable(); $table->string('nomor_hp_pic_admin')->nullable(); + $table->string('detail_nomor_hp_pic_admin')->nullable(); $table->string('nama_pic_marketing')->nullable(); + $table->string('detail_nama_pic_marketing')->nullable(); $table->string('nomor_hp_pic_marketing')->nullable(); + $table->string('detail_nomor_hp_pic_marketing')->nullable(); $table->string('ijin_usaha_id'); $table->string('jenis_aset_id'); $table->string('attachment')->nullable(); diff --git a/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php b/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php index 7b14758..87c765e 100644 --- a/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php +++ b/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php @@ -15,6 +15,7 @@ return new class extends Migration $table->id(); $table->string('name'); $table->string('code'); + $table->unsignedBigInteger('kategori_jenis_aset_id'); // Add this line $table->foreign('kategori_jenis_aset_id')->references('id')->on('kategori_jenis_aset'); $table->boolean('status')->default(true); $table->char('authorized_status', 1)->nullable(); diff --git a/database/migrations/2024_11_05_031735_update_kjpp_table.php b/database/migrations/2024_11_05_031735_update_kjpp_table.php deleted file mode 100644 index 12d90ae..0000000 --- a/database/migrations/2024_11_05_031735_update_kjpp_table.php +++ /dev/null @@ -1,40 +0,0 @@ -string('detail_email_kantor')->nullable()->after('email_kantor'); - $table->string('detail_nama_pic_reviewer')->nullable()->after('nama_pic_reviewer'); - $table->string('detail_nomor_hp_pic_reviewer')->nullable()->after('nomor_hp_pic_reviewer'); - $table->string('detail_nama_pic_admin')->nullable()->after('nama_pic_admin'); - $table->string('detail_nomor_hp_pic_admin')->nullable()->after('nomor_hp_pic_admin'); - $table->string('detail_nama_pic_marketing')->nullable()->after('nama_pic_marketing'); - $table->string('detail_nomor_hp_pic_marketing')->nullable()->after('nomor_hp_pic_marketing'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('kjpp', function (Blueprint $table) { - $table->dropColumn('detail_email_kantor'); - $table->dropColumn('detail_nama_pic_reviewer'); - $table->dropColumn('detail_nomor_hp_pic_reviewer'); - $table->dropColumn('detail_nama_pic_admin'); - $table->dropColumn('detail_nomor_hp_pic_admin'); - $table->dropColumn('detail_nama_pic_marketing'); - $table->dropColumn('detail_nomor_hp_pic_marketing'); - }); - } -}; diff --git a/database/seeders/JenisLegalitasJaminanSeeder.php b/database/seeders/JenisLegalitasJaminanSeeder.php index 43ac917..516614c 100644 --- a/database/seeders/JenisLegalitasJaminanSeeder.php +++ b/database/seeders/JenisLegalitasJaminanSeeder.php @@ -31,6 +31,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ002', 'name' => 'SHGB', 'slug' => 'shgb', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -43,6 +45,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ003', 'name' => 'Copy PBB / NJOP Tahun Terakhir (Jika Ada)', 'slug' => 'copy-pbb-njop-tahun-terakhir-jika-ada', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -55,6 +59,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ004', 'name' => 'Copy NPWP Perusahaan/Perorangan', 'slug' => 'copy-npwp-perusahaanperorangan', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -67,6 +73,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ005', 'name' => 'Siteplan', 'slug' => 'siteplan', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -79,6 +87,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ006', 'name' => 'Surat Pernyataan Kebenaran Data (Surat Representasi)', 'slug' => 'surat-pernyataan-kebenaran-data-surat-representasi', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), diff --git a/database/seeders/LpjDatabaseSeeder.php b/database/seeders/LpjDatabaseSeeder.php index 53a1b25..0377451 100644 --- a/database/seeders/LpjDatabaseSeeder.php +++ b/database/seeders/LpjDatabaseSeeder.php @@ -12,34 +12,34 @@ class LpjDatabaseSeeder extends Seeder public function run(): void { $this->call([ - // BranchSeeder::class, - // CurrencySeeder::class, - // JenisFasilitasKreditSeeder::class, - // JenisLegalitasJaminanSeeder::class, - // JenisJaminanSeeder::class, - // JenisDokumenSeeder::class, - // TujuanPenilaianSeeder::class, - // NilaiPlatformSeeder::class, - // HubunganPemilikJaminanSeeder::class, - // HubunganPenghuniJaminanSeeder::class, - // ArahMataAnginSeeder::class, - // StatusPermohonanSeeder::class, - // RegionSeeder::class, - // TeamsSeeder::class, - // TeamUsersSeeder::class, - // JenisPenilaianSeeder::class, - // TujuanPenilaianKJPPSeeder::class, - // IjinUsahaSeeder::class, - // JenisLaporanSeeder::class, - // DebitureSeeder::class, - // PermohonanSeeder::class, + BranchSeeder::class, + CurrencySeeder::class, + JenisFasilitasKreditSeeder::class, + JenisLegalitasJaminanSeeder::class, + JenisJaminanSeeder::class, + JenisDokumenSeeder::class, + TujuanPenilaianSeeder::class, + NilaiPlatformSeeder::class, + HubunganPemilikJaminanSeeder::class, + HubunganPenghuniJaminanSeeder::class, + ArahMataAnginSeeder::class, + StatusPermohonanSeeder::class, + RegionSeeder::class, + TeamsSeeder::class, + TeamUsersSeeder::class, + JenisPenilaianSeeder::class, + TujuanPenilaianKJPPSeeder::class, + IjinUsahaSeeder::class, + JenisLaporanSeeder::class, + DebitureSeeder::class, + PermohonanSeeder::class, PemilikJaminanSeeder::class, - // DokumenJaminanSeeder::class, - // DetailDokumenJaminanSeeder::class, - // KJPPSeeder::class, - // PenawaranSeeder::class, - // DetailPenawaranSeeder::class, - // PenilaianSeeder::class, + DokumenJaminanSeeder::class, + DetailDokumenJaminanSeeder::class, + KJPPSeeder::class, + PenawaranSeeder::class, + DetailPenawaranSeeder::class, + PenilaianSeeder::class, ]); } } diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index f2b5e45..46fba2a 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -229,20 +229,22 @@ {{ $message }} @enderror
-
- @if (isset($kjpp->detail_email_kantor)) - @foreach (json_decode($kjpp->detail_email_kantor) as $detail) - - @error('detail_email_kantor') - {{ $message }} - @enderror + @if (isset($kjpp->detail_email_kantor)) + @foreach ($detailEmailKantor as $detail_email_kantor) +
+
+ + @error('email_kantor') + {{ $message }} + @enderror +
- @endforeach - @endif -
+ class="btn btn-danger btn-xs delete-button-edit">Hapus +
+ @endforeach + @endif
@@ -297,37 +299,35 @@
- @if (isset($kjpp->detail_nama_pic_reviewer)) - @foreach (json_decode($kjpp->detail_nama_pic_reviewer) as $detail) + @if (isset($kjpp->detail_nama_pic_reviewer) && isset($kjpp->detail_nomor_hp_pic_reviewer)) + @foreach (json_decode($detailJoinPicReviewer) as $detail_pic_reviewer)
- - @error('detail_nama_pic_reviewer') + value="{{ $detail_pic_reviewer->nama_pic_reviewer ?? old('detail_nama_pic_reviewer.nama_pic_reviewer') }}"> + @error('nama_pic_reviewer') {{ $message }} @enderror
- @foreach (json_decode($kjpp->detail_nomor_hp_pic_reviewer) as $detail) - -
- - @error('detail_nomor_hp_pic_reviewer') - {{ $message }} - @enderror -
- @endforeach - + +
+ + @error('nomor_hp_pic_reviewer') + {{ $message }} + @enderror +
+
@endforeach @endif @@ -367,35 +367,34 @@
- @if (isset($kjpp->detail_nama_pic_admin)) - @foreach (json_decode($kjpp->detail_nama_pic_admin) as $detail) + @if (isset($kjpp->detail_nama_pic_admin) && isset($kjpp->detail_nomor_hp_pic_admin)) + @foreach (json_decode($detailJoinPicAdmin) as $detail_pic_admin)
- - @error('detail_nama_pic_admin') + value="{{ $detail_pic_admin->nama_pic_admin ?? old('detail_nama_pic_admin.nama_pic_admin') }}"> + @error('nama_pic_admin') {{ $message }} @enderror
- @foreach (json_decode($kjpp->detail_nomor_hp_pic_admin) as $detail) - -
- - @error('detail_nomor_hp_pic_admin') - {{ $message }} - @enderror -
- @endforeach - + +
+ + @error('nomor_hp_pic_admin') + {{ $message }} + @enderror +
+
@endforeach @endif @@ -432,37 +431,36 @@
- @if (isset($kjpp->detail_nama_pic_marketing)) - @foreach (json_decode($kjpp->detail_nama_pic_marketing) as $detail) + @if (isset($kjpp->detail_nama_pic_marketing) && isset($kjpp->detail_nomor_hp_pic_marketing)) + @foreach (json_decode($detailJoinPicMarketing) as $detail_pic_marketing)
- - @error('detail_nama_pic_marketing') + value="{{ $detail_pic_marketing->nama_pic_marketing ?? old('detail_nama_pic_marketing.nama_pic_marketing') }}"> + @error('nama_pic_marketing') {{ $message }} @enderror
- @foreach (json_decode($kjpp->detail_nomor_hp_pic_marketing) as $detail) - -
- - @error('detail_nomor_hp_pic_marketing') - {{ $message }} - @enderror -
- @endforeach - + +
+ + @error('nomor_hp_pic_marketing') + {{ $message }} + @enderror +
+
@endforeach @endif diff --git a/resources/views/kjpp/scripts/index.blade.php b/resources/views/kjpp/scripts/index.blade.php index c963810..c4f022b 100644 --- a/resources/views/kjpp/scripts/index.blade.php +++ b/resources/views/kjpp/scripts/index.blade.php @@ -14,6 +14,19 @@ }); } + function DeleteEditListeners() { + document.querySelectorAll(".delete-button-edit").forEach(button => { + button.addEventListener("click", function() { + this.closest( + ".flex.flex-col.lg\\:flex-row.gap-2.items-baseline.lg\\:items-center.w-full" + ) + .remove(); + }); + }); + } + + DeleteEditListeners(); + document.getElementById("tambah_email_kantor").addEventListener("click", function() { const newDiv = document.createElement("div"); newDiv.className = "flex flex-col lg:flex-row gap-2 items-baseline lg:items-center w-full"; diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index 0e5def9..ed2f7ab 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -42,9 +42,7 @@

- @foreach ($ijin_usaha as $iu) - {{ $iu->code }} - @endforeach + {{ $kjpp->nomor_ijin_usaha }}

@@ -53,22 +51,36 @@ Alamat Kantor
-

{{ $kjpp->address }} , Kel. - @foreach ($villages as $village) - {{ $village->name }} - @endforeach , Kec. - @foreach ($districts as $district) - {{ $district->name }} - @endforeach , - @foreach ($cities as $city) - {{ ucwords(strtolower($city->name)) }} - @endforeach , - @foreach ($provinces as $province) - {{ $province->name }} - @endforeach, Kode Pos. - @foreach ($villages as $village) - {{ $village->postal_code }} - @endforeach +

{{ $kjpp->address }} + @if (isset($kjpp->village_code)) + , Kel. + @foreach ($villages as $village) + {{ $village->name }} + @endforeach + @endif + @if (isset($kjpp->district_code)) + , Kec. + @foreach ($districts as $district) + {{ $district->name }} + @endforeach + @endif + @if (isset($kjpp->city_code)) + ,@foreach ($cities as $city) + {{ ucwords(strtolower($city->name)) }} + @endforeach + @endif + @if (isset($kjpp->province_code)) + , + @foreach ($provinces as $province) + {{ $province->name }} + @endforeach + @endif + @if (isset($kjpp->postal_code)) + , Kode Pos. + @foreach ($villages as $village) + {{ $village->postal_code }} + @endforeach + @endif

@@ -84,6 +96,13 @@

{{ $kjpp->email_kantor }}

+ @if (isset($kjpp->detail_email_kantor)) + @foreach (json_decode($kjpp->detail_email_kantor) as $detail_email_kantor) +

+ {{ $detail_email_kantor->email_kantor }} +

+ @endforeach + @endif
@@ -106,12 +125,26 @@

{{ $kjpp->nama_pic_reviewer }}

+ @if (isset($kjpp->detail_nama_pic_reviewer)) + @foreach (json_decode($kjpp->detail_nama_pic_reviewer) as $detail_nama_pic_reviewer) +

+ {{ $detail_nama_pic_reviewer->nama_pic_reviewer }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pic_reviewer }}

+ @if (isset($kjpp->detail_nomor_hp_pic_reviewer)) + @foreach (json_decode($kjpp->detail_nomor_hp_pic_reviewer) as $detail_nomor_hp_pic_reviewer) +

+ {{ $detail_nomor_hp_pic_reviewer->nomor_hp_pic_reviewer }} +

+ @endforeach + @endif
@@ -120,12 +153,26 @@

{{ $kjpp->nama_pic_admin }}

+ @if (isset($kjpp->detail_nama_pic_admin)) + @foreach (json_decode($kjpp->detail_nama_pic_admin) as $detail_nama_pic_admin) +

+ {{ $detail_nama_pic_admin->nama_pic_admin }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pic_admin }}

+ @if (isset($kjpp->detail_nomor_hp_pic_admin)) + @foreach (json_decode($kjpp->detail_nomor_hp_pic_admin) as $detail_nomor_hp_pic_admin) +

+ {{ $detail_nomor_hp_pic_admin->nomor_hp_pic_admin }} +

+ @endforeach + @endif
@@ -134,12 +181,26 @@

{{ $kjpp->nama_pic_marketing }}

+ @if (isset($kjpp->detail_nama_pic_marketing)) + @foreach (json_decode($kjpp->detail_nama_pic_marketing) as $detail_nama_pic_marketing) +

+ {{ $detail_nama_pic_marketing->nama_pic_marketing }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pic_marketing }}

+ @if (isset($kjpp->detail_nomor_hp_pic_marketing)) + @foreach (json_decode($kjpp->detail_nomor_hp_pic_marketing) as $detail_nomor_hp_pic_marketing) +

+ {{ $detail_nomor_hp_pic_marketing->nomor_hp_pic_marketing }} +

+ @endforeach + @endif
From 3cee8888bc0af30971549e14fe68b11b44d32662 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 7 Nov 2024 17:03:03 +0700 Subject: [PATCH 3/5] Memperbaiki tampilan pada show KJPP --- resources/views/kjpp/show.blade.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index ed2f7ab..f0d2cea 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -51,7 +51,7 @@ Alamat Kantor
-

{{ $kjpp->address }} +

{{ $kjpp->address }} @if (isset($kjpp->village_code)) , Kel. @foreach ($villages as $village) @@ -270,3 +270,19 @@

@endsection + +@push('styles') + +@endpush From 486f0d758b3e92580046324cb06a642feb8d07b8 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Mon, 11 Nov 2024 16:25:23 +0700 Subject: [PATCH 4/5] Menambahkan fitur nama pimpinan bisa lebih dari satu --- app/Http/Controllers/KJPPController.php | 72 ++++++++++++++++++- app/Http/Requests/KJPPRequest.php | 2 + .../2024_11_11_063934_update_kjpp_table.php | 30 ++++++++ resources/views/kjpp/create.blade.php | 72 +++++++++++++++---- resources/views/kjpp/scripts/index.blade.php | 25 +++++++ resources/views/kjpp/show.blade.php | 40 +++++++---- 6 files changed, 215 insertions(+), 26 deletions(-) create mode 100644 database/migrations/2024_11_11_063934_update_kjpp_table.php diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index e043735..875b256 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -55,8 +55,11 @@ class KJPPController extends Controller { $validated = $request->validated(); + if ($validated) { $detailEmailKantor = []; + $detailNamaPimpinan = []; + $detailNomorPicPimpinan = []; $detailNamaPicReviewer = []; $detailNomorHpPicReviewer = []; $detailNamaPicAdmin = []; @@ -65,6 +68,8 @@ class KJPPController extends Controller $detailNomorHpPicMarketing = []; $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $namaPimpinan = $request->input('detail_nama_pimpinan.nama_pimpinan', []); + $nomorHpPimpinan = $request->input('detail_nomor_hp_pimpinan.nomor_hp_pimpinan', []); $namaPicReviewer = $request->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); $nomorHpPicReviewer = $request->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); $namaPicAdmin = $request->input('detail_nama_pic_admin.nama_pic_admin', []); @@ -80,6 +85,22 @@ class KJPPController extends Controller // Encode to JSON and store $detailEmailKantorJson = json_encode($detailEmailKantor); + // Process detail_nama_pimpinan + foreach ($namaPimpinan as $value) { + $detailNamaPimpinan[] = [ + 'nama_pimpinan' => $value + ]; + } + $detailNamaPimpinanJson = json_encode($detailNamaPimpinan); + + // Process detail_nomor_pic_pimpinan + foreach ($nomorHpPimpinan as $value) { + $detailNomorPicPimpinan[] = [ + 'nomor_hp_pimpinan' => $value + ]; + } + $detailNomorPicPimpinanJson = json_encode($detailNomorPicPimpinan); + // Process detail_nama_pic_reviewer foreach ($namaPicReviewer as $value) { $detailNamaPicReviewer[] = [ @@ -141,6 +162,8 @@ class KJPPController extends Controller } $validated['detail_email_kantor'] = $detailEmailKantorJson; + $validated['detail_nama_pimpinan'] = $detailNamaPimpinanJson; + $validated['detail_nomor_hp_pimpinan'] = $detailNomorPicPimpinanJson; $validated['detail_nama_pic_reviewer'] = $detailNamaPicReviewerJson; $validated['detail_nomor_hp_pic_reviewer'] = $detailNomorHpPicReviewerJson; $validated['detail_nama_pic_admin'] = $detailNamaPicAdminJson; @@ -181,6 +204,8 @@ class KJPPController extends Controller $districts = District::where('code', $kjpp->district_code)->get(); $villages = Village::where('code', $kjpp->village_code)->get(); $detailEmailKantor = json_decode($kjpp->detail_email_kantor); + $detailNamaPimpinan = json_decode($kjpp->detail_nama_pimpinan); + $detailNomorHpPimpinan = json_decode($kjpp->detail_nomor_hp_pimpinan); $detailNamaPicReviewer = json_decode($kjpp->detail_nama_pic_reviewer); $detailNomorHpPicReviewer = json_decode($kjpp->detail_nomor_hp_pic_reviewer); $detailNamaPicAdmin = json_decode($kjpp->detail_nama_pic_admin); @@ -188,6 +213,14 @@ class KJPPController extends Controller $detailNamaPicMarketing = json_decode($kjpp->detail_nama_pic_marketing); $detailNomorHpPicMarketing = json_decode($kjpp->detail_nomor_hp_pic_marketing); + $detailJoinPimpinan = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pimpinan' => $nama->nama_pimpinan, + 'nomor_hp_pimpinan' => $nomor->nomor_hp_pimpinan + ]; + }, $detailNamaPimpinan, $detailNomorHpPimpinan)); + + $detailJoinPicReviewer = json_encode(array_map(function ($nama, $nomor) { return [ 'nama_pic_reviewer' => $nama->nama_pic_reviewer, @@ -209,7 +242,7 @@ class KJPPController extends Controller ]; }, $detailNamaPicMarketing, $detailNomorHpPicMarketing)); - return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'kjpp', 'provinces', 'cities', 'districts', 'villages', 'detailEmailKantor', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing')); + return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'kjpp', 'provinces', 'cities', 'districts', 'villages', 'detailEmailKantor', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing', 'detailJoinPimpinan')); } /** @@ -225,6 +258,8 @@ class KJPPController extends Controller $districts = District::where('city_code', $kjpp->city_code)->get(); $villages = Village::where('district_code', $kjpp->district_code)->get(); $detailEmailKantor = json_decode($kjpp->detail_email_kantor); + $detailNamaPimpinan = json_decode($kjpp->detail_nama_pimpinan); + $detailNomorHpPimpinan = json_decode($kjpp->detail_nomor_hp_pimpinan); $detailNamaPicReviewer = json_decode($kjpp->detail_nama_pic_reviewer); $detailNomorHpPicReviewer = json_decode($kjpp->detail_nomor_hp_pic_reviewer); $detailNamaPicAdmin = json_decode($kjpp->detail_nama_pic_admin); @@ -232,6 +267,17 @@ class KJPPController extends Controller $detailNamaPicMarketing = json_decode($kjpp->detail_nama_pic_marketing); $detailNomorHpPicMarketing = json_decode($kjpp->detail_nomor_hp_pic_marketing); + // dd($detailNamaPimpinan); + + $detailJoinPimpinan = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pimpinan' => $nama->nama_pimpinan, + 'nomor_hp_pimpinan' => $nomor->nomor_hp_pimpinan + ]; + }, $detailNamaPimpinan, $detailNomorHpPimpinan)); + + // dd($detailJoinPimpinan); + $detailJoinPicReviewer = json_encode(array_map(function ($nama, $nomor) { return [ 'nama_pic_reviewer' => $nama->nama_pic_reviewer, @@ -253,7 +299,7 @@ class KJPPController extends Controller ]; }, $detailNamaPicMarketing, $detailNomorHpPicMarketing)); - return view('lpj::kjpp.create', compact('kjpp', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing', 'detailEmailKantor')); + return view('lpj::kjpp.create', compact('kjpp', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing', 'detailEmailKantor', 'detailJoinPimpinan')); } /** @@ -267,6 +313,8 @@ class KJPPController extends Controller if ($validated) { $detailEmailKantor = []; + $detailNamaPimpinan = []; + $detailNomorHpPimpinan = []; $detailNamaPicReviewer = []; $detailNomorHpPicReviewer = []; $detailNamaPicAdmin = []; @@ -275,6 +323,8 @@ class KJPPController extends Controller $detailNomorHpPicMarketing = []; $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $namaPimpinan = $request->input('detail_nama_pimpinan.nama_pimpinan', []); + $nomorHpPimpinan = $request->input('detail_nomor_hp_pimpinan.nomor_hp_pimpinan', []); $namaPicReviewer = $request->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); $nomorHpPicReviewer = $request->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); $namaPicAdmin = $request->input('detail_nama_pic_admin.nama_pic_admin', []); @@ -290,6 +340,22 @@ class KJPPController extends Controller // Encode to JSON and store $detailEmailKantorJson = json_encode($detailEmailKantor); + // Process detail_nama_pimpinan + foreach ($namaPimpinan as $value) { + $detailNamaPimpinan[] = [ + 'nama_pimpinan' => $value + ]; + } + $detailNamaPimpinanJson = json_encode($detailNamaPimpinan); + + // Process detail_nomor_hp_pimpinan + foreach ($nomorHpPimpinan as $value) { + $detailNomorHpPimpinan[] = [ + 'nomor_hp_pimpinan' => $value + ]; + } + $detailNomorHpPimpinanJson = json_encode($detailNomorHpPimpinan); + // Process detail_nama_pic_reviewer foreach ($namaPicReviewer as $value) { $detailNamaPicReviewer[] = [ @@ -359,6 +425,8 @@ class KJPPController extends Controller } $validated['detail_email_kantor'] = $detailEmailKantorJson; + $validated['detail_nama_pimpinan'] = $detailNamaPimpinanJson; + $validated['detail_nomor_hp_pimpinan'] = $detailNomorHpPimpinanJson; $validated['detail_nama_pic_reviewer'] = $detailNamaPicReviewerJson; $validated['detail_nomor_hp_pic_reviewer'] = $detailNomorHpPicReviewerJson; $validated['detail_nama_pic_admin'] = $detailNamaPicAdminJson; diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php index 6a693a8..dedf16d 100644 --- a/app/Http/Requests/KJPPRequest.php +++ b/app/Http/Requests/KJPPRequest.php @@ -25,7 +25,9 @@ class KJPPRequest extends FormRequest 'email_kantor' => 'required|email', 'detail_email_kantor' => 'nullable', 'nama_pimpinan' => 'required|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pimpinan' => 'nullable', 'nomor_hp_pimpinan' => 'required|numeric|digits_between:10,15', + 'detail_nomor_pic_pimpinan' => 'nullable', 'nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', 'detail_nama_pic_reviewer' => 'nullable', 'nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', diff --git a/database/migrations/2024_11_11_063934_update_kjpp_table.php b/database/migrations/2024_11_11_063934_update_kjpp_table.php new file mode 100644 index 0000000..6237a41 --- /dev/null +++ b/database/migrations/2024_11_11_063934_update_kjpp_table.php @@ -0,0 +1,30 @@ +string('detail_nama_pimpinan')->nullable()->after('nama_pimpinan'); + $table->string('detail_nomor_hp_pimpinan')->nullable()->after('nomor_hp_pimpinan'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('kjpp', function (Blueprint $table) { + $table->dropColumn('detail_nama_pimpinan'); + $table->dropColumn('detail_nomor_hp_pimpinan'); + }); + } +}; diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 46fba2a..1bd1ff7 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -273,6 +273,50 @@ @enderror
+
+
+ @if (isset($kjpp->detail_nama_pimpinan) && isset($kjpp->detail_nomor_hp_pimpinan)) + @foreach (json_decode($detailJoinPimpinan) as $detail_pimpinan) +
+ +
+ + @error('nama_pimpinan') + {{ $message }} + @enderror +
+ +
+ + @error('nomor_hp_pimpinan') + {{ $message }} + @enderror +
+ +
+ @endforeach + @endif +
+
+
+ +
+ +
+
diff --git a/resources/views/kjpp/scripts/index.blade.php b/resources/views/kjpp/scripts/index.blade.php index c4f022b..118969c 100644 --- a/resources/views/kjpp/scripts/index.blade.php +++ b/resources/views/kjpp/scripts/index.blade.php @@ -41,6 +41,31 @@ addDeleteListeners(); }); + const namaPimpinanDiv = document.getElementById('detail_nama_pimpinan'); + + document.getElementById("tambah_nama_pimpinan").addEventListener("click", function() { + const newDiv = document.createElement("div"); + newDiv.className = "flex flex-col lg:flex-row gap-2 items-baseline lg:items-center w-full"; + newDiv.innerHTML = ` + +
+ +
+ +
+ +
+ + `; + namaPimpinanDiv.appendChild(newDiv); + + addDeleteListeners(); + }); + const namaPicReviewerDiv = document.getElementById('detail_nama_pic_reviewer'); document.getElementById("tambah_nama_pic_reviewer").addEventListener("click", function() { diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index f0d2cea..2ca826d 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -111,12 +111,26 @@

{{ $kjpp->nama_pimpinan }}

+ @if (isset($kjpp->detail_nama_pimpinan)) + @foreach (json_decode($detailJoinPimpinan) as $detail_nama_pimpinan) +

+ {{ $detail_nama_pimpinan->nama_pimpinan }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pimpinan }}

+ @if (isset($kjpp->detail_nomor_hp_pimpinan)) + @foreach (json_decode($detailJoinPimpinan) as $detail_nomor_hp_pimpinan) +

+ {{ $detail_nomor_hp_pimpinan->nomor_hp_pimpinan }} +

+ @endforeach + @endif
@@ -124,9 +138,9 @@ Nama PIC Reviewer
-

{{ $kjpp->nama_pic_reviewer }}

+

{{ $kjpp->nama_pic_reviewer ?? '-' }}

@if (isset($kjpp->detail_nama_pic_reviewer)) - @foreach (json_decode($kjpp->detail_nama_pic_reviewer) as $detail_nama_pic_reviewer) + @foreach (json_decode($detailJoinPicReviewer) as $detail_nama_pic_reviewer)

{{ $detail_nama_pic_reviewer->nama_pic_reviewer }}

@@ -137,9 +151,10 @@ Nomor HP PIC Reviewer
-

{{ $kjpp->nomor_hp_pic_reviewer }}

+

{{ $kjpp->nomor_hp_pic_reviewer ?? '-' }} +

@if (isset($kjpp->detail_nomor_hp_pic_reviewer)) - @foreach (json_decode($kjpp->detail_nomor_hp_pic_reviewer) as $detail_nomor_hp_pic_reviewer) + @foreach (json_decode($detailJoinPicReviewer) as $detail_nomor_hp_pic_reviewer)

{{ $detail_nomor_hp_pic_reviewer->nomor_hp_pic_reviewer }}

@@ -152,9 +167,9 @@ Nama PIC Admin
-

{{ $kjpp->nama_pic_admin }}

+

{{ $kjpp->nama_pic_admin ?? '-' }}

@if (isset($kjpp->detail_nama_pic_admin)) - @foreach (json_decode($kjpp->detail_nama_pic_admin) as $detail_nama_pic_admin) + @foreach (json_decode($detailJoinPicAdmin) as $detail_nama_pic_admin)

{{ $detail_nama_pic_admin->nama_pic_admin }}

@@ -165,9 +180,9 @@ Nomor HP PIC Admin
-

{{ $kjpp->nomor_hp_pic_admin }}

+

{{ $kjpp->nomor_hp_pic_admin ?? '-' }}

@if (isset($kjpp->detail_nomor_hp_pic_admin)) - @foreach (json_decode($kjpp->detail_nomor_hp_pic_admin) as $detail_nomor_hp_pic_admin) + @foreach (json_decode($detailJoinPicAdmin) as $detail_nomor_hp_pic_admin)

{{ $detail_nomor_hp_pic_admin->nomor_hp_pic_admin }}

@@ -180,9 +195,9 @@ Nama PIC Marketing
-

{{ $kjpp->nama_pic_marketing }}

+

{{ $kjpp->nama_pic_marketing ?? '-' }}

@if (isset($kjpp->detail_nama_pic_marketing)) - @foreach (json_decode($kjpp->detail_nama_pic_marketing) as $detail_nama_pic_marketing) + @foreach (json_decode($detailJoinPicMarketing) as $detail_nama_pic_marketing)

{{ $detail_nama_pic_marketing->nama_pic_marketing }}

@@ -193,9 +208,10 @@ Nomor HP PIC Marketing
-

{{ $kjpp->nomor_hp_pic_marketing }}

+

{{ $kjpp->nomor_hp_pic_marketing ?? '-' }} +

@if (isset($kjpp->detail_nomor_hp_pic_marketing)) - @foreach (json_decode($kjpp->detail_nomor_hp_pic_marketing) as $detail_nomor_hp_pic_marketing) + @foreach (json_decode($detailJoinPicMarketing) as $detail_nomor_hp_pic_marketing)

{{ $detail_nomor_hp_pic_marketing->nomor_hp_pic_marketing }}

From e2061a3f5dbe8562ac505552e6c6d3de546c0b25 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Tue, 12 Nov 2024 10:27:44 +0700 Subject: [PATCH 5/5] Mengubah urutan berdasarkan Nomor KJPP secara ascending --- app/Http/Controllers/KJPPController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 875b256..d41e077 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -477,8 +477,8 @@ class KJPPController extends Controller //abort(403, 'Sorry! You are not allowed to view users.'); } - // Retrieve data from the database - $query = KJPP::query(); + // Retrieve data from the database order by code ascending + $query = KJPP::query()->orderBy('code', 'asc'); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) {