From d560b37d5649e0741e1a3e5715c6e4e1178028ae Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 7 Nov 2024 15:21:31 +0700 Subject: [PATCH] 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