From ad4d8cf7407bfeff2d77349a26d2113096603d3d Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 11 Sep 2024 10:50:46 +0700 Subject: [PATCH 01/20] update detail dokumen jaminan, --- app/Http/Controllers/DebitureController.php | 6 --- .../Controllers/DokumenJaminanController.php | 7 ++- app/Models/DokumenJaminan.php | 4 ++ .../debitur/components/jaminan.blade.php | 51 +++++++++++-------- routes/web.php | 2 +- 5 files changed, 41 insertions(+), 29 deletions(-) diff --git a/app/Http/Controllers/DebitureController.php b/app/Http/Controllers/DebitureController.php index 7929578..e6762e3 100644 --- a/app/Http/Controllers/DebitureController.php +++ b/app/Http/Controllers/DebitureController.php @@ -174,10 +174,4 @@ { return Excel::download(new DebitureExport, 'debitur.xlsx'); } - - public function download($id) - { - $document = DokumenJaminan::find($id); - return response()->download(storage_path('app/public/' . $document->dokumen_jaminan)); - } } diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 520c20e..9fe5d85 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -25,7 +25,7 @@ public function index($id) { $debitur = Debiture::find($id); - $documents = DokumenJaminan::with('pemilik')->where('debiture_id', $id)->get(); + $documents = DokumenJaminan::with('pemilik','detail')->where('debiture_id', $id)->get(); return view( 'lpj::debitur.edit', @@ -218,4 +218,9 @@ echo json_encode(['success' => false, 'message' => 'Failed to delete Dokumen Jaminan']); } } + + public function download($id){ + $document = DetailDokumenJaminan::find($id); + return response()->download(storage_path('app/public/' . $document->dokumen_jaminan)); + } } diff --git a/app/Models/DokumenJaminan.php b/app/Models/DokumenJaminan.php index 274f3c8..3454dc9 100644 --- a/app/Models/DokumenJaminan.php +++ b/app/Models/DokumenJaminan.php @@ -63,4 +63,8 @@ public function permohonan(){ return $this->belongsTo(Permohonan::class, 'permohonan_id', 'id'); } + + public function detail(){ + return $this->hasMany(DetailDokumenJaminan::class, 'dokumen_jaminan_id', 'id'); + } } diff --git a/resources/views/debitur/components/jaminan.blade.php b/resources/views/debitur/components/jaminan.blade.php index 4cfeb65..f06dea1 100644 --- a/resources/views/debitur/components/jaminan.blade.php +++ b/resources/views/debitur/components/jaminan.blade.php @@ -1,4 +1,4 @@ -
+
@foreach($documents as $document)
@@ -43,27 +43,7 @@
- @if($document->dokumen_jaminan) - -
-
- @endif
- - keterangan - -

- {{ $document->keterangan }} -

-
-
-
-
alamat @@ -71,6 +51,35 @@ {{ $document->address.', '.$document->village->name.', '.$document->city->name.', '.$document->province->name.', '.$document->postal_code }}

+
+
+
+ + dokumen jaminan + +
+
+
+ @foreach($document->detail as $detail) +
+ + {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} + + {{ basename($detail->dokumen_jaminan) }} +
+
+
+
+ + keterangan + +

+ {{ $detail->keterangan }} +

+
+
+
+ @endforeach
@endforeach diff --git a/routes/web.php b/routes/web.php index d1737ef..dad4309 100644 --- a/routes/web.php +++ b/routes/web.php @@ -173,7 +173,6 @@ Route::resource('permohonan', PermohonanController::class); Route::name('debitur.')->prefix('debitur')->group(function () { - Route::get('download/{id}', [DebitureController::class, 'download'])->name('download'); Route::get('restore/{id}', [DebitureController::class, 'restore'])->name('restore'); Route::get('datatables', [DebitureController::class, 'dataForDatatables']) ->name('datatables'); @@ -181,6 +180,7 @@ Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { + Route::get('download/{id}', [DebitureController::class, 'download'])->name('download'); Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit'); From bce89c2055d50f6d34c417f822533f4f1b45e7fb Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 11 Sep 2024 11:03:11 +0700 Subject: [PATCH 02/20] Fix Download Document --- resources/views/debitur/components/jaminan.blade.php | 2 +- routes/web.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/debitur/components/jaminan.blade.php b/resources/views/debitur/components/jaminan.blade.php index f06dea1..568d940 100644 --- a/resources/views/debitur/components/jaminan.blade.php +++ b/resources/views/debitur/components/jaminan.blade.php @@ -65,7 +65,7 @@ {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} - {{ basename($detail->dokumen_jaminan) }} + {{ basename($detail->dokumen_jaminan) }}
diff --git a/routes/web.php b/routes/web.php index dad4309..92a5cd3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -180,7 +180,7 @@ Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { - Route::get('download/{id}', [DebitureController::class, 'download'])->name('download'); + Route::get('download/{dokumen}', [DokumenJaminanController::class, 'download'])->name('download'); Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit'); From a6e90229d8c7b2d993d0e07c96fe15229e41378e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 11 Sep 2024 12:00:50 +0700 Subject: [PATCH 03/20] Fix Update and Delete Dokumen Jaminan --- .../Controllers/DokumenJaminanController.php | 101 ++++++++++++++---- .../debitur/components/dokumen.blade.php | 55 +++++++++- 2 files changed, 131 insertions(+), 25 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 9fe5d85..dca91a5 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use Exception; use Illuminate\Support\Facades\DB; + use Illuminate\Support\Facades\Storage; use Modules\Location\Models\City; use Modules\Location\Models\District; use Modules\Location\Models\Province; @@ -25,7 +26,7 @@ public function index($id) { $debitur = Debiture::find($id); - $documents = DokumenJaminan::with('pemilik','detail')->where('debiture_id', $id)->get(); + $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); return view( 'lpj::debitur.edit', @@ -68,7 +69,6 @@ $document = DokumenJaminan::create($validate); try { - foreach ($request->dokumen_jaminan as $key => $value) { $file_name = $value->getClientOriginalName(); @@ -77,7 +77,7 @@ $file_name = $value->getClientOriginalName(); $value->storeAs( 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name + $file_name, ); $detail = [ @@ -92,17 +92,17 @@ DB::rollBack(); return redirect()->route('debitur.jaminan.index', $id)->with( 'error', - 'Gagal upload file dokumen jaminan '. $key. ': '. $e->getMessage(), + 'Gagal upload file dokumen jaminan ' . $key . ': ' . $e->getMessage(), ); } } } DB::commit(); - }catch (Exception $e) { + } catch (Exception $e) { DB::rollBack(); return redirect()->route('debitur.jaminan.index', $id)->with( 'error', - 'gg'.$e->getMessage(), + 'gg' . $e->getMessage(), ); } @@ -112,7 +112,7 @@ ); } catch (Exception $e) { DB::rollBack(); - return redirect()->route('debitur.jaminan.index', $id)->with('error','ggl'. $e->getMessage()); + return redirect()->route('debitur.jaminan.index', $id)->with('error', 'ggl' . $e->getMessage()); } } } @@ -138,6 +138,7 @@ $validate = $request->validated(); if ($validate) { try { + DB::beginTransaction(); $validate['debiture_id'] = $id; if ($validate['pemilik_jaminan_id'] == 0) { @@ -160,29 +161,77 @@ ], $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); + if ($request->detail_dokumen_jaminan_id) { + foreach ($request->detail_dokumen_jaminan_id as $key => $value) { + if (isset($request->dokumen_jaminan[$key])) { + $file = $request->dokumen_jaminan[$key]; + if ($file) { + $file_name = $file->getClientOriginalName(); + } + + if (isset($file_name)) { + $file->storeAs( + 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', + $file_name, + ); + + $detail = [ + 'dokumen_jaminan_id' => $document->id, + 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], + 'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name, + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], + ]; + if (isset($request->detail_dokumen_jaminan_id[$key])) { + $detailDocument = DetailDokumenJaminan::find( + $request->detail_dokumen_jaminan_id[$key], + ); + + $detailDocument->update($detail); + $detailDocument->save(); + } + } + } else { + $detail = [ + 'dokumen_jaminan_id' => $document->id, + 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], + ]; + + if (isset($request->detail_dokumen_jaminan_id[$key])) { + $detailDocument = DetailDokumenJaminan::find( + $request->detail_dokumen_jaminan_id[$key], + ); + $detailDocument->update($detail); + } + } + } + } + + DB::commit(); return redirect()->route('debitur.jaminan.index', $id)->with( 'success', 'Dokumen Jaminan berhasil diubah', ); - } catch (Exception $e) { + } catch + (Exception $e) { + DB::rollBack(); return redirect()->route('debitur.jaminan.index', $id)->with('error', $e->getMessage()); } } } - public function edit($id, $jaminan) - { + public + function edit( + $id, + $jaminan, + ) { $document = DokumenJaminan::find($jaminan); + $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); $debitur = Debiture::find($document->debiture_id); $provinces = Province::all(); $cities = City::where('province_code', $document->province_code)->get(); @@ -200,6 +249,7 @@ 'jenisJaminan', 'jenisLegalitasJaminan', 'document', + 'details', 'cities', 'districts', 'villages', @@ -208,10 +258,18 @@ ); } - public function destroy($id, $jaminan_id) - { + public + function destroy( + $id, + $jaminan_id, + ) { try { $jaminan = DokumenJaminan::find($jaminan_id); + $details = DetailDokumenJaminan::where('dokumen_jaminan_id',$jaminan->id)->get(); + foreach ($details as $detail){ + Storage::delete('public/'. $detail->dokumen_jaminan); + $detail->delete(); + } $jaminan->delete(); echo json_encode(['success' => true, 'message' => 'Dokumen Jaminan deleted successfully']); } catch (Exception $e) { @@ -219,7 +277,10 @@ } } - public function download($id){ + public + function download( + $id, + ) { $document = DetailDokumenJaminan::find($id); return response()->download(storage_path('app/public/' . $document->dokumen_jaminan)); } diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 67063bf..0dfcc6f 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -56,7 +56,10 @@ Jenis Jaminan
- + @endif + +
+ + +
-
+
+ +
+ +
+
+ +
+ +
+ + @if(isset($detail->dokumen_jaminan)) + {{ basename($detail->dokumen_jaminan) }} + @endif +
+
+ +
+ +
+ +
+
+ @endforeach + @else +
+ +
+ @endif
diff --git a/resources/views/jenis_penilaian/index.blade.php b/resources/views/jenis_penilaian/index.blade.php index 4d027a6..7e26e37 100644 --- a/resources/views/jenis_penilaian/index.blade.php +++ b/resources/views/jenis_penilaian/index.blade.php @@ -1,14 +1,14 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('basicdata.jenispenilaian') }} + {{ Breadcrumbs::render('basicdata.jenis-penilaian') }} @endsection @section('content')
+ data-api-url="{{ route('basicdata.jenis-penilaian.datatables') }}">

Daftar Jenis penilaian @@ -16,14 +16,14 @@ @@ -91,7 +91,7 @@ } }); - $.ajax(`basic-data/jenispenilaian/${data}`, { + $.ajax(`basic-data/jenis-penilaian/${data}`, { type: 'DELETE' }).then((response) => { swal.fire('Deleted!', 'User has been deleted.', 'success').then(() => { @@ -135,7 +135,7 @@ title: 'Status', render: (item, data) => { return `
- + diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php new file mode 100644 index 0000000..cfd8309 --- /dev/null +++ b/resources/views/penilaian/index.blade.php @@ -0,0 +1,128 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{-- {{ Breadcrumbs::render('penilaian') }} --}} +@endsection + +@section('content') +
+ +
+ +
+ + + {{-- @if (isset($debitur->id)) + @method('PUT') + @endif + @csrf --}} +
+ +
+ + +
+
+
+ +
+ + @error('cif') + {{ $message }} + @enderror +
+
+
+ +
+ + @enderror +
+
+
+ +
+ + @error('name') + + @enderror +
+
+
+ +
+ + @error('npwp') + + @enderror +
+
+
+ +
+ + @error('email') + + @enderror +
+
+
+ +
+ + @error('phone') + + @enderror +
+
+ +
+ +
+ +
+
+ +
+@endsection diff --git a/resources/views/teams/form.blade.php b/resources/views/teams/form.blade.php index 2070f8c..3f0ab33 100644 --- a/resources/views/teams/form.blade.php +++ b/resources/views/teams/form.blade.php @@ -78,7 +78,7 @@
- +
- - Code - - Status Permohonan From 1b1d00a73072bc24f0399f8a2311fb4784dd491e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 11 Sep 2024 16:54:42 +0700 Subject: [PATCH 06/20] add slug master jenis_jaminan --- .../migrations/2024_09_04_082059_update_jenis_jaminan_table.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/database/migrations/2024_09_04_082059_update_jenis_jaminan_table.php b/database/migrations/2024_09_04_082059_update_jenis_jaminan_table.php index 0f96b67..f148718 100644 --- a/database/migrations/2024_09_04_082059_update_jenis_jaminan_table.php +++ b/database/migrations/2024_09_04_082059_update_jenis_jaminan_table.php @@ -12,6 +12,7 @@ return new class extends Migration public function up(): void { Schema::table('jenis_jaminan', function (Blueprint $table) { + $table->string('slug')->after('name'); $table->string('jenis_legalitas_jaminan_id')->nullable()->after('slug'); }); } @@ -22,6 +23,7 @@ return new class extends Migration public function down(): void { Schema::table('jenis_jaminan', function (Blueprint $table) { + $table->dropColumn('slug'); $table->dropColumn('jenis_legalitas_jaminan_id'); }); } From ed425c4b21d99528851b32e1847f39bf31dfc1f7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 12 Sep 2024 11:03:00 +0700 Subject: [PATCH 07/20] Feature #18 : Module Approval Permohonan --- app/Http/Controllers/PermohonanController.php | 90 +++++++++ app/Models/Permohonan.php | 2 + module.json | 2 +- .../permohonan/authorization/index.blade.php | 191 ++++++++++++++++++ .../permohonan/authorization/show.blade.php | 164 +++++++++++++++ routes/breadcrumbs.php | 9 + routes/web.php | 6 + 7 files changed, 463 insertions(+), 1 deletion(-) create mode 100644 resources/views/permohonan/authorization/index.blade.php create mode 100644 resources/views/permohonan/authorization/show.blade.php diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index ea6d5f3..73d6b37 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -179,4 +179,94 @@ { return Excel::download(new PermohonanExport, 'permohonan.xlsx'); } + + public function authorization() + { + return view('lpj::permohonan.authorization.index'); + } + + public function dataForAuthorization(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->where('status','=','order')->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function showAuthorization($id) + { + $permohonan = Permohonan::find($id); + return view('lpj::permohonan.authorization.show',compact('permohonan')); + } + + public function updateAuthorization(Request $request, $id){ + try { + $permohonan = Permohonan::find($id); + $permohonan->status = $request->status; + $permohonan->keterangan = $request->keterangan; + $permohonan->save(); + }catch (Exception $e) { + return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan'); + } + + return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); + } } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 28b6de5..d1d4689 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -17,10 +17,12 @@ class Permohonan extends Base 'branch_id', 'tujuan_penilaian_id', 'debiture_id', + 'keterangan', 'status', 'authorized_at', 'authorized_status', 'authorized_by', + ]; public function user(){ diff --git a/module.json b/module.json index 2dbec76..c1f1567 100644 --- a/module.json +++ b/module.json @@ -46,7 +46,7 @@ }, { "title": "Authorization", - "path": "", + "path": "authorization", "icon": "ki-filled ki-some-files text-lg", "classes": "", "attributes": [], diff --git a/resources/views/permohonan/authorization/index.blade.php b/resources/views/permohonan/authorization/index.blade.php new file mode 100644 index 0000000..aed62c8 --- /dev/null +++ b/resources/views/permohonan/authorization/index.blade.php @@ -0,0 +1,191 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ +
+
+

+ Daftar Permohonan +

+
+
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + + +@endpush diff --git a/resources/views/permohonan/authorization/show.blade.php b/resources/views/permohonan/authorization/show.blade.php new file mode 100644 index 0000000..7a857a5 --- /dev/null +++ b/resources/views/permohonan/authorization/show.blade.php @@ -0,0 +1,164 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+
+

+ Data Permohonan +

+
+
+
+

+ Nomor Register Permohonan: +

+ + {{ $permohonan->nomor_registrasi }} + +
+ +
+

+ Pemohon: +

+ + {{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }} + +
+ +
+

+ Tujan Permohonan: +

+ + {{ $permohonan->tujuanPenilaian->name }} + +
+ +
+
+ +
+
+

+ Detail Debutur +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ Name + + {{ $permohonan->debiture->name ?? "" }} +
+ Email + + {{ $permohonan->debiture->email ?? "" }} +
+ Phone + + {{ $permohonan->debiture->phone ?? "" }} +
+ Address + + {{ $permohonan->debiture->address ?? "" }} +
+   + + {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} +
+
+
+ + + + + + + + + + + + + + + + + +
+ Cabang + + {{ $permohonan->debiture->branch->name ?? "" }} +
+ CIF + + {{ $permohonan->debiture->cif ?? "" }} +
+ Nomor Rekening + + {{ $permohonan->debiture->nomor_rekening ?? "" }} +
+ NPWP + + {{ $permohonan->debiture->npwp ?? "" }} +
+
+
+
+
+ +
+
+ + @csrf +
+
+ +
+ +
+
+
+ +
+
+
+@endsection diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index f39cfcc..4ea45ad 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -267,3 +267,12 @@ $trail->push('Data Permohonan'); }); + Breadcrumbs::for('authorization.index', function (BreadcrumbTrail $trail) { + $trail->push('Permohonan', route('authorization.index')); + }); + + Breadcrumbs::for('authorization.show', function (BreadcrumbTrail $trail) { + $trail->parent('authorization.index'); + $trail->push('Detail Permohonan'); + }); + diff --git a/routes/web.php b/routes/web.php index 92a5cd3..cfa177a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -172,6 +172,12 @@ Route::resource('permohonan', PermohonanController::class); + Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); + Route::get('authorization/datatables', [PermohonanController::class, 'dataForAuthorization']) + ->name('authorization.datatables'); + Route::get('authorization/{id}/edit', [PermohonanController::class, 'showAuthorization'])->name('authorization.show'); + Route::put('authorization/{id}', [PermohonanController::class, 'updateAuthorization'])->name('authorization.update'); + Route::name('debitur.')->prefix('debitur')->group(function () { Route::get('restore/{id}', [DebitureController::class, 'restore'])->name('restore'); Route::get('datatables', [DebitureController::class, 'dataForDatatables']) From 7eac0d0401382947df54713cfa7480d4f930b2c2 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 12 Sep 2024 11:28:17 +0700 Subject: [PATCH 08/20] Update Detail Approval --- app/Models/Debiture.php | 4 + .../permohonan/authorization/show.blade.php | 93 +++++++++++++++++++ 2 files changed, 97 insertions(+) diff --git a/app/Models/Debiture.php b/app/Models/Debiture.php index df5b9d2..8980513 100644 --- a/app/Models/Debiture.php +++ b/app/Models/Debiture.php @@ -56,4 +56,8 @@ return $this->belongsTo(Village::class, 'village_code', 'code'); } + public function documents(){ + return $this->hasMany(DokumenJaminan::class); + } + } diff --git a/resources/views/permohonan/authorization/show.blade.php b/resources/views/permohonan/authorization/show.blade.php index 7a857a5..336a324 100644 --- a/resources/views/permohonan/authorization/show.blade.php +++ b/resources/views/permohonan/authorization/show.blade.php @@ -136,6 +136,99 @@
+
+
+

+ Data Jaminan +

+
+
+ @foreach($permohonan->debiture->documents as $dokumen) +
+ + +
+ @endforeach +
+
+
From dadec5a397588785b876563112c11282e34b821e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 12 Sep 2024 14:29:12 +0700 Subject: [PATCH 09/20] Update Edit Permohonan --- app/Http/Controllers/PermohonanController.php | 39 ++- resources/views/debitur/edit.blade.php | 8 +- resources/views/permohonan/form.blade.php | 269 +++++++++++++----- routes/web.php | 34 +-- 4 files changed, 246 insertions(+), 104 deletions(-) diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 73d6b37..6e0bf9a 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -6,10 +6,15 @@ use Exception; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; + use Modules\Location\Models\City; + use Modules\Location\Models\District; + use Modules\Location\Models\Province; + use Modules\Location\Models\Village; use Modules\Lpj\Exports\PermohonanExport; use Modules\Lpj\Http\Requests\PermohonanRequest; use Modules\Lpj\Models\Branch; use Modules\Lpj\Models\Debiture; + use Modules\Lpj\Models\DokumenJaminan; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaian; @@ -47,8 +52,8 @@ } } - public function create(){ - + public function create() + { return view('lpj::permohonan.create'); } @@ -66,13 +71,29 @@ { $permohonan = Permohonan::find($id); $branches = Branch::all(); - $debitur = Debiture::find($permohonan->debiture_id); + $debitur = Debiture::find($permohonan->debiture_id); $tujuanPenilaian = TujuanPenilaian::all(); $status = StatusPermohonan::all(); + $provinces = Province::all(); + $cities = City::where('province_code', $debitur->province_code)->get(); + $districts = District::where('city_code', $debitur->city_code)->get(); + $villages = Village::where('district_code', $debitur->district_code)->get(); + $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); return view( 'lpj::permohonan.form', - compact('permohonan', 'branches', 'debitur', 'tujuanPenilaian', 'status'), + compact( + 'permohonan', + 'branches', + 'debitur', + 'tujuanPenilaian', + 'status', + 'provinces', + 'cities', + 'districts', + 'villages', + 'documents' + ), ); } @@ -231,7 +252,8 @@ $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->where('status','=','order')->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->where('status', '=', 'order')->get( + ); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); @@ -254,16 +276,17 @@ public function showAuthorization($id) { $permohonan = Permohonan::find($id); - return view('lpj::permohonan.authorization.show',compact('permohonan')); + return view('lpj::permohonan.authorization.show', compact('permohonan')); } - public function updateAuthorization(Request $request, $id){ + public function updateAuthorization(Request $request, $id) + { try { $permohonan = Permohonan::find($id); $permohonan->status = $request->status; $permohonan->keterangan = $request->keterangan; $permohonan->save(); - }catch (Exception $e) { + } catch (Exception $e) { return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan'); } diff --git a/resources/views/debitur/edit.blade.php b/resources/views/debitur/edit.blade.php index 0a8e218..8940f5a 100644 --- a/resources/views/debitur/edit.blade.php +++ b/resources/views/debitur/edit.blade.php @@ -6,21 +6,25 @@ @section('content')
-
+ @if(request()->get('permohonan_id')) + Data Permohonan + @endif Data Debitur Dokumen Jaminan Pemilk Jaminan
- @if(isset($debitur->id)) + @if(isset($debitur->id) && request()->get('permohonan_id') == null) Buat Permohonan @endif @if(request()->get('from') == 'permohonan') Back + @elseif(request()->get('permohonan_id')) + Back @else Back @endif diff --git a/resources/views/permohonan/form.blade.php b/resources/views/permohonan/form.blade.php index 8615b75..baca23a 100644 --- a/resources/views/permohonan/form.blade.php +++ b/resources/views/permohonan/form.blade.php @@ -5,97 +5,212 @@ @endsection @section('content') -
+ @if(isset($permohonan)) +
+
+
+ +
+ @if(isset($debitur->id) && !isset($permohonan->id)) + Buat Permohonan + @endif -
-
-

- {{ isset($permohonan->id) ? 'Edit' : 'Tambah' }} Permohonan -

-
- Back + @if(request()->get('from') == 'permohonan') + Back + @elseif($permohonan->id) + Back + @else + Back + @endif +
+
+
+ @if(request()->routeIs('permohonan.edit', $permohonan)) + + @if(isset($permohonan->id)) + @method('PUT') + @endif + @csrf + +
+ +
+ +

{{ $debitur->name }}

+
+
+ +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+ + +
+ +
+ + @elseif(request()->routeIs('debitur.edit', $debitur)) + @include('lpj::debitur.components.debitur') + @elseif(request()->routeIs('debitur.pemilik.index', $debitur)) + @include('lpj::debitur.components.pemilik') + @else + @include('lpj::debitur.components.jaminan') + @endif
-
-
- @if(isset($permohonan->id)) - @method('PUT') - @endif - @csrf +
+ @else +
-
- -
- -

{{ $debitur->name }}

-
+
+
+

+ {{ isset($permohonan->id) ? 'Edit' : 'Tambah' }} Permohonan +

+ +
+
+ + @if(isset($permohonan->id)) + @method('PUT') + @endif + @csrf -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror +
+ +
+ +

{{ $debitur->name }}

+
-
-
- -
- - @error('status') - {{ $message }} +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('status') + {{ $message }} @enderror
-
- -
- +
+ +
+ +
-
+ @endif @endsection diff --git a/routes/web.php b/routes/web.php index cfa177a..b0bfdee 100644 --- a/routes/web.php +++ b/routes/web.php @@ -185,24 +185,24 @@ Route::get('export', [DebitureController::class, 'export'])->name('export'); - Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { - Route::get('download/{dokumen}', [DokumenJaminanController::class, 'download'])->name('download'); - 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::name('jaminan.')->prefix('{id}/jaminan')->group(function () { + Route::get('download/{dokumen}', [DokumenJaminanController::class, 'download'])->name('download'); + 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::name('pemilik.')->prefix('{id}/pemilik')->group(function () { - Route::get('/', [PemilikJaminanController::class, 'index'])->name('index'); - Route::get('create', [PemilikJaminanController::class, 'create'])->name('create'); - Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit'); - Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update'); - Route::post('store', [PemilikJaminanController::class, 'store'])->name('store'); - Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy'); - }); + Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () { + Route::get('/', [PemilikJaminanController::class, 'index'])->name('index'); + Route::get('create', [PemilikJaminanController::class, 'create'])->name('create'); + Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit'); + Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update'); + Route::post('store', [PemilikJaminanController::class, 'store'])->name('store'); + Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy'); + }); }); Route::resource('debitur', DebitureController::class); From 72e4ff31609d52a15647ac1d74029ee51f02260b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 13 Sep 2024 14:10:40 +0700 Subject: [PATCH 10/20] Update Module Permohonan, penambahan field jenis_fasilitas_kredit dan nilai_plafond --- app/Exports/PermohonanExport.php | 9 +- app/Http/Controllers/PermohonanController.php | 20 ++- app/Http/Requests/PermohonanRequest.php | 16 +-- app/Models/Permohonan.php | 10 ++ ...4_09_13_030119_update_permohonan_table.php | 33 +++++ resources/views/permohonan/form.blade.php | 116 +++++++++++++++++- 6 files changed, 187 insertions(+), 17 deletions(-) create mode 100644 database/migrations/2024_09_13_030119_update_permohonan_table.php diff --git a/app/Exports/PermohonanExport.php b/app/Exports/PermohonanExport.php index 07b83fe..c6ce0a2 100644 --- a/app/Exports/PermohonanExport.php +++ b/app/Exports/PermohonanExport.php @@ -28,6 +28,8 @@ $row->branch->name, $row->tujuanPenilaian->name, $row->debiture->name, + $row->fasilitasKredit->name, + $row->plafond->name, $row->status, $row->authorized_at, $row->authorized_status, @@ -47,7 +49,9 @@ 'Branch Pemohon', 'Tujuan Penilaian', 'Debitur', - 'Status', + 'Jenis Fasilitas Kredit', + 'Nilai Plafond', + 'Status Permohonan', 'Tanggal Pengesahan', 'Status Pengesahan', 'Pengesah', @@ -61,7 +65,8 @@ return [ 'A' => NumberFormat::FORMAT_NUMBER, 'C' => NumberFormat::FORMAT_DATE_DATETIME, - 'L' => NumberFormat::FORMAT_DATE_DATETIME + 'K' => NumberFormat::FORMAT_DATE_DATETIME, + 'N' => NumberFormat::FORMAT_DATE_DATETIME ]; } } diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 6e0bf9a..2cd35d0 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -15,6 +15,8 @@ use Modules\Lpj\Models\Branch; use Modules\Lpj\Models\Debiture; use Modules\Lpj\Models\DokumenJaminan; + use Modules\Lpj\Models\JenisFasilitasKredit; + use Modules\Lpj\Models\NilaiPlafond; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaian; @@ -30,8 +32,8 @@ public function store(PermohonanRequest $request) { - $validate = $request->validated(); + $validate = $request->validated(); if ($validate) { try { // Save to database @@ -63,8 +65,13 @@ $debitur = Debiture::find($debitur); $tujuanPenilaian = TujuanPenilaian::all(); $status = StatusPermohonan::all(); + $fasilitasKredit = JenisFasilitasKredit::all(); + $plafond = NilaiPlafond::all(); - return view('lpj::permohonan.form', compact('branches', 'debitur', 'tujuanPenilaian', 'status')); + return view( + 'lpj::permohonan.form', + compact('branches', 'debitur', 'tujuanPenilaian', 'status', 'fasilitasKredit', 'plafond'), + ); } public function edit($id) @@ -78,7 +85,10 @@ $cities = City::where('province_code', $debitur->province_code)->get(); $districts = District::where('city_code', $debitur->city_code)->get(); $villages = Village::where('district_code', $debitur->district_code)->get(); - $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); + $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); + + $fasilitasKredit = JenisFasilitasKredit::all(); + $plafond = NilaiPlafond::all(); return view( 'lpj::permohonan.form', @@ -92,7 +102,9 @@ 'cities', 'districts', 'villages', - 'documents' + 'documents', + 'fasilitasKredit', + 'plafond', ), ); } diff --git a/app/Http/Requests/PermohonanRequest.php b/app/Http/Requests/PermohonanRequest.php index e4c4bd8..edd4169 100644 --- a/app/Http/Requests/PermohonanRequest.php +++ b/app/Http/Requests/PermohonanRequest.php @@ -14,13 +14,15 @@ : array { $rules = [ - 'nomor_registrasi' => 'nullable|string|max:10', - 'tanggal_permohonan' => 'nullable|date', - 'user_id' => 'nullable|exists:users,id', - 'branch_id' => 'required|exists:branches,id', - 'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id', - 'debiture_id' => 'required|exists:debitures,id', - 'status' => 'required|string', + 'nomor_registrasi' => 'nullable|string|max:10', + 'tanggal_permohonan' => 'nullable|date', + 'user_id' => 'nullable|exists:users,id', + 'branch_id' => 'required|exists:branches,id', + 'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id', + 'debiture_id' => 'required|exists:debitures,id', + 'status' => 'required|string', + 'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id', + 'nilai_plafond_id' => 'required|exists:nilai_plafond,id', ]; return $rules; diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index d1d4689..cf6d5e6 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -18,6 +18,8 @@ class Permohonan extends Base 'tujuan_penilaian_id', 'debiture_id', 'keterangan', + 'jenis_fasilitas_kredit_id', + 'nilai_plafond_id', 'status', 'authorized_at', 'authorized_status', @@ -44,4 +46,12 @@ class Permohonan extends Base public function documents(){ return $this->hasMany(DokumenJaminan::class); } + + public function nilaiPlafond(){ + return $this->belongsTo(NilaiPlafond::class); + } + + public function jenisFasilitasKredit(){ + return $this->belongsTo(JenisFasilitasKredit::class); + } } diff --git a/database/migrations/2024_09_13_030119_update_permohonan_table.php b/database/migrations/2024_09_13_030119_update_permohonan_table.php new file mode 100644 index 0000000..1906224 --- /dev/null +++ b/database/migrations/2024_09_13_030119_update_permohonan_table.php @@ -0,0 +1,33 @@ +foreignIdFor(JenisFasilitasKredit::class)->nullable()->onDelete('cascade'); + $table->foreignIdFor(NilaiPlafond::class)->nullable()->onDelete('cascade'); + $table->string('status')->default('order')->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropForeign(['fasilitas_kredit_id']); + $table->dropForeign(['nilai_plafond_id']); + }); + } +}; diff --git a/resources/views/permohonan/form.blade.php b/resources/views/permohonan/form.blade.php index baca23a..45be1d5 100644 --- a/resources/views/permohonan/form.blade.php +++ b/resources/views/permohonan/form.blade.php @@ -22,9 +22,9 @@ @if(request()->get('from') == 'permohonan') Back - @elseif($permohonan->id) - Back - @else + @elseif($permohonan->id) + Back + @else Back @endif
@@ -74,6 +74,60 @@
+
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+
+
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+
- @if(isset($status)) @foreach($status as $row) From dcf9e4fd5e77f19f3627bfa790d9e1c14cf5ed83 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 13 Sep 2024 14:11:08 +0700 Subject: [PATCH 11/20] Remove Module Jenis Jaminan --- module.json | 10 +--------- routes/breadcrumbs.php | 21 +++------------------ routes/web.php | 10 +--------- 3 files changed, 5 insertions(+), 36 deletions(-) diff --git a/module.json b/module.json index c1f1567..2c5b5af 100644 --- a/module.json +++ b/module.json @@ -111,17 +111,9 @@ "permission": "", "roles": [] }, - { - "title": "Jenis Jaminan", - "path": "basicdata.jenis-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": [] - }, { "title": "Jenis Aset", - "path": "basicdata.jenis-aset", + "path": "basicdata.jenis-jaminan", "classes": "", "attributes": [], "permission": "", diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 4ea45ad..0068876 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -39,17 +39,17 @@ Breadcrumbs::for('basicdata.jenis-jaminan', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); - $trail->push('Jenis Jaminan', route('basicdata.jenis-jaminan.index')); + $trail->push('Jenis Aset', route('basicdata.jenis-jaminan.index')); }); Breadcrumbs::for('basicdata.jenis-jaminan.create', function (BreadcrumbTrail $trail) { $trail->parent('basicdata.jenis-jaminan'); - $trail->push('Tambah Jenis Jaminan', route('basicdata.jenis-jaminan.create')); + $trail->push('Tambah Jenis Aset', route('basicdata.jenis-jaminan.create')); }); Breadcrumbs::for('basicdata.jenis-jaminan.edit', function (BreadcrumbTrail $trail) { $trail->parent('basicdata.jenis-jaminan'); - $trail->push('Edit Jenis Jaminan'); + $trail->push('Edit Jenis Aset'); }); Breadcrumbs::for('basicdata.tujuan-penilaian', function (BreadcrumbTrail $trail) { @@ -67,21 +67,6 @@ $trail->push('Edit Tujuan Penilaian'); }); - Breadcrumbs::for('basicdata.jenis-aset', function (BreadcrumbTrail $trail) { - $trail->parent('basicdata'); - $trail->push('Jenis Aset', route('basicdata.jenis-aset.index')); - }); - - Breadcrumbs::for('basicdata.jenis-aset.create', function (BreadcrumbTrail $trail) { - $trail->parent('basicdata.jenis-aset'); - $trail->push('Tambah Jenis Aset', route('basicdata.jenis-aset.create')); - }); - - Breadcrumbs::for('basicdata.jenis-aset.edit', function (BreadcrumbTrail $trail) { - $trail->parent('basicdata.jenis-aset'); - $trail->push('Edit Jenis Aset'); - }); - Breadcrumbs::for('basicdata.jenis-dokumen', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); $trail->push('Jenis Dokumen', route('basicdata.jenis-dokumen.index')); diff --git a/routes/web.php b/routes/web.php index b0bfdee..0a8075f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -48,7 +48,7 @@ }); Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); - Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { + Route::name('jenis-jaminan.')->prefix('jenis-aset')->group(function () { Route::get('legalitas/{id}', [JenisJaminanController::class, 'legalitasJaminan'])->name('legalitas'); Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables']) @@ -65,14 +65,6 @@ }); Route::resource('tujuan-penilaian', TujuanPenilaianController::class); - Route::name('jenis-aset.')->prefix('jenis-aset')->group(function () { - Route::get('restore/{id}', [JenisAsetController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisAsetController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [JenisAsetController::class, 'export'])->name('export'); - }); - Route::resource('jenis-aset', JenisAsetController::class); - Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () { Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore'); Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables']) From 5619c52b0a8fb1f194e95216fd8291832ba3bc95 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 13 Sep 2024 14:11:35 +0700 Subject: [PATCH 12/20] Update Module Approval Permohonan, Chnage reject to Revisi --- resources/views/permohonan/authorization/show.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/permohonan/authorization/show.blade.php b/resources/views/permohonan/authorization/show.blade.php index 336a324..0267b19 100644 --- a/resources/views/permohonan/authorization/show.blade.php +++ b/resources/views/permohonan/authorization/show.blade.php @@ -247,8 +247,8 @@ -
From 9ecdaa0cddafa924a69c38a4c057b470f1217d66 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 13 Sep 2024 14:12:35 +0700 Subject: [PATCH 13/20] Update Module Debitur penambahan default cif 0x10 dan di buat mandatory update field npwp input harus minimal 15 dan maksimal 16 digit penambahan rules --- app/Http/Controllers/DebitureController.php | 1 + app/Http/Requests/DebitureRequest.php | 11 ++++---- app/Rules/UniqueCifExceptZero.php | 25 +++++++++++++++++++ .../debitur/components/debitur.blade.php | 3 ++- 4 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 app/Rules/UniqueCifExceptZero.php diff --git a/app/Http/Controllers/DebitureController.php b/app/Http/Controllers/DebitureController.php index e6762e3..b429265 100644 --- a/app/Http/Controllers/DebitureController.php +++ b/app/Http/Controllers/DebitureController.php @@ -71,6 +71,7 @@ public function update(DebitureRequest $request, $id) { + //print_r($request->all());exit; $validate = $request->validated(); if ($validate) { diff --git a/app/Http/Requests/DebitureRequest.php b/app/Http/Requests/DebitureRequest.php index ff87263..7f83fbb 100644 --- a/app/Http/Requests/DebitureRequest.php +++ b/app/Http/Requests/DebitureRequest.php @@ -3,6 +3,7 @@ namespace Modules\Lpj\Http\Requests; use Illuminate\Foundation\Http\FormRequest; + use Modules\Lpj\Rules\UniqueCifExceptZero; class DebitureRequest extends FormRequest { @@ -21,7 +22,7 @@ 'nomor_rekening' => 'nullable|string|max:50', 'name' => 'required', 'registered_at' => 'nullable|date', - 'npwp' => 'nullable|string|max:16', + 'npwp' => 'nullable|string|min:15|max:16', 'email' => 'nullable|email', 'phone' => 'nullable|string|max:15', 'address' => 'nullable|string', @@ -29,10 +30,10 @@ 'status' => 'nullable|boolean' ]; - if ($this->method() == 'PUT') { - $rules['cif'] = 'nullable|unique:debitures,cif,' . $this->id; - } else { - $rules['cif'] = 'nullable|unique:debitures,cif'; + if($this->method() == 'PUT'){ + $rules['cif'] = ['required', new UniqueCifExceptZero($this->id)]; + }else{ + $rules['cif'] = ['required', new UniqueCifExceptZero(null)]; } return $rules; diff --git a/app/Rules/UniqueCifExceptZero.php b/app/Rules/UniqueCifExceptZero.php new file mode 100644 index 0000000..e7236ce --- /dev/null +++ b/app/Rules/UniqueCifExceptZero.php @@ -0,0 +1,25 @@ +id = $id; + } + + public function validate($attribute, $value, $fail): void + { + if (Debiture::where($attribute, $value) + ->where('id', '!=', $this->id) + ->where($attribute, '!=', '000000') + ->exists()) { + $fail('The :attribute field must be uniquse.'.$this->id); + } + } +} diff --git a/resources/views/debitur/components/debitur.blade.php b/resources/views/debitur/components/debitur.blade.php index 8170af7..157ad1b 100644 --- a/resources/views/debitur/components/debitur.blade.php +++ b/resources/views/debitur/components/debitur.blade.php @@ -1,5 +1,6 @@
@if(isset($debitur->id)) + @method('PUT') @endif @csrf @@ -29,7 +30,7 @@ CIF
- + @error('cif') {{ $message }} @enderror From 53ccf7de117854bcc44eb220b1dc2d29fe9ae7f4 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 13 Sep 2024 17:02:04 +0700 Subject: [PATCH 14/20] prerbaikan export dan penambahan role di team penilai --- .../Controllers/JenisPenilaianController.php | 8 +- app/Http/Controllers/PenilaianController.php | 103 +++- app/Http/Controllers/PermohonanController.php | 342 ++++++------ app/Http/Controllers/TeamsController.php | 65 ++- app/Http/Requests/TeamsRequest.php | 2 +- app/Models/Penilaian.php | 8 +- ...24_08_12_023807_create_debitures_table.php | 54 -- module.json | 1 + .../views/jenis_penilaian/form.blade.php | 2 +- resources/views/penilaian/form.blade.php | 511 ++++++++++++++++++ resources/views/penilaian/index.blade.php | 354 ++++++++---- resources/views/teams/form.blade.php | 33 +- resources/views/teams/index.blade.php | 4 +- routes/breadcrumbs.php | 7 +- routes/web.php | 1 + 15 files changed, 1107 insertions(+), 388 deletions(-) delete mode 100644 database/migrations/2024_08_12_023807_create_debitures_table.php create mode 100644 resources/views/penilaian/form.blade.php diff --git a/app/Http/Controllers/JenisPenilaianController.php b/app/Http/Controllers/JenisPenilaianController.php index 3e16ce1..e70fcdb 100644 --- a/app/Http/Controllers/JenisPenilaianController.php +++ b/app/Http/Controllers/JenisPenilaianController.php @@ -10,6 +10,7 @@ use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Http\Requests\JenisPenilaianRequest; use Modules\Lpj\Exports\JenisPenilaianExport; use Maatwebsite\Excel\Facades\Excel; + class JenisPenilaianController extends Controller { public $user; @@ -59,14 +60,13 @@ class JenisPenilaianController extends Controller public function update(JenisPenilaianRequest $request, $id) { - $validate = $request->validate(); + $validated = $request->validated(); - // dump($validate); - if ($validate) { + if ($validated) { try { $jenisPenilaian = JenisPenilaian::find($id); - $jenisPenilaian->update($validate); + $jenisPenilaian->update($validated); return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian updated successfully'); } catch (Exception $e) { return redirect()->route('basicdata.jenis-penilaian.edit', $id)->with('error', $e->getMessage()); diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 831c163..2e9dd5c 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -6,6 +6,18 @@ use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; +use Modules\Lpj\Models\StatusPermohonan; +use Modules\Lpj\Models\Branch; +use Modules\Lpj\Models\Debiture; +use Modules\Lpj\Models\Permohonan; +use Modules\Lpj\Models\TujuanPenilaian; +use Modules\Lpj\Models\JenisPenilaian; +use Modules\Lpj\Models\Teams; +use Modules\Lpj\Models\JenisJaminan; +use Modules\Lpj\Models\NilaiPlafond; +use Modules\Lpj\Models\JenisFasilitasKredit; + + class PenilaianController extends Controller { @@ -14,15 +26,17 @@ class PenilaianController extends Controller */ public function index() { - return view('lpj::penilaian.index'); + $status_permohonan = StatusPermohonan::all(); + + return view('lpj::penilaian.index', compact('status_permohonan')); } /** * Show the form for creating a new resource. */ - public function create() + public function create($id) { - return view('lpj::create'); + return view('lpj::penilaian.form'); } /** @@ -46,7 +60,22 @@ class PenilaianController extends Controller */ public function edit($id) { - return view('lpj::edit'); + + $permohonan = Permohonan::with(['user', 'debiture.province','debiture.city','debiture.district','debiture.village','branch', 'tujuanPenilaian'])->findOrFail($id); + + $jenisPenilaian = JenisPenilaian::all(); + $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); + + $jenisJaminan = JenisJaminan::all(); + + $nilaiPlafond = NilaiPlafond::all(); + $jenisFasilitas = JenisFasilitasKredit::all(); + + + + + + return view('lpj::penilaian.form', compact('permohonan', 'jenisPenilaian', 'teamPenilai', 'jenisJaminan', 'nilaiPlafond', 'jenisFasilitas')); } /** @@ -64,4 +93,70 @@ class PenilaianController extends Controller { // } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } } diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index a6b3276..4c54795 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -1,182 +1,184 @@ validated(); - public function store(PermohonanRequest $request) - { - $validate = $request->validated(); - - if ($validate) { - try { - // Save to database qq - Permohonan::create($validate); - return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan created successfully'); - } catch (Exception $e) { - return redirect() - ->route('permohonan.create') - ->with('error', 'Failed to create permohonan' . $e->getMessage()); - } - } else { + // dump($validate); + if ($validate) { + try { + // Save to database qq + Permohonan::create($validate); + return redirect() + ->route('permohonan.index') + ->with('success', 'Permohonan created successfully'); + } catch (Exception $e) { return redirect() ->route('permohonan.create') - ->with('success', 'error naon iye') - ->withInput(); + ->with('error', 'Failed to create permohonan' . $e->getMessage()); } - } - - public function create(){ - - return view('lpj::permohonan.create'); - } - - public function createPermohonan($debitur) - { - $branches = Branch::all(); - $debitur = Debiture::find($debitur); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - - return view('lpj::permohonan.form', compact('branches', 'debitur', 'tujuanPenilaian', 'status')); - } - - public function edit($id) - { - $permohonan = Permohonan::find($id); - $branches = Branch::all(); - $debitur = Debiture::find($permohonan->debiture_id); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - - return view( - 'lpj::permohonan.form', - compact('permohonan', 'branches', 'debitur', 'tujuanPenilaian', 'status'), - ); - } - - public function update(PermohonanRequest $request, $id) - { - $validate = $request->validated(); - - if ($validate) { - try { - // Update in database - $permohonan = Permohonan::find($id); - $permohonan->update($validate); - return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan updated successfully'); - } catch (Exception $e) { - return redirect() - ->route('permohonan.edit', $id) - ->with('error', 'Failed to update permohonan'); - } - } - } - - public function destroy($id) - { - try { - // Delete from database - $permohonan = Permohonan::find($id); - $permohonan->delete(); - - echo json_encode(['success' => true, 'message' => 'Permohonan deleted successfully']); - } catch (Exception $e) { - echo json_encode(['success' => false, 'message' => 'Failed to delete permohonan']); - } - } - - public function dataForDatatables(Request $request) - { - if (is_null($this->user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); - } - - // Retrieve data from the database - $query = Permohonan::query(); - - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); - } - - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - // Get the total count of records - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = 0 + 1; - - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); - } - - public function export() - { - return Excel::download(new PermohonanExport, 'permohonan.xlsx'); + } else { + return redirect() + ->route('permohonan.create') + ->with('success', 'error naon iye') + ->withInput(); } } + + public function create() + { + + return view('lpj::permohonan.create'); + } + + public function createPermohonan($debitur) + { + $branches = Branch::all(); + $debitur = Debiture::find($debitur); + $tujuanPenilaian = TujuanPenilaian::all(); + $status = StatusPermohonan::all(); + + return view('lpj::permohonan.form', compact('branches', 'debitur', 'tujuanPenilaian', 'status')); + } + + public function edit($id) + { + $permohonan = Permohonan::find($id); + $branches = Branch::all(); + $debitur = Debiture::find($permohonan->debiture_id); + $tujuanPenilaian = TujuanPenilaian::all(); + $status = StatusPermohonan::all(); + + return view( + 'lpj::permohonan.form', + compact('permohonan', 'branches', 'debitur', 'tujuanPenilaian', 'status'), + ); + } + + public function update(PermohonanRequest $request, $id) + { + $validate = $request->validated(); + + if ($validate) { + try { + // Update in database + $permohonan = Permohonan::find($id); + $permohonan->update($validate); + return redirect() + ->route('permohonan.index') + ->with('success', 'Permohonan updated successfully'); + } catch (Exception $e) { + return redirect() + ->route('permohonan.edit', $id) + ->with('error', 'Failed to update permohonan'); + } + } + } + + public function destroy($id) + { + try { + // Delete from database + $permohonan = Permohonan::find($id); + $permohonan->delete(); + + echo json_encode(['success' => true, 'message' => 'Permohonan deleted successfully']); + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete permohonan']); + } + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function export() + { + return Excel::download(new PermohonanExport(), 'permohonan.xlsx'); + } +} diff --git a/app/Http/Controllers/TeamsController.php b/app/Http/Controllers/TeamsController.php index f52cf26..bf0a39b 100644 --- a/app/Http/Controllers/TeamsController.php +++ b/app/Http/Controllers/TeamsController.php @@ -38,7 +38,9 @@ class TeamsController extends Controller // cek user apakah sudah ada di tabel teams_users $userTeam = TeamsUsers::pluck('user_id')->toArray(); - $user = User::whereNotIn('id', $userTeam)->get(); + $user = User::whereNotIn('id', $userTeam) + ->with('roles') + ->get(); return view('lpj::teams.form', compact('region', 'user')); } @@ -97,8 +99,9 @@ class TeamsController extends Controller $region = Regions::all(); $usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray(); - - $user = User::whereNotIn('id', $usedUsers)->get(); + $user = User::whereNotIn('id', $usedUsers) + ->with('roles') + ->get(); // Ambil user yang sudah ada di tim ini $selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray(); @@ -169,20 +172,20 @@ class TeamsController extends Controller } } - public function dataForDatatables(Request $request) { - if (is_null($this->user) || !$this->user->can('debitur.view')) { + if (is_null($this->user) || !$this->user->can('teams.view')) { //abort(403, 'Sorry! You are not allowed to view users.'); } + // Inisialisasi query $query = Teams::select('teams.id as id', 'teams.name as team_name', 'regions.name as region_name') ->join('regions', 'teams.regions_id', '=', 'regions.id') ->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id') ->leftJoin('users', 'teams_users.user_id', '=', 'users.id') - ->addSelect('users.name as user_name'); + ->addSelect('users.id as user_id', 'users.name as user_name'); - // search filter + // Filter pencarian if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { @@ -192,41 +195,43 @@ class TeamsController extends Controller }); } - // sorting + // Sorting if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); $column = $request->get('sortField'); $query->orderBy($column, $order); } + // Hitung total records $totalRecords = $query->count(); - $size = $request->get('size'); - $pageCount = 1; + // Pagination + $size = $request->get('size', 10); + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; - if ($size > 0) { - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $offset = ($page - 1) * $size; - $query->skip($offset)->take($size); - $filteredRecords = $query->count(); - $pageCount = ceil($totalRecords / $size); - } + // Ambil data dengan pagination + $data = $query->skip($offset)->take($size)->get(); + $filteredRecords = $data->count(); + $pageCount = ceil($totalRecords / $size); - $data = $query->get(); - } else { - $filteredRecords = $totalRecords; - $data = $query->get(); - } + // Ambil ID pengguna dari hasil query + $userIds = $data->pluck('user_id')->unique(); - $currentPage = $request->get('page') ?? 1; + // Ambil data pengguna dengan peran mereka + $users = User::whereIn('id', $userIds) + ->with('roles') + ->get() + ->keyBy('id'); - $formattedData = $data->groupBy('id')->map(function ($group) { + // Format data + $formattedData = $data->groupBy('id')->map(function ($group) use ($users) { $team = $group->first(); - $team->user_team = $group->map(function ($item) { + $team->user_team = $group->map(function ($item) use ($users) { + $user = $users->get($item->user_id); return [ 'nama' => $item->user_name, - // 'role' => $item->role_name, + 'roles' => $user ? $user->roles->pluck('name')->toArray() : [], ]; })->toArray(); return $team; @@ -237,16 +242,18 @@ class TeamsController extends Controller 'recordsTotal' => $totalRecords, 'recordsFiltered' => $filteredRecords, 'pageCount' => $pageCount, - 'page' => $currentPage, + 'page' => $page, 'totalCount' => $totalRecords, 'data' => $formattedData ]); } + + public function export() { - return Excel::download(new TeamPenilaianExport, 'team-penilai.xlsx'); + return Excel::download(new TeamPenilaianExport(), 'team-penilai.xlsx'); } diff --git a/app/Http/Requests/TeamsRequest.php b/app/Http/Requests/TeamsRequest.php index 0f1be4b..c77f4a5 100644 --- a/app/Http/Requests/TeamsRequest.php +++ b/app/Http/Requests/TeamsRequest.php @@ -14,7 +14,7 @@ class TeamsRequest extends FormRequest $rules = [ 'name' => 'required|string|max:255', 'status' => 'nullable|boolean', - 'regions_id' => 'nullable|exists:regions,id', + 'regions_id' => 'required|nullable|exists:regions,id', 'user.*' => 'nullable|exists:users,id', 'authorized_at' => 'nullable|datetime', 'authorized_status' => 'nullable|string|max:1', diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index e4d6bdd..b3620db 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PenilaianFactory; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Teams; -// use Modules\Usermanagement\Models\User; +use Modules\Usermanagement\Models\User; class Penilaian extends Model { @@ -30,9 +30,9 @@ class Penilaian extends Model return $this->belongsTo(Teams::class, 'team_id', 'id'); } - // public function users(){ - // return $this->belongsTo(User::class, 'user_id', 'id'); - // } + public function users(){ + return $this->belongsTo(User::class, 'user_id', 'id'); + } } diff --git a/database/migrations/2024_08_12_023807_create_debitures_table.php b/database/migrations/2024_08_12_023807_create_debitures_table.php deleted file mode 100644 index 583c859..0000000 --- a/database/migrations/2024_08_12_023807_create_debitures_table.php +++ /dev/null @@ -1,54 +0,0 @@ -id(); - $table->foreignIdFor(Branch::class)->constrained()->onDelete('cascade'); - $table->string('cif', 10)->unique(); - $table->string('name'); - $table->date('registered_at')->nullable(); - $table->string('npwp', 16)->nullable(); - $table->string('nomor_id', 16)->nullable(); - $table->string('email', 100)->nullable(); - $table->string('phone', 15)->nullable(); - $table->string('nomor_rekening', 50)->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('debitures'); - } - }; diff --git a/module.json b/module.json index e3efca9..9b93b6e 100644 --- a/module.json +++ b/module.json @@ -20,6 +20,7 @@ "permission": "", "roles": [ "Administrator" + ] }, { diff --git a/resources/views/jenis_penilaian/form.blade.php b/resources/views/jenis_penilaian/form.blade.php index 3fd6197..9571d8f 100644 --- a/resources/views/jenis_penilaian/form.blade.php +++ b/resources/views/jenis_penilaian/form.blade.php @@ -13,7 +13,7 @@ @if (isset($jenisPenilaian->id)) @method('PUT') - + @endif @csrf diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php new file mode 100644 index 0000000..7f094c9 --- /dev/null +++ b/resources/views/penilaian/form.blade.php @@ -0,0 +1,511 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@push('styles') + +@endpush + + +@section('content') +
+ +
+
+

+ Form Data Jaminan +

+
+ + Back +
+
+
+ + +
+
+
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ + +
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ +
+
+
+
+

1. IDENTITAS DEBITUR

+
+
+ +
+ +
+
+ +
+ +
+

+ {{ $permohonan->debiture->address . ' ' . $permohonan->debiture->village->name . ', ' . $permohonan->debiture->district->name . ', ' . $permohonan->debiture->city->name . ', ' . $permohonan->debiture->province->name . ' ' . '(' . $permohonan->debiture->postal_code . ')' }} + +

+
+
+ +
+ +
+ +
+
+
+
+ +
+

2. LETAK JAMINAN

+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+

3. FASILITAS KREDIT

+
+ + +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ + +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ +
+
+ + +
+

4. TUJUAN PENILAIAN

+
+ +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+
+
+ +
+

5. JENIS JAMINAN

+
+ +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ +
+
+ +
+

6. TIPE JAMINAN

+
+ +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ + +
+
+ +
+

7. DATA-DATA

+
+ +
+ +
+
+
+ + @error('province_code') + {{ $message }} + @enderror +
+
+ + @error('city_code') + {{ $message }} + @enderror +
+
+
+
+ + +
+ +
+ +
+
+ +
+

6. TIPE JAMINAN

+
+ +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('tujuan_penilaian_id') + {{ $message }} + @enderror +
+
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ + @error('province_code') + {{ $message }} + @enderror +
+
+ + @error('city_code') + {{ $message }} + @enderror +
+
+
+
+
+
+ + +
+ +
+
+ + + + + +
+ +
+
+ +
+@endsection diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index cfd8309..8bbb9e8 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -1,128 +1,262 @@ @extends('layouts.main') @section('breadcrumbs') - {{-- {{ Breadcrumbs::render('penilaian') }} --}} + {{ Breadcrumbs::render('basicdata.penilaian') }} @endsection @section('content')
-
-

- {{ isset($debitur->id) ? 'Edit' : 'Tambah' }} Debitur -

-
- @if (isset($debitur->id)) - Buat - Permohonan +
+ @if (isset($status_permohonan)) + @foreach ($status_permohonan as $item) + {{ $item->name }} + @endforeach @endif - - Back +
+
+ +
+
+

+ {{-- Daftar {{}} --}} +

+ +
+
+
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + Action
+
+ +
+
+
+
+@endsection + +{{-- @section('content') +
+
+
+

+ Daftar penilaian +

+
- -
- {{-- @if (isset($debitur->id)) - @method('PUT') - @endif - @csrf --}} -
- -
- - +
+ + + + + + + + + +
+ + + Code + + + penilaian + + Action
+
+
-
-@endsection +@endsection --}} + + + +@push('scripts') + + + +@endpush diff --git a/resources/views/teams/form.blade.php b/resources/views/teams/form.blade.php index 3f0ab33..6301281 100644 --- a/resources/views/teams/form.blade.php +++ b/resources/views/teams/form.blade.php @@ -57,9 +57,10 @@
- - @if (isset($region)) @foreach ($region as $regions) @if (isset($teams)) @@ -71,31 +72,45 @@ @endif @endforeach @endif - - + + @error('regions_id') + {{ $message }} + @enderror
- @if (isset($user)) @foreach ($user as $users) @if (isset($teams)) + {{ $users->name . ' | ' }} + @foreach ($users->roles as $role) + {{ $role->name }} + @endforeach + @else - + @endif @endforeach @endif - + @error('user') + {{ $message }} + @enderror
diff --git a/resources/views/teams/index.blade.php b/resources/views/teams/index.blade.php index dff81d8..de782ec 100644 --- a/resources/views/teams/index.blade.php +++ b/resources/views/teams/index.blade.php @@ -141,7 +141,9 @@ title: 'User Team', render: (item, data) => { if (data.user_team && data.user_team.length) { - return `
    ${data.user_team.map(user => `
  • ${user.nama}
  • `).join('')}
`; + return `
    ${data.user_team.map(user => + `
  • ${user.nama} | ${user.roles.join(', ')}
  • ` + ).join('')}
`; } else { return '
  • N/A
'; } diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 8638b9c..5b39fe9 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -311,7 +311,12 @@ $trail->push('Edit Jenis Penilaian'); }); + Breadcrumbs::for('basicdata.penilaian', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); - $trail->push('Jenis Penilaian', route('basicdata.penilaian.index')); + $trail->push('Penilaian', route('basicdata.penilaian.index')); + }); + Breadcrumbs::for('basicdata.penilaian.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.penilaian'); + $trail->push('Buat Penilaian'); }); diff --git a/routes/web.php b/routes/web.php index 9a1da7b..e26f7c6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -285,4 +285,5 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('debitur', DebitureController::class); + }); From eb92e1b8f76823457438def959c237c90cc65e21 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 18 Sep 2024 17:40:24 +0700 Subject: [PATCH 15/20] penambahan form assign so --- app/Http/Controllers/PenilaianController.php | 205 +++--- app/Http/Requests/PenilaianRequest.php | 16 +- app/Models/Penilaian.php | 4 +- ...24_09_05_070712_create_penilaian_table.php | 6 +- module.json | 21 +- resources/views/penilaian/form.blade.php | 620 +++++------------- resources/views/penilaian/index.blade.php | 111 +--- routes/breadcrumbs.php | 8 +- routes/web.php | 65 +- 9 files changed, 366 insertions(+), 690 deletions(-) diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 2e9dd5c..194cde6 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -13,11 +13,16 @@ use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\TujuanPenilaian; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Teams; +use Modules\Lpj\Models\TeamsUsers; +use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\NilaiPlafond; use Modules\Lpj\Models\JenisFasilitasKredit; - - +use Modules\Usermanagement\Models\User; +use Modules\Lpj\Http\Requests\PenilaianRequest; +use Modules\Lpj\Models\DetailDokumenJaminan; +use Modules\Lpj\Models\DokumenJaminan; +use Modules\Lpj\Exports\PermohonanExport; class PenilaianController extends Controller { @@ -42,11 +47,28 @@ class PenilaianController extends Controller /** * Store a newly created resource in storage. */ - public function store(Request $request): RedirectResponse + public function store(PenilaianRequest $request) { - // + $validatedData = $request->validated(); + + if ($validatedData) { + try { + + $penilaian = Penilaian::create($validatedData); + + $permohonan = Permohonan::findOrFail($request->permohonan_id); + $permohonan->update([ + 'status' => 'assign', + ]); + + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + } catch (Exception $e) { + return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + } + } } + /** * Show the specified resource. */ @@ -66,26 +88,36 @@ class PenilaianController extends Controller $jenisPenilaian = JenisPenilaian::all(); $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); - $jenisJaminan = JenisJaminan::all(); + $penilaian = Penilaian::where('permohonan_id', $id)->first(); - $nilaiPlafond = NilaiPlafond::all(); - $jenisFasilitas = JenisFasilitasKredit::all(); - - - - - - return view('lpj::penilaian.form', compact('permohonan', 'jenisPenilaian', 'teamPenilai', 'jenisJaminan', 'nilaiPlafond', 'jenisFasilitas')); + return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); } /** * Update the specified resource in storage. */ - public function update(Request $request, $id): RedirectResponse + public function update(PenilaianRequest $request, $id) { - // + $validate = $request->validated(); + + if ($validate) { + try { + $penilaian = Penilaian::where('permohonan_id', $id)->firstOrFail(); + + $penilaian->update($validate); + $permohonan = Permohonan::findOrFail($id); + $permohonan->update([ + 'status' => 'assign', + ]); + + return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); + } catch (Exception $e) { + return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); + } + } } + /** * Remove the specified resource from storage. */ @@ -95,68 +127,85 @@ class PenilaianController extends Controller } public function dataForDatatables(Request $request) - { - if (is_null($this->user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); - } - - // Retrieve data from the database - $query = Permohonan::query(); - - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); - } - - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - // Get the total count of records - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = 0 + 1; - - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); +{ + if (is_null($this->user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); } + + + $query = Permohonan::query(); + + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Filter to show only records with status 'register' + $query->where('status', 'register'); + + + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + $filteredRecords = $query->count(); + + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + $pageCount = ceil($totalRecords / $request->get('size')); + + $currentPage = $page; + + + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); +} + + + + + + public function getUserTeams($id) + { + + $teamsUser = TeamsUsers::where('teams_id', $id)->get(); + $userIds = $teamsUser->pluck('user_id'); + $users = User::whereIn('id', $userIds)->get(); + + if ($users->isNotEmpty()) { + return response()->json($users, 200); + } + + return response()->json([], 200); + } + + } diff --git a/app/Http/Requests/PenilaianRequest.php b/app/Http/Requests/PenilaianRequest.php index 8b29d51..6be90ac 100644 --- a/app/Http/Requests/PenilaianRequest.php +++ b/app/Http/Requests/PenilaianRequest.php @@ -12,7 +12,13 @@ class PenilaianRequest extends FormRequest public function rules(): array { return [ - // + 'jenis_penilaian_id' => 'required|max:255', + 'teams_id' => 'required|max:255', + 'user_id' => 'required|max:255', + 'tanggal_kunjungan' => 'required|max:255', + 'status' => 'required|max:10', + 'keterangan' => 'nullable', + 'permohonan_id' => 'required', ]; } @@ -23,4 +29,12 @@ class PenilaianRequest extends FormRequest { return true; } + + protected function prepareForValidation() + { + // Menetapkan nilai default untuk 'status' jika tidak ada dalam request + $this->merge([ + 'status' => $this->status ?? 'assign', + ]); + } } diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index b3620db..34a5098 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -17,7 +17,7 @@ class Penilaian extends Model */ protected $table = 'penilaian'; protected $fillable = [ - 'jenis_penilaian_id', 'team_id', 'user_id', 'tanggal_kunjungan', 'keterangan', + 'jenis_penilaian_id', 'teams_id', 'user_id', 'tanggal_kunjungan', 'keterangan','permohonan_id', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; @@ -27,7 +27,7 @@ class Penilaian extends Model } public function teams(){ - return $this->belongsTo(Teams::class, 'team_id', 'id'); + return $this->belongsTo(Teams::class, 'teams_id', 'id'); } public function users(){ diff --git a/database/migrations/2024_09_05_070712_create_penilaian_table.php b/database/migrations/2024_09_05_070712_create_penilaian_table.php index 9764f04..da22785 100644 --- a/database/migrations/2024_09_05_070712_create_penilaian_table.php +++ b/database/migrations/2024_09_05_070712_create_penilaian_table.php @@ -6,8 +6,7 @@ use Illuminate\Support\Facades\Schema; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Teams; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. */ @@ -19,8 +18,9 @@ return new class extends Migration $table->foreignIdFor(Teams::class); $table->unsignedBigInteger('user_id'); $table->datetime('tanggal_kunjungan'); - $table->text('keterangan'); + $table->text('keterangan')->nullable(); $table->char('status'); + $table->integer('permohonan_id'); $table->timestamps(); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); diff --git a/module.json b/module.json index 9b93b6e..e91a8f7 100644 --- a/module.json +++ b/module.json @@ -20,7 +20,7 @@ "permission": "", "roles": [ "Administrator" - + ] }, { @@ -56,6 +56,17 @@ "Administrator" ] }, + { + "title": "Penilaian Jaminan", + "path": "penilaian", + "icon": "ki-filled ki-some-files text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "Administrator" + ] + }, { "title": "Laporan", "path": "", @@ -207,14 +218,6 @@ "attributes": [], "permission": "", "roles": [] - }, - { - "title": "Penilaian Jaminan", - "path": "basicdata.penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": [] } ] diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 7f094c9..90ca57d 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -12,12 +12,6 @@ background-color: #ddd; margin: 20px 0; } - - .h1 { - font-size: 16px; - font-weight: 600; - margin-bottom: 10px; - } @endpush @@ -28,484 +22,194 @@

- Form Data Jaminan + Form Penilai Jaminan

+
+
- -
-
-
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
+ @if (isset($penilaian->permohonan_id)) + @method('PUT') + + @else + + @endif + @csrf +
+
+ +
+ + @error('jenis_penilaian_id') + {{ $message }} + @enderror
-
-
- -
- -
+
+ +
+ + @error('teams_id') + {{ $message }} + @enderror
+
-
- -
- -
-
- -
- -
- -
+
+ +
+
-
-
- -
- -
-
+
+ -
- -
- -
+
+ + @error('tanggal_kunjungan') + {{ $message }} + @enderror
+ +
+ +
+ +
+ @error('keterangan') + {{ $message }} + @enderror +
- -
-
-
-
-

1. IDENTITAS DEBITUR

-
-
- -
- -
-
- -
- -
-

- {{ $permohonan->debiture->address . ' ' . $permohonan->debiture->village->name . ', ' . $permohonan->debiture->district->name . ', ' . $permohonan->debiture->city->name . ', ' . $permohonan->debiture->province->name . ' ' . '(' . $permohonan->debiture->postal_code . ')' }} - -

-
-
- -
- -
- -
-
-
-
- -
-

2. LETAK JAMINAN

-
-
- -
- -
-
- -
- -
-
- -
-
-
- -
- -
- -
-
-
- -
- -
-
-
-
- -
-

3. FASILITAS KREDIT

-
- - -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- - -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
-
- - -
-

4. TUJUAN PENILAIAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
-
-
- -
-

5. JENIS JAMINAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
-
- -
-

6. TIPE JAMINAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- - -
-
- -
-

7. DATA-DATA

-
- -
- -
-
-
- - @error('province_code') - {{ $message }} - @enderror -
-
- - @error('city_code') - {{ $message }} - @enderror -
-
-
-
- - -
- -
- -
-
- -
-

6. TIPE JAMINAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
- -
- -
-
- - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
-
-
- - @error('province_code') - {{ $message }} - @enderror -
-
- - @error('city_code') - {{ $message }} - @enderror -
-
-
-
-
-
- - -
- -
-
- - - - -
+
@endsection + + +@push('scripts') + +@endpush diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index 8bbb9e8..a8a29e6 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -1,7 +1,7 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('basicdata.penilaian') }} + {{ Breadcrumbs::render('penilaian') }} @endsection @section('content') @@ -9,15 +9,8 @@
- @if (isset($status_permohonan)) - @foreach ($status_permohonan as $item) - {{ $item->name }} - @endforeach - @endif + Daftar Penilaian
-
- -

{{-- Daftar {{}} --}} @@ -25,16 +18,19 @@

+
+ +
+
@@ -93,99 +89,10 @@ @endsection -{{-- @section('content') -
-
-
-

- Daftar penilaian -

- -
-
-
-
- - - - - - - - -
- - - Code - - - penilaian - - Action
-
- -
-
-
-@endsection --}} - @push('scripts') - +@endpush From 9a238ddb8327afdc7b0311ea907b79319e8f86b9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 19 Sep 2024 11:09:59 +0700 Subject: [PATCH 20/20] penambahan detail permonan pada form assignment --- app/Http/Controllers/PenilaianController.php | 368 +++++++++--------- app/Http/Controllers/PermohonanController.php | 156 +------- resources/views/penilaian/form.blade.php | 228 ++++++++++- 3 files changed, 413 insertions(+), 339 deletions(-) diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 194cde6..dadfd09 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -1,211 +1,203 @@ validated(); - /** - * Store a newly created resource in storage. - */ - public function store(PenilaianRequest $request) - { - $validatedData = $request->validated(); + if ($validatedData) { + try { + $penilaian = Penilaian::create($validatedData); - if ($validatedData) { - try { + $permohonan = Permohonan::findOrFail($request->permohonan_id); + $permohonan->update([ + 'status' => 'assign', + ]); - $penilaian = Penilaian::create($validatedData); - - $permohonan = Permohonan::findOrFail($request->permohonan_id); - $permohonan->update([ - 'status' => 'assign', - ]); - - return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); - } catch (Exception $e) { - return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + } catch (Exception $e) { + return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + } } } - } + /** + * Show the form for creating a new resource. + */ + public function create($id) + { + return view('lpj::penilaian.form'); + } - /** - * Show the specified resource. - */ - public function show($id) - { - return view('lpj::show'); - } + /** + * Update the specified resource in storage. + */ + public function update(PenilaianRequest $request, $id) + { + $validate = $request->validated(); - /** - * Show the form for editing the specified resource. - */ - public function edit($id) - { + if ($validate) { + try { + $penilaian = Penilaian::where('permohonan_id', $id)->firstOrFail(); - $permohonan = Permohonan::with(['user', 'debiture.province','debiture.city','debiture.district','debiture.village','branch', 'tujuanPenilaian'])->findOrFail($id); + $penilaian->update($validate); + $permohonan = Permohonan::findOrFail($id); + $permohonan->update([ + 'status' => 'assign', + ]); - $jenisPenilaian = JenisPenilaian::all(); - $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); - - $penilaian = Penilaian::where('permohonan_id', $id)->first(); - - return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); - } - - /** - * Update the specified resource in storage. - */ - public function update(PenilaianRequest $request, $id) - { - $validate = $request->validated(); - - if ($validate) { - try { - $penilaian = Penilaian::where('permohonan_id', $id)->firstOrFail(); - - $penilaian->update($validate); - $permohonan = Permohonan::findOrFail($id); - $permohonan->update([ - 'status' => 'assign', - ]); - - return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); - } catch (Exception $e) { - return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); + return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); + } catch (Exception $e) { + return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); + } } } - } - - /** - * Remove the specified resource from storage. - */ - public function destroy($id) - { - // - } - - public function dataForDatatables(Request $request) -{ - if (is_null($this->user) || !$this->user->can('debitur.view')) { - // abort(403, 'Sorry! You are not allowed to view users.'); - } - - - $query = Permohonan::query(); - - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); - } - - // Filter to show only records with status 'register' - $query->where('status', 'register'); - - - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - $filteredRecords = $query->count(); - - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - - $pageCount = ceil($totalRecords / $request->get('size')); - - $currentPage = $page; - - - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); -} - - - - - - public function getUserTeams($id) - { - - $teamsUser = TeamsUsers::where('teams_id', $id)->get(); - $userIds = $teamsUser->pluck('user_id'); - $users = User::whereIn('id', $userIds)->get(); - - if ($users->isNotEmpty()) { - return response()->json($users, 200); + /** + * Show the specified resource. + */ + public function show($id) + { + return view('lpj::show'); } - return response()->json([], 200); + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + $permohonan = Permohonan::with( + [ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + ], + )->findOrFail($id); + + $jenisPenilaian = JenisPenilaian::all(); + $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); + + $penilaian = Penilaian::where('permohonan_id', $id)->first(); + + return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + // + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } + + + $query = Permohonan::query(); + + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Filter to show only records with status 'register' + $query->where('status', 'register'); + + + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + $filteredRecords = $query->count(); + + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + $pageCount = ceil($totalRecords / $request->get('size')); + + $currentPage = $page; + + + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + + public function getUserTeams($id) + { + $teamsUser = TeamsUsers::where('teams_id', $id)->get(); + $userIds = $teamsUser->pluck('user_id'); + $users = User::whereIn('id', $userIds)->get(); + + if ($users->isNotEmpty()) { + return response()->json($users, 200); + } + + return response()->json([], 200); + } + + } - - -} diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 5fe6996..2cd35d0 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -1,6 +1,6 @@ validated(); + public function index() + { + return view('lpj::permohonan.index'); + } public function store(PermohonanRequest $request) { @@ -53,7 +49,8 @@ class PermohonanController extends Controller } else { return redirect() ->route('permohonan.create') - ->with('error', 'Failed to create permohonan' . $e->getMessage()); + ->with('success', 'error naon iye') + ->withInput(); } } @@ -308,138 +305,3 @@ class PermohonanController extends Controller return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); } } - - public function create() - { - - return view('lpj::permohonan.create'); - } - - public function createPermohonan($debitur) - { - $branches = Branch::all(); - $debitur = Debiture::find($debitur); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - - return view('lpj::permohonan.form', compact('branches', 'debitur', 'tujuanPenilaian', 'status')); - } - - public function edit($id) - { - $permohonan = Permohonan::find($id); - $branches = Branch::all(); - $debitur = Debiture::find($permohonan->debiture_id); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - - return view( - 'lpj::permohonan.form', - compact('permohonan', 'branches', 'debitur', 'tujuanPenilaian', 'status'), - ); - } - - public function update(PermohonanRequest $request, $id) - { - $validate = $request->validated(); - - if ($validate) { - try { - // Update in database - $permohonan = Permohonan::find($id); - $permohonan->update($validate); - return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan updated successfully'); - } catch (Exception $e) { - return redirect() - ->route('permohonan.edit', $id) - ->with('error', 'Failed to update permohonan'); - } - } - } - - public function destroy($id) - { - try { - // Delete from database - $permohonan = Permohonan::find($id); - $permohonan->delete(); - - echo json_encode(['success' => true, 'message' => 'Permohonan deleted successfully']); - } catch (Exception $e) { - echo json_encode(['success' => false, 'message' => 'Failed to delete permohonan']); - } - } - - public function dataForDatatables(Request $request) - { - if (is_null($this->user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); - } - - // Retrieve data from the database - $query = Permohonan::query(); - - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); - } - - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - // Get the total count of records - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = 0 + 1; - - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); - } - - public function export() - { - return Excel::download(new PermohonanExport(), 'permohonan.xlsx'); - } -} diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 6ea1260..68e7bc0 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -18,7 +18,229 @@ @section('content')
+
+
+

+ Data Permohonan +

+
+
+
+

+ Nomor Register Permohonan: +

+ + {{ $permohonan->nomor_registrasi }} + +
+
+

+ Pemohon: +

+ + {{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }} + +
+ +
+

+ Tujan Permohonan: +

+ + {{ $permohonan->tujuanPenilaian->name }} + +
+ +
+
+ +
+
+

+ Detail Debutur +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ Name + + {{ $permohonan->debiture->name ?? "" }} +
+ Email + + {{ $permohonan->debiture->email ?? "" }} +
+ Phone + + {{ $permohonan->debiture->phone ?? "" }} +
+ Address + + {{ $permohonan->debiture->address ?? "" }} +
+   + + {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} +
+
+
+ + + + + + + + + + + + + + + + + +
+ Cabang + + {{ $permohonan->debiture->branch->name ?? "" }} +
+ CIF + + {{ $permohonan->debiture->cif ?? "" }} +
+ Nomor Rekening + + {{ $permohonan->debiture->nomor_rekening ?? "" }} +
+ NPWP + + {{ $permohonan->debiture->npwp ?? "" }} +
+
+
+
+
+ +
+
+

+ Data Jaminan +

+
+
+ @foreach($permohonan->debiture->documents as $dokumen) +
+ + +
+ @endforeach +
+
+

@@ -34,12 +256,8 @@
- @if (isset($penilaian->permohonan_id)) @method('PUT') - - @else - @endif @csrf
@@ -47,11 +265,13 @@ +