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) public function update(DebitureRequest $request, $id)
{ {
$validate = $request->validated(); $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) public function dataForDatatables(Request $request)
{ {
if (is_null($this->user) || !$this->user->can('debitur.view')) { 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) { Schema::create('dokumen_jaminan', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('name'); $table->string('name');
$table->foreignIdFor(Debiture::class)->constrained()->onDelete('cascade'); $table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade');
$table->foreignIdFor(JenisJaminan::class)->constrained()->onDelete('cascade'); $table->foreignIdFor(JenisJaminan::class)->constrained('jenis_jaminan')->onDelete('cascade');
$table->foreignIdFor(PemilikJaminan::class)->constrained()->onDelete('cascade'); $table->foreignIdFor(PemilikJaminan::class)->constrained('pemilik_jaminan')->onDelete('cascade');
$table->foreignIdFor(JenisLegalitasJaminan::class)->constrained()->onDelete('cascade'); $table->foreignIdFor(JenisLegalitasJaminan::class)->constrained('jenis_legalitas_jaminan')->onDelete('cascade');
$table->string('province_code')->nullable()->index(); $table->string('province_code')->nullable()->index();
$table->string('city_code')->nullable()->index(); $table->string('city_code')->nullable()->index();
$table->string('district_code')->nullable()->index(); $table->string('district_code')->nullable()->index();

View File

@ -22,17 +22,19 @@
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id"> <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="">Pilih Pemilik Jaminan</option>
<option value="0">Sama Dengan Debitur</option> <option value="0">Sama Dengan Debitur</option>
@foreach($pemilikJaminan as $pemilik) @if(isset($pemilikJaminan))
@if(isset($document)) @foreach($pemilikJaminan as $pemilik)
<option value="{{ $pemilik->id }}" {{ isset($document->pemilik_jaminan_id) && $document->pemilik_jaminan_id == $pemilik->id?'selected' : '' }}> @if(isset($document))
{{ $pemilik->name }} <option value="{{ $pemilik->id }}" {{ isset($document->pemilik_jaminan_id) && $document->pemilik_jaminan_id == $pemilik->id?'selected' : '' }}>
</option> {{ $pemilik->name }}
@else </option>
<option value="{{ $pemilik-id }}"> @else
{{ $Pemilik->name }} <option value="{{ $pemilik-id }}">
</option> {{ $Pemilik->name }}
@endif </option>
@endforeach @endif
@endforeach
@endif
</select> </select>
<span class="btn btn-light"> <span class="btn btn-light">
<i class="ki-outline ki-plus-squared"></i> Tambah Pemilik Jaminan <i class="ki-outline ki-plus-squared"></i> Tambah Pemilik Jaminan
@ -88,17 +90,17 @@
@enderror @enderror
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Nama Dokumen Nama Dokumen
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger @enderror" type="text " id="name" name="name" value="{{ $document->name ?? '' }}" placeholder="Nama Dokumen"> <input class="input @error('name') border-danger @enderror" type="text " id="name" name="name" value="{{ $document->name ?? '' }}" placeholder="Nama Dokumen">
@error('name') @error('name')
<em class="alert text-danger text-sm">{{ $message }}</em> <em class="alert text-danger text-sm">{{ $message }}</em>
@enderror @enderror
</div>
</div> </div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
@ -107,7 +109,8 @@
<div class="flex flex-wrap items-baseline w-full"> <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=""> <input class="file-input @error('dokumen_jaminan') border-danger @enderror" type="file" name="dokumen_jaminan" value="">
@if(isset($document->dokumen_jaminan)) @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 @endif
@error('dokumen_jaminan') @error('dokumen_jaminan')
<em class="alert text-danger text-sm">{{ $message }}</em> <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-header" id="basic_settings">
<div class="card-title flex flex-row gap-1.5"> <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.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>
<div class="flex items-center gap-2"> <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> <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 {{ isset($document->id) ? 'Edit' : 'Tambah' }} Data Jaminan
</h3> </h3>
<div class="flex items-center gap-2"> <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> </div>
<div class="card-body"> <div class="card-body">

View File

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

View File

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