diff --git a/app/Http/Controllers/PemilikJaminanController.php b/app/Http/Controllers/PemilikJaminanController.php new file mode 100644 index 0000000..63a0724 --- /dev/null +++ b/app/Http/Controllers/PemilikJaminanController.php @@ -0,0 +1,111 @@ +get(); + + return view( + 'lpj::debitur.edit', + compact('debitur', 'pemilikJaminan'), + ); + } + + public function store(PemilikJaminanRequest $request, $id) + { + $validate = $request->validated(); + if ($validate) { + try { + PemilikJaminan::create($validate); + + return redirect()->route('debitur.pemilik.index', $id); + } catch (Exception $e) { + print_r($e->getMessage()); + exit; + } + } + } + + public function create($id) + { + $debitur = Debiture::find($id); + $provinces = Province::all(); + $hubunganPemilik = HubunganPemilikJaminan::all(); + + return view( + 'lpj::pemilik_jaminan.form', + compact('debitur', 'provinces', 'hubunganPemilik'), + ); + } + + public function update(PemilikJaminanRequest $request, $id, $pemilik) + { + $validate = $request->validated(); + if ($validate) { + try { + $pemilik = PemilikJaminan::find($pemilik); + $pemilik->update($validate); + + return redirect()->route('debitur.pemilik.index', $id); + } catch (Exception $e) { + print_r($e->getMessage()); + exit; + } + } + } + + public function edit($id, $pemilik) + { + $pemilik = PemilikJaminan::find($pemilik); + $debitur = Debiture::find($pemilik->debiture_id); + $provinces = Province::all(); + $cities = City::where('province_code', $pemilik->province_code)->get(); + $districts = District::where('city_code', $pemilik->city_code)->get(); + $villages = Village::where('district_code', $pemilik->district_code)->get(); + $hubunganPemilik = HubunganPemilikJaminan::all(); + + return view( + 'lpj::pemilik_jaminan.form', + compact( + 'debitur', + 'provinces', + 'cities', + 'districts', + 'villages', + 'hubunganPemilik', + 'pemilik', + ), + ); + } + + public function destroy($id, $pemilik_id) + { + try { + $jaminan = PemilikJaminan::find($pemilik_id); + $jaminan->delete(); + echo json_encode(['success' => true, 'message' => 'Pemilik Jaminan deleted successfully']); + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete Pemilik Jaminan']); + } + } + } diff --git a/app/Http/Requests/DokumenJaminanRequest.php b/app/Http/Requests/DokumenJaminanRequest.php index 0fa33d6..427b732 100644 --- a/app/Http/Requests/DokumenJaminanRequest.php +++ b/app/Http/Requests/DokumenJaminanRequest.php @@ -13,6 +13,7 @@ : array { $rules = [ + 'debiture_id' => 'required|exists:debtures,id', 'pemilik_jaminan_id' => 'required', 'jenis_jaminan_id' => 'required', 'jenis_legalitas_jaminan_id' => 'required', diff --git a/app/Http/Requests/PemilikJaminanRequest.php b/app/Http/Requests/PemilikJaminanRequest.php new file mode 100644 index 0000000..dd4a11d --- /dev/null +++ b/app/Http/Requests/PemilikJaminanRequest.php @@ -0,0 +1,44 @@ + 'required|exists:debitures,id', + 'npwp' => 'nullable|string|max:16', + 'email' => 'nullable|email|max:100', + 'phone' => 'nullable|string|max:20', + 'hubungan_pemilik_jaminan_id' => 'nullable|exists:hubungan_pemilik_jaminan,id', + 'province_code' => 'nullable|exists:provinces,code', + 'city_code' => 'nullable|exists:cities,code', + 'district_code' => 'nullable|exists:districts,code', + 'village_code' => 'nullable|exists:villages,code', + 'name' => 'required', + 'address' => 'nullable|string', + 'postal_code' => 'nullable|string|max:10', + 'status' => 'nullable|boolean', + ]; + + $rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,nomor_id,debiture_id,' . $this->debiture_id; + + return $rules; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize() + : bool + { + return true; + } + } diff --git a/app/Models/PemilikJaminan.php b/app/Models/PemilikJaminan.php new file mode 100644 index 0000000..d92dc0c --- /dev/null +++ b/app/Models/PemilikJaminan.php @@ -0,0 +1,67 @@ +belongsTo(Province::class, 'province_code', 'code'); + } + + public function city() + { + return $this->belongsTo(City::class, 'city_code', 'code'); + } + + public function district() + { + return $this->belongsTo(District::class, 'district_code', 'code'); + } + + public function village() + { + return $this->belongsTo(Village::class, 'village_code', 'code'); + } + + public function debitur(){ + return $this->belongsTo(Debiture::class, 'debiture_id', 'id'); + } + + public function dokumen(){ + return $this->hasMany(DokumenJaminan::class, 'pemilik_jaminan_id', 'id'); + } + + public function hubungan_pemilik(){ + return $this->belongsTo(HubunganPemilikJaminan::class, 'hubungan_pemilik_jaminan_id', 'id'); + } +} diff --git a/database/migrations/2024_08_20_090307_create_pemilik_jaminan_table.php b/database/migrations/2024_08_20_090307_create_pemilik_jaminan_table.php new file mode 100644 index 0000000..3c41137 --- /dev/null +++ b/database/migrations/2024_08_20_090307_create_pemilik_jaminan_table.php @@ -0,0 +1,52 @@ +id(); + $table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade'); + $table->foreignIdFor(HubunganPemilikJaminan::class)->constrained('hubungan_pemilik_jaminan')->onDelete('cascade'); + $table->string('name'); + $table->string('npwp', 16)->nullable(); + $table->string('nomor_id', 16)->nullable(); + $table->string('email', 100)->nullable(); + $table->string('phone', 15)->nullable(); + $table->string('province_code')->nullable()->index(); + $table->string('city_code')->nullable()->index(); + $table->string('district_code')->nullable()->index(); + $table->string('village_code')->nullable()->index(); + $table->string('postal_code', 5)->nullable(); + $table->text('address')->nullable(); + + $table->boolean('status')->default(true)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->softDeletes(); + + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pemilik_jaminan'); + } +}; diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index ac632a0..0361015 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -9,7 +9,7 @@ Debitur
{{ $debitur->name }} | {{ $debitur->address.', '.$debitur->village->name.', '.$debitur->city->name.', '.$debitur->province->name.', '.$debitur->postal_code }}
+ {{ $pemilik->nomor_id }} +
++ {{ $pemilik->npwp }} +
++ {{ $pemilik->phone }} +
++ {{ $pemilik->email }} +
++ {{ $pemilik->address.', '.$pemilik->village->name.', '.$pemilik->city->name.', '.$pemilik->province->name.', '.$pemilik->postal_code }} +
+