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:
@@ -3,6 +3,7 @@
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
@@ -304,4 +305,19 @@
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,28 +96,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal for PDF viewing -->
|
||||
<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
|
||||
@include('lpj::component.pdfviewer')
|
||||
|
||||
@@ -68,7 +68,10 @@
|
||||
<span class="text-2xs text-gray-600 uppercase">
|
||||
{{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
||||
</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 class="border-t border-gray-300 border-dashed">
|
||||
</div>
|
||||
@@ -129,6 +132,7 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@include('lpj::component.pdfviewer')
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
|
||||
@@ -158,7 +158,10 @@
|
||||
debitur_id: {
|
||||
title: 'Debitur',
|
||||
render: (item, data) => {
|
||||
return `${data.debiture.name}`;
|
||||
if(data.debiture) {
|
||||
return `${data.debiture.name}`;
|
||||
}
|
||||
return "-";
|
||||
},
|
||||
},
|
||||
tujuan_penilaian_id: {
|
||||
@@ -171,10 +174,16 @@
|
||||
title: 'Status'
|
||||
},
|
||||
actions: {
|
||||
title: 'Status',
|
||||
title: 'Actions',
|
||||
render: (item, data) => {
|
||||
return `
|
||||
<div class="flex flex-nowrap justify-center gap-1.5">
|
||||
var actionHtml = `
|
||||
<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">
|
||||
<i class="ki-outline ki-notepad-edit"></i>
|
||||
</a>
|
||||
@@ -182,6 +191,8 @@
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</a>
|
||||
</div>`;
|
||||
|
||||
return actionHtml;
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -277,6 +277,12 @@
|
||||
$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) {
|
||||
$trail->parent('permohonan.index');
|
||||
$trail->push('Tambah Permohonan', route('permohonan.create'));
|
||||
|
||||
@@ -336,6 +336,7 @@ Route::middleware(['auth'])->group(function () {
|
||||
Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore');
|
||||
Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables');
|
||||
Route::get('export', [PermohonanController::class, 'export'])->name('export');
|
||||
Route::get('print/{id}', [PermohonanController::class, 'print'])->name('print');
|
||||
});
|
||||
|
||||
Route::name('spk.')->prefix('spk')->group(function () {
|
||||
|
||||
Reference in New Issue
Block a user