Update Dokumen Jaminan

- Move to Dokumen Jaminan Controller, for easy maintenance
- grouping router
This commit is contained in:
Daeng Deni Mardaeni 2024-08-22 11:48:27 +07:00
parent 9c05779fbd
commit 0bdade3456
8 changed files with 224 additions and 194 deletions

View File

@ -69,152 +69,6 @@
);
}
public function jaminan($id)
{
$debitur = Debiture::find($id);
$documents = DokumenJaminan::with('pemilik')->where('debiture_id', $id)->get();
return view(
'lpj::debitur.edit',
compact('debitur', 'documents'),
);
}
public function createJaminan($id)
{
$debitur = Debiture::find($id);
$provinces = Province::all();
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
return view(
'lpj::debitur.jaminan',
compact('debitur', 'provinces', 'jenisJaminan', 'jenisLegalitasJaminan'),
);
}
public function storeJaminan(DokumenJaminanRequest $request, $id)
{
$debitur = Debiture::find($id);
$validate = $request->validated();
if ($validate) {
try {
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'npwp' => $debitur->npwp,
'email' => $debitur->email,
'phone' => $debitur->phone,
'province_code' => $debitur->province_code,
'city_code' => $debitur->city_code,
'district_code' => $debitur->district_code,
'village_code' => $debitur->village_code,
'postal_code' => $debitur->postal_code,
'address' => $debitur->address,
];
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
}
if ($request->hasFile('dokumen_jaminan')) {
$file = $request->file('dokumen_jaminan');
$file_name = $file->getClientOriginalName();
$file->storeAs('public/jaminan/' . $debitur->id, $file_name);
$validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name;
}
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
DokumenJaminan::create($validate);
return redirect()->route('debitur.jaminan', $id);
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
}
}
public function updateJaminan(DokumenJaminanRequest $request, $id, $jaminan)
{
$debitur = Debiture::find($id);
$validate = $request->validated();
if ($validate) {
try {
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'npwp' => $debitur->npwp,
'email' => $debitur->email,
'phone' => $debitur->phone,
'province_code' => $debitur->province_code,
'city_code' => $debitur->city_code,
'district_code' => $debitur->district_code,
'village_code' => $debitur->village_code,
'postal_code' => $debitur->postal_code,
'address' => $debitur->address,
];
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
}
if ($request->hasFile('dokumen_jaminan')) {
$file = $request->file('dokumen_jaminan');
$file_name = $file->getClientOriginalName();
$file->storeAs('public/jaminan/' . $debitur->id, $file_name);
$validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name;
}
$document = DokumenJaminan::find($jaminan);
$document->update($validate);
return redirect()->route('debitur.jaminan', $id);
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
}
}
public function editJaminan($id, $jaminan)
{
$document = DokumenJaminan::find($jaminan);
$debitur = Debiture::find($document->debiture_id);
$provinces = Province::all();
$cities = City::where('province_code', $document->province_code)->get();
$districts = District::where('city_code', $document->city_code)->get();
$villages = Village::where('district_code', $document->district_code)->get();
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$pemilikJaminan = PemilikJaminan::all();
return view(
'lpj::debitur.jaminan',
compact(
'debitur',
'provinces',
'jenisJaminan',
'jenisLegalitasJaminan',
'document',
'cities',
'districts',
'villages',
'pemilikJaminan',
),
);
}
public function update(DebitureRequest $request, $id)
{
$validate = $request->validated();
@ -248,17 +102,6 @@
}
}
public function destroyJaminan($id, $jaminan_id)
{
try {
$jaminan = DokumenJaminan::find($jaminan_id);
$jaminan->delete();
echo json_encode(['success' => true, 'message' => 'Dokumen Jaminan deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete Dokumen Jaminan']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('debitur.view')) {

View File

@ -0,0 +1,181 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Modules\Location\Models\City;
use Modules\Location\Models\District;
use Modules\Location\Models\Province;
use Modules\Location\Models\Village;
use Modules\Lpj\Http\Requests\DokumenJaminanRequest;
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Models\JenisLegalitasJaminan;
use Modules\Lpj\Models\PemilikJaminan;
class DokumenJaminanController extends Controller
{
public $user;
public function index($id)
{
$debitur = Debiture::find($id);
$documents = DokumenJaminan::with('pemilik')->where('debiture_id', $id)->get();
return view(
'lpj::debitur.edit',
compact('debitur', 'documents'),
);
}
public function store(DokumenJaminanRequest $request, $id)
{
$debitur = Debiture::find($id);
$validate = $request->validated();
if ($validate) {
try {
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'hubungan_pemilik_jaminan_id' => 1,
'npwp' => $debitur->npwp,
'email' => $debitur->email,
'phone' => $debitur->phone,
'province_code' => $debitur->province_code,
'city_code' => $debitur->city_code,
'district_code' => $debitur->district_code,
'village_code' => $debitur->village_code,
'postal_code' => $debitur->postal_code,
'address' => $debitur->address,
];
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
}
if ($request->hasFile('dokumen_jaminan')) {
$file = $request->file('dokumen_jaminan');
$file_name = $file->getClientOriginalName();
$file->storeAs('public/jaminan/' . $debitur->id, $file_name);
$validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name;
}
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
DokumenJaminan::create($validate);
return redirect()->route('debitur.jaminan.index', $id);
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
}
}
public function create($id)
{
$debitur = Debiture::find($id);
$provinces = Province::all();
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
return view(
'lpj::debitur.jaminan',
compact('debitur', 'provinces', 'jenisJaminan', 'jenisLegalitasJaminan'),
);
}
public function update(DokumenJaminanRequest $request, $id, $jaminan)
{
$debitur = Debiture::find($id);
$validate = $request->validated();
if ($validate) {
try {
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'hubungan_pemilik_jaminan_id' => 1,
'npwp' => $debitur->npwp,
'email' => $debitur->email,
'phone' => $debitur->phone,
'province_code' => $debitur->province_code,
'city_code' => $debitur->city_code,
'district_code' => $debitur->district_code,
'village_code' => $debitur->village_code,
'postal_code' => $debitur->postal_code,
'address' => $debitur->address,
];
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
}
if ($request->hasFile('dokumen_jaminan')) {
$file = $request->file('dokumen_jaminan');
$file_name = $file->getClientOriginalName();
$file->storeAs('public/jaminan/' . $debitur->id, $file_name);
$validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name;
}
$document = DokumenJaminan::find($jaminan);
$document->update($validate);
return redirect()->route('debitur.jaminan.index', $id);
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
}
}
public function edit($id, $jaminan)
{
$document = DokumenJaminan::find($jaminan);
$debitur = Debiture::find($document->debiture_id);
$provinces = Province::all();
$cities = City::where('province_code', $document->province_code)->get();
$districts = District::where('city_code', $document->city_code)->get();
$villages = Village::where('district_code', $document->district_code)->get();
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$pemilikJaminan = PemilikJaminan::all();
return view(
'lpj::debitur.jaminan',
compact(
'debitur',
'provinces',
'jenisJaminan',
'jenisLegalitasJaminan',
'document',
'cities',
'districts',
'villages',
'pemilikJaminan',
),
);
}
public function destroy($id, $jaminan_id)
{
try {
$jaminan = DokumenJaminan::find($jaminan_id);
$jaminan->delete();
echo json_encode(['success' => true, 'message' => 'Dokumen Jaminan deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete Dokumen Jaminan']);
}
}
}

View File

@ -18,10 +18,10 @@ use Illuminate\Support\Facades\Schema;
Schema::create('dokumen_jaminan', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->foreignIdFor(Debiture::class)->constrained()->onDelete('cascade');
$table->foreignIdFor(JenisJaminan::class)->constrained()->onDelete('cascade');
$table->foreignIdFor(PemilikJaminan::class)->constrained()->onDelete('cascade');
$table->foreignIdFor(JenisLegalitasJaminan::class)->constrained()->onDelete('cascade');
$table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade');
$table->foreignIdFor(JenisJaminan::class)->constrained('jenis_jaminan')->onDelete('cascade');
$table->foreignIdFor(PemilikJaminan::class)->constrained('pemilik_jaminan')->onDelete('cascade');
$table->foreignIdFor(JenisLegalitasJaminan::class)->constrained('jenis_legalitas_jaminan')->onDelete('cascade');
$table->string('province_code')->nullable()->index();
$table->string('city_code')->nullable()->index();
$table->string('district_code')->nullable()->index();

View File

@ -22,6 +22,7 @@
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
<option value="">Pilih Pemilik Jaminan</option>
<option value="0">Sama Dengan Debitur</option>
@if(isset($pemilikJaminan))
@foreach($pemilikJaminan as $pemilik)
@if(isset($document))
<option value="{{ $pemilik->id }}" {{ isset($document->pemilik_jaminan_id) && $document->pemilik_jaminan_id == $pemilik->id?'selected' : '' }}>
@ -33,6 +34,7 @@
</option>
@endif
@endforeach
@endif
</select>
<span class="btn btn-light">
<i class="ki-outline ki-plus-squared"></i> Tambah Pemilik Jaminan
@ -107,7 +109,8 @@
<div class="flex flex-wrap items-baseline w-full">
<input class="file-input @error('dokumen_jaminan') border-danger @enderror" type="file" name="dokumen_jaminan" value="">
@if(isset($document->dokumen_jaminan))
<a href="{{ route('debitur.download',$document->id) }}" class="mt-1 badge badge-sm badge-outline">{{ basename($document->dokumen_jaminan) }} <i class="ki-filled ki-cloud-download"></i></a>
<a href="{{ route('debitur.download',$document->id) }}" class="mt-1 badge badge-sm badge-outline">{{ basename($document->dokumen_jaminan) }}
<i class="ki-filled ki-cloud-download"></i></a>
@endif
@error('dokumen_jaminan')
<em class="alert text-danger text-sm">{{ $message }}</em>

View File

@ -11,7 +11,7 @@
<div class="card-header" id="basic_settings">
<div class="card-title flex flex-row gap-1.5">
<a href="{{ route('debitur.edit',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.edit') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Debitur</a>
<a href="{{ route('debitur.jaminan',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.jaminan') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Pinjaman</a>
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.jaminan') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Pinjaman</a>
</div>
<div class="flex items-center gap-2">
<a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>

View File

@ -13,7 +13,7 @@
{{ isset($document->id) ? 'Edit' : 'Tambah' }} Data Jaminan
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('debitur.jaminan',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body">

View File

@ -202,18 +202,18 @@
$trail->push('Data Debitur');
});
Breadcrumbs::for('debitur.jaminan', function (BreadcrumbTrail $trail) {
Breadcrumbs::for('debitur.jaminan.index', function (BreadcrumbTrail $trail) {
$trail->parent('debitur');
$trail->push('Data Jaminan Debitur');
});
Breadcrumbs::for('debitur.jaminan.create', function (BreadcrumbTrail $trail) {
$trail->parent('debitur.jaminan');
$trail->parent('debitur.jaminan.index');
$trail->push('Tambah Data Jaminan Debitur');
});
Breadcrumbs::for('debitur.jaminan.edit', function (BreadcrumbTrail $trail) {
$trail->parent('debitur.jaminan');
$trail->parent('debitur.jaminan.index');
$trail->push('Edit Data Jaminan Debitur');
});

View File

@ -5,6 +5,7 @@
use Modules\Lpj\Http\Controllers\BranchController;
use Modules\Lpj\Http\Controllers\CurrencyController;
use Modules\Lpj\Http\Controllers\DebitureController;
use Modules\Lpj\Http\Controllers\DokumenJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPemilikJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPenghuniJaminanController;
use Modules\Lpj\Http\Controllers\JenisAsetController;
@ -155,12 +156,14 @@
Route::get('export', [DebitureController::class, 'export'])->name('export');
Route::get('{id}/jaminan', [DebitureController::class, 'jaminan'])->name('jaminan');
Route::get('{id}/jaminan/create', [DebitureController::class, 'createJaminan'])->name('jaminan.create');
Route::get('{id}/jaminan/{jaminan}/edit', [DebitureController::class,'editJaminan'])->name('jaminan.edit');
Route::put('{id}/jaminan/{jaminan}', [DebitureController::class, 'updateJaminan'])->name('jaminan.update');
Route::post('{id}/jaminan/store', [DebitureController::class,'storeJaminan'])->name('jaminan.store');
Route::delete('{id}/jaminan/{jaminan}', [DebitureController::class, 'destroyJaminan'])->name('jaminan.destroy');
Route::name('jaminan.')->prefix('{id}/jaminan')->group(function(){
Route::get('/', [DokumenJaminanController::class, 'index'])->name('index');
Route::get('create', [DokumenJaminanController::class, 'create'])->name('create');
Route::get('{jaminan}/edit', [DokumenJaminanController::class,'edit'])->name('edit');
Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update');
Route::post('store', [DokumenJaminanController::class,'store'])->name('store');
Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy');
});
});
Route::resource('debitur', DebitureController::class);