Add PDF preview feature and improve permohonan management

Introduced a "Preview" button for jaminan documents to view PDFs directly. Refactored Permohonan management to include a show view and print functionality, and updated relevant views and routes accordingly.
This commit is contained in:
Daeng Deni Mardaeni
2024-10-31 14:14:48 +07:00
parent 5343c424b1
commit 1d1492b636
6 changed files with 44 additions and 30 deletions

View File

@@ -3,6 +3,7 @@
namespace Modules\Lpj\Http\Controllers; namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Barryvdh\DomPDF\Facade\Pdf;
use Exception; use Exception;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
@@ -304,4 +305,19 @@
return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully');
} }
public function show($id)
{
$permohonan = Permohonan::find($id);
return view('lpj::permohonan.show', compact('permohonan'));
}
public function print($id){
$permohonan = Permohonan::find($id);
return view('lpj::permohonan.print', compact('permohonan'));
// $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan'));
// return $pdf->stream();
}
} }

View File

@@ -96,28 +96,4 @@
</div> </div>
</div> </div>
<!-- Modal for PDF viewing --> @include('lpj::component.pdfviewer')
<div id="pdfModal" class="fixed inset-0 bg-gray-800 bg-opacity-75 flex items-center justify-center hidden w-full">
<div class="bg-white rounded-lg overflow-hidden shadow-xl transform transition-all min-w-3xl w-[1500px] h-[1200px]">
<div class="p-4 h-full">
<button onclick="closePDFModal()" class="float-right text-2xl">
<i class="ki-filled ki-cross-square text-red-600"></i>
</button>
<div id="pdfViewer" class="h-full"></div>
</div>
</div>
</div>
@push('scripts')
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.3.0/pdfobject.min.js"></script>
<script>
function viewPDF(url) {
PDFObject.embed(url, "#pdfViewer");
document.getElementById('pdfModal').classList.remove('hidden');
}
function closePDFModal() {
document.getElementById('pdfModal').classList.add('hidden');
}
</script>
@endpush

View File

@@ -68,7 +68,10 @@
<span class="text-2xs text-gray-600 uppercase"> <span class="text-2xs text-gray-600 uppercase">
{{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
</span> </span>
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id, 'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline">{{ basename($detail->dokumen_jaminan) }} <i class="ki-filled ki-cloud-download"></i></a> <div>
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id,'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline mt-2 badge-info"><i class="ki-filled ki-cloud-download mr-2"></i> Download</a>
<span class="badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($detail->dokumen_jaminan) }}')"><i class="ki-filled ki-eye mr-2"></i>Preview</span>
</div>
</div> </div>
<div class="border-t border-gray-300 border-dashed"> <div class="border-t border-gray-300 border-dashed">
</div> </div>
@@ -129,6 +132,7 @@
</a> </a>
</div> </div>
@include('lpj::component.pdfviewer')
@push('scripts') @push('scripts')
<script type="text/javascript"> <script type="text/javascript">

View File

@@ -158,7 +158,10 @@
debitur_id: { debitur_id: {
title: 'Debitur', title: 'Debitur',
render: (item, data) => { render: (item, data) => {
if(data.debiture) {
return `${data.debiture.name}`; return `${data.debiture.name}`;
}
return "-";
}, },
}, },
tujuan_penilaian_id: { tujuan_penilaian_id: {
@@ -171,10 +174,16 @@
title: 'Status' title: 'Status'
}, },
actions: { actions: {
title: 'Status', title: 'Actions',
render: (item, data) => { render: (item, data) => {
return ` var actionHtml = `
<div class="flex flex-nowrap justify-center gap-1.5"> <div class="flex flex-nowrap justify-center gap-1.5">`;
if(data.status !== 'order'){
actionHtml += `<a class="btn btn-sm btn-outline btn-success" href="permohonan/${data.id}">
<i class="ki-filled ki-document"></i>
</a>`;
}
actionHtml += `
<a class="btn btn-sm btn-outline btn-info" href="permohonan/${data.id}/edit"> <a class="btn btn-sm btn-outline btn-info" href="permohonan/${data.id}/edit">
<i class="ki-outline ki-notepad-edit"></i> <i class="ki-outline ki-notepad-edit"></i>
</a> </a>
@@ -182,6 +191,8 @@
<i class="ki-outline ki-trash"></i> <i class="ki-outline ki-trash"></i>
</a> </a>
</div>`; </div>`;
return actionHtml;
}, },
} }
}, },

View File

@@ -277,6 +277,12 @@
$trail->push('Permohonan', route('permohonan.index')); $trail->push('Permohonan', route('permohonan.index'));
}); });
Breadcrumbs::for('permohonan.show', function (BreadcrumbTrail $trail) {
$trail->parent('permohonan.index');
$trail->push('Show Permohonan');
});
Breadcrumbs::for('permohonan.create', function (BreadcrumbTrail $trail) { Breadcrumbs::for('permohonan.create', function (BreadcrumbTrail $trail) {
$trail->parent('permohonan.index'); $trail->parent('permohonan.index');
$trail->push('Tambah Permohonan', route('permohonan.create')); $trail->push('Tambah Permohonan', route('permohonan.create'));

View File

@@ -336,6 +336,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore');
Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables'); Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [PermohonanController::class, 'export'])->name('export'); Route::get('export', [PermohonanController::class, 'export'])->name('export');
Route::get('print/{id}', [PermohonanController::class, 'print'])->name('print');
}); });
Route::name('spk.')->prefix('spk')->group(function () { Route::name('spk.')->prefix('spk')->group(function () {