Files
lpj/app/Models/LampiranDokumen.php
Daeng Deni Mardaeni 2b5556410d 🔧 refactor(laporan): kontrol akses role, optimasi query, dan perbaikan UI
- Tambah role `pemohon-ao` & `pemohon-eo` untuk upload lampiran di LampiranDokumen.php
- Implementasi kontrol akses role di lampiran-dokumen.blade.php & laporan/index.blade.php (logika khusus nilai_liquidasi)
- Modifikasi query di LaporanController.php: hapus filter approval_eo_at & optimasi kondisi WHERE
- Perbaikan formatting query dengan indentasi lebih rapi & maintainable
- Standardisasi urutan class CSS di beberapa Blade (activity/index, penilaian/otorisator/index-sla & index)
- Pisahkan logika generateLaporanButton jadi function terpisah di laporan/index.blade.php
- Perbaikan tampilan tombol laporan berbasis role + cleanup baris kosong & indentasi
- Konsistensi UI/UX: responsive design lebih baik, interface clean & styling konsisten dengan Tailwind
- Tingkatkan security & maintainability: granular role access, query lebih efisien, code lebih terstruktur
2025-09-19 09:10:06 +07:00

72 lines
1.9 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','jenis_lampiran_id'];
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->hasAnyRole(['penilai', 'administrator', 'Penilai', 'admin','surveyor','pemohon-ao','pemohon-eo'])) {
$file = $fileData['file'];
$fileName = $fileData['nama_file'] ?? time() . '_' . $file->getClientOriginalName();
$filePath = $file->storeAs('lampiran_dokumen', $fileName, 'public');
return self::create([
'permohonan_id' => $fileData['permohonan_id'] ?? null,
'jenis_lampiran_id' => $fileData['jenis_lampiran_id'] ?? null,
'nama_file' => $fileName,
'path_file' => $filePath,
'keterangan' => $fileData['keterangan'] ?? null,
]);
}
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;
}
public function jenisLampiran()
{
return $this->belongsTo(JenisLampiran::class);
}
}