- Menambahkan controller LampiranDokumenController untuk mengelola lampiran dokumen. - Menambahkan model LampiranDokumen untuk interaksi dengan tabel lampiran_dokumen. - Membuat migrasi untuk tabel lampiran_dokumen dengan kolom yang diperlukan. - Menambahkan rute untuk mengupload, mendownload, dan menghapus lampiran dokumen. - Memperbarui tampilan detail-jaminan untuk menampilkan dan mengelola lampiran dokumen.
68 lines
1.7 KiB
PHP
68 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Models;
|
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class LampiranDokumen extends Base
|
|
{
|
|
protected $table = 'lampiran_dokumen';
|
|
|
|
protected $fillable = ['permohonan_id', 'nama_file', 'path_file', 'keterangan'];
|
|
|
|
public function permohonan()
|
|
{
|
|
return $this->belongsTo(Permohonan::class);
|
|
}
|
|
|
|
/**
|
|
* Upload lampiran dokumen for penilai or administrator
|
|
*
|
|
* @param int $permohonanId
|
|
* @param array $fileData
|
|
* @return LampiranDokumen|null
|
|
*/
|
|
public static function uploadLampiran($fileData)
|
|
{
|
|
$user = Auth::user();
|
|
|
|
if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) {
|
|
$file = $fileData['file'];
|
|
$keterangan = $fileData['keterangan'] ?? null;
|
|
|
|
$fileName = $fileData['nama_file'] ?? time() . '_' . $file->getClientOriginalName();
|
|
$filePath = $file->storeAs('lampiran_dokumen', $fileName, 'public');
|
|
|
|
return self::create([
|
|
'permohonan_id' => $fileData['permohonan_id'] ?? null,
|
|
'nama_file' => $fileName,
|
|
'path_file' => $filePath,
|
|
'keterangan' => $keterangan,
|
|
]);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Delete lampiran dokumen
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function deleteLampiran()
|
|
{
|
|
$user = Auth::user();
|
|
|
|
if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) {
|
|
// Delete the file from storage
|
|
Storage::disk('public')->delete($this->path_file);
|
|
|
|
// Delete the database record
|
|
return $this->delete();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|