From 4c3d39a7ae23bcabd824d5e6876f3ff9d88e6fad Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 23 Jan 2025 11:37:10 +0700 Subject: [PATCH 1/3] feat(penilai): tambahkan fitur upload file paparan - Menambahkan metode edit untuk menampilkan form upload file paparan. - Menambahkan metode storePaparan untuk menyimpan file paparan ke database. - Membuat migrasi untuk menambahkan kolom file_paparan pada tabel penilai. - Menambahkan tampilan edit.blade.php untuk form upload. - Memperbarui tampilan show.blade.php untuk mengarahkan ke form edit. - Menambahkan breadcrumb untuk navigasi ke halaman upload file paparan. - Memperbarui rute untuk mendukung pengeditan dan penyimpanan file paparan. --- app/Http/Controllers/PenilaiController.php | 27 ++++--- ...2025_01_23_040956_update_penilai_table.php | 28 ++++++++ resources/views/penilai/edit.blade.php | 72 +++++++++++++++++++ resources/views/penilai/show.blade.php | 38 +--------- routes/breadcrumbs.php | 6 ++ routes/web.php | 3 +- 6 files changed, 125 insertions(+), 49 deletions(-) create mode 100644 database/migrations/2025_01_23_040956_update_penilai_table.php create mode 100644 resources/views/penilai/edit.blade.php diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 2bd60fa..e535ddb 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -246,11 +246,13 @@ class PenilaiController extends Controller */ public function edit($id) { - return view('lpj::edit'); + $permohonan = Permohonan::with('debiture')->find($id); + return view('lpj::penilai.edit',compact('permohonan')); } - public function storePaparan($id) + + public function storePaparan(Request $request, $id) { try { $permohonan = Permohonan::findOrFail($id); @@ -269,17 +271,20 @@ class PenilaiController extends Controller ] ); - return response()->json([ - 'success' => true, - 'message' => 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.' - ], 200); + if($request->hasFile('file_paparan')) { + $file = $request->file('file_paparan'); + $path = $file->store('public/file_paparan'); + + $penilai = Penilai::where('permohonan_id', $id)->first(); + $penilai->file_paparan = $path; + $penilai->save(); + } + + return redirect() + ->route('penilai.show',['id'=>$id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.'); } catch (\Exception $e) { - return response()->json([ - 'success' => false, - 'message' => 'Terjadi kesalahan saat memproses permohonan.', - 'error' => $e->getMessage() - ], 500); + return redirect()->route('penilai.show',['id'=>$id])->with('error', 'Terjadi kesalahan saat memproses permohonan.'); } } diff --git a/database/migrations/2025_01_23_040956_update_penilai_table.php b/database/migrations/2025_01_23_040956_update_penilai_table.php new file mode 100644 index 0000000..60313c6 --- /dev/null +++ b/database/migrations/2025_01_23_040956_update_penilai_table.php @@ -0,0 +1,28 @@ +string('file_paparan')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penilai', function (Blueprint $table) { + $table->dropColumn('file_paparan'); + }); + } +}; diff --git a/resources/views/penilai/edit.blade.php b/resources/views/penilai/edit.blade.php new file mode 100644 index 0000000..9c2fde1 --- /dev/null +++ b/resources/views/penilai/edit.blade.php @@ -0,0 +1,72 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('penilai.edit') }} +@endsection + +@section('content') +
+
+
+
+ Upload File Paparan +
+
+ Back +
+
+
+
+ @csrf + + +
+ +
+ + @error('nomor_registrasi') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('debitur') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('file_paparan') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection + + +@push('scripts') + +@endpush diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index e8deb10..39a0c52 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -560,45 +560,9 @@ cancelButtonColor: '#d33', confirmButtonText: 'Yes' }).then((result) => { - if (result.isConfirmed) { - $.ajax({ - url: `/penilai/storePaparan/${permohonanId}`, - type: "PUT", - headers: { - 'X-CSRF-TOKEN': '{{ csrf_token() }}' - }, - success: function(response) { - if (response.success) { - // window.location.reload(); - hideLoadingSwal(); - Swal.fire({ - title: 'Berhasil!', - text: response.message, - icon: 'success', - confirmButtonText: 'OK' - }).then((response) => { - if (response.isConfirmed) { - window.location.reload(); - } - }); - } - }, - error: function(xhr, status, error) { - console.log('Error checking button status:', error, status, xhr); - if (xhr.responseJSON.message) { - // window.location.reload(); - hideLoadingSwal(); - - } else { - // window.location.reload(); - hideLoadingSwal(); - } - } - }) - + window.location.href = `/penilai/${permohonanId}/edit`; } - }); } diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index a47a2ce..a0ec3d2 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -587,6 +587,12 @@ $trail->push('Detail Penilai'); }); + Breadcrumbs::for('penilai.edit', function (BreadcrumbTrail $trail) { + $trail->parent('penilai'); + $trail->push('Upload File Paparan'); + }); + + Breadcrumbs::for('penilai.standard', function (BreadcrumbTrail $trail) { $trail->parent('penilai.show'); $trail->push('Standard'); diff --git a/routes/web.php b/routes/web.php index c0dc4f1..295ee2e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -561,6 +561,7 @@ Route::middleware(['auth'])->group(function () { Route::name('penilai.')->prefix('penilai')->group(function () { Route::get('/', [PenilaiController::class, 'index'])->name('index'); + Route::get('/{id}/edit', [PenilaiController::class, 'edit'])->name('edit'); Route::get('/{id}/show', [PenilaiController::class, 'show'])->name('show'); Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables'); @@ -575,7 +576,7 @@ Route::middleware(['auth'])->group(function () { Route::get('resume', [PenilaiController::class, 'resume'])->name('resume'); Route::get('memo', [PenilaiController::class, 'memo'])->name('memo'); Route::get('paparan', [PenilaiController::class, 'paparan'])->name('paparan'); - Route::put('storePaparan/{id}', [PenilaiController::class, 'storePaparan'])->name('storePaparan'); + Route::post('storePaparan/{id}', [PenilaiController::class, 'storePaparan'])->name('storePaparan'); Route::get('rap', [PenilaiController::class, 'rap'])->name('rap'); Route::get('/check-status-lpj', [PenilaiController::class, 'checkStatusLpj'])->name('check.status.lpj'); Route::get('/check-laporan', [PenilaiController::class, 'checkPrintOutLaporan'])->name('check-laporan'); From c0b125b481d632d5548032bac6e2758b0ed46bee Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 23 Jan 2025 13:33:48 +0700 Subject: [PATCH 2/3] feat(penilaian): tambahkan fitur tanggal paparan dan otorisasi - Menambahkan kolom tanggal paparan pada tampilan laporan. - Memperbarui model Permohonan untuk menambahkan relasi otorisasi. - Memperbaiki logika otorisasi pada tampilan paparan. - Memperbaiki penanganan tombol untuk melihat data paparan. --- app/Http/Controllers/PenilaianController.php | 14 +++++-- app/Models/Permohonan.php | 4 ++ resources/views/laporan/index.blade.php | 2 +- .../views/penilaian/otorisator/show.blade.php | 23 +++++------ .../views/penilaian/paparan-so.blade.php | 40 +++++++++++++++++++ 5 files changed, 66 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 1a48914..e3e3229 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -539,6 +539,10 @@ class PenilaianController extends Controller 'approve_so_at' => now(), 'keterangan_so' => $request->message, ]); + + $permohonan->update([ + 'tanggal_paparan' => $request->tanggalPaparan + ]); } elseif (Auth::user()->roles[0]->name === 'EO Appraisal') { $status = '2'; if (!in_array($permohonan->nilai_plafond_id, [1, 4])) { @@ -564,12 +568,11 @@ class PenilaianController extends Controller ]); $permohonan->update([ - 'status' => 'paparan', - 'tanggal_paparan' => $request->tanggalPaparan + 'status' => 'paparan' ]); } break; - + default: return response()->json([ 'message' => 'Konteks otorisasi tidak valid.', @@ -679,7 +682,10 @@ class PenilaianController extends Controller }, 'approveSo', 'approveEo', - 'approveDd' + 'approveDd', + 'authorization.approveSo', + 'authorization.approveEo', + 'authorization.approveDd' ])->get(); diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index ec0604f..8bdb2f3 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -217,4 +217,8 @@ public function approveSo(){ return $this->belongsTo(User::class, 'approval_so', 'id'); } + + public function authorization(){ + return $this->belongsTo(Authorization::class, 'id', 'permohonan_id'); + } } diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php index d522f6c..555b890 100644 --- a/resources/views/laporan/index.blade.php +++ b/resources/views/laporan/index.blade.php @@ -193,7 +193,7 @@ let resumeButton = ''; if(data.penilai.resume) { - const resumeButton = ` + resumeButton = ` Resume `; diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index ce1c1b8..b442693 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -159,13 +159,13 @@ @endif @elseif($dataHeader == 'paparan') - - Lihat Data Paparan - - + @if($permohonan->penilai->file_paparan) + Lihat Data Paparan + @endif @if(Auth::user()->hasAnyRole(['administrator','senior-officer']) && $authorization->approve_so==null) - @@ -173,8 +173,7 @@ @if(Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) && $authorization->approve_so && - $authorization->approve_dd == null && - in_array($permohonan->nilai_plafond_id, [1, 4])) + $authorization->approve_dd == null)