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 @@ -