feat(memo): tambah tombol download PDF dan disable checkbox untuk memo selesai
- Menambahkan field memo_penyelesaian_pdf_path ke tabel noc untuk menyimpan path file PDF - Membuat migrasi baru untuk menambahkan field PDF path ke tabel noc - Menambahkan field memo_penyelesaian_pdf_path ke model Noc dalam fillable array - Memodifikasi fungsi generatePdf di MemoController untuk menyimpan path PDF ke database - Menambahkan route baru memo.download-pdf untuk download file PDF memo penyelesaian - Membuat method downloadPdf di MemoController dengan validasi file dan error handling - Memodifikasi kolom select di datatables untuk disable checkbox jika sudah ada memo - Menambahkan tooltip pada checkbox yang disabled untuk memberikan informasi kepada user - Memodifikasi kolom actions untuk menampilkan tombol download PDF jika memo sudah ada - Menampilkan informasi nomor memo dan tanggal memo di kolom actions - Memodifikasi fungsi handleCheckboxChange untuk mengabaikan checkbox yang disabled - Menambahkan styling untuk tombol download dengan icon dan warna yang sesuai - Menambahkan logging untuk tracking aktivitas download PDF memo penyelesaian - Menambahkan validasi keberadaan file di storage sebelum mengizinkan download - Menggunakan Storage facade untuk operasi file yang lebih aman dan konsisten
This commit is contained in:
@@ -241,6 +241,7 @@ class MemoController extends Controller
|
||||
'debiture',
|
||||
'branch',
|
||||
'tujuanPenilaian',
|
||||
'jenisPenilaian',
|
||||
'penilaian',
|
||||
'jenisFasilitasKredit',
|
||||
'documents.inspeksi',
|
||||
@@ -516,4 +517,41 @@ class MemoController extends Controller
|
||||
$uniqueJaminan = array_unique($jaminanTypes);
|
||||
return implode(' & ', $uniqueJaminan);
|
||||
}
|
||||
/**
|
||||
* Download PDF memo penyelesaian
|
||||
*
|
||||
* @param int $id - ID permohonan
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function downloadPdf($id)
|
||||
{
|
||||
Log::info('MemoController: Download PDF memo penyelesaian untuk permohonan ID: ' . $id);
|
||||
|
||||
try {
|
||||
// Cari NOC berdasarkan permohonan_id
|
||||
$noc = Noc::where('permohonan_id', $id)->first();
|
||||
|
||||
if (!$noc || !$noc->memo_penyelesaian) {
|
||||
Log::warning('MemoController: PDF memo penyelesaian tidak ditemukan untuk permohonan ID: ' . $id);
|
||||
return redirect()->back()->with('error', 'File PDF memo penyelesaian tidak ditemukan.');
|
||||
}
|
||||
|
||||
// Cek apakah file ada di storage
|
||||
if (!Storage::disk('public')->exists($noc->memo_penyelesaian)) {
|
||||
Log::warning('MemoController: File PDF tidak ada di storage: ' . $noc->memo_penyelesaian);
|
||||
return redirect()->back()->with('error', 'File PDF tidak ditemukan di server.');
|
||||
}
|
||||
|
||||
// Download file
|
||||
$fileName = 'memo-penyelesaian-' . $noc->memo_penyelesaian_number . '.pdf';
|
||||
|
||||
Log::info('MemoController: Berhasil download PDF memo penyelesaian: ' . $fileName);
|
||||
|
||||
return Storage::disk('public')->download($noc->memo_penyelesaian, $fileName);
|
||||
|
||||
} catch (Exception $e) {
|
||||
Log::error('MemoController: Error saat download PDF memo penyelesaian - ' . $e->getMessage());
|
||||
return redirect()->back()->with('error', 'Terjadi kesalahan saat mengunduh file PDF.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user