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;
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -158,7 +158,10 @@
|
|||||||
debitur_id: {
|
debitur_id: {
|
||||||
title: 'Debitur',
|
title: 'Debitur',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return `${data.debiture.name}`;
|
if(data.debiture) {
|
||||||
|
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;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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'));
|
||||||
|
|||||||
@@ -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 () {
|
||||||
|
|||||||
Reference in New Issue
Block a user