Initial commit for combined ProjectKP
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes; // WAJIB UNTUK SOFT DELETES
|
||||
|
||||
class Penugasan extends Model
|
||||
{
|
||||
use HasFactory, SoftDeletes; // Gunakan trait SoftDeletes di sini
|
||||
|
||||
// REVISI: Paksa nama tabel menjadi 'penugasan' (tanpa s) sesuai keinginanmu
|
||||
protected $table = 'penugasan';
|
||||
|
||||
protected $fillable = [
|
||||
'nomor_surat',
|
||||
'kegiatan',
|
||||
'lokasi',
|
||||
'keterangan',
|
||||
'lampiran',
|
||||
'tanggal_mulai',
|
||||
'tanggal_selesai',
|
||||
'status', // Isinya nanti: 'proses', 'selesai', 'telah_ditinjau'
|
||||
'status_note', // Catatan progres dari pegawai
|
||||
'is_archived',
|
||||
'created_by',
|
||||
'approved_by',
|
||||
'approved_at',
|
||||
'alasan_hapus' // TAMBAHAN: Kolom untuk menyimpan alasan hapus sesuai saran KP
|
||||
];
|
||||
|
||||
// Mengatur kolom deleted_at agar dikenali sebagai instance Carbon/Tanggal
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
// 1. Relasi ke Pegawai (Pivot: penugasan_pegawai)
|
||||
public function petugas()
|
||||
{
|
||||
// Sesuaikan nama tabel pivot jika kamu juga mengubahnya nanti
|
||||
return $this->belongsToMany(User::class, 'penugasan_pegawai', 'penugasan_id', 'pegawai_id');
|
||||
}
|
||||
|
||||
public function progress()
|
||||
{
|
||||
return $this->hasMany(PenugasanProgress::class)->latest();
|
||||
}
|
||||
|
||||
// 2. Relasi ke Pembuat (Admin/Kasi)
|
||||
public function pembuat()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
// 3. Relasi ke Penyetuju (Superadmin/Kabid)
|
||||
public function penyetuju()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'approved_by');
|
||||
}
|
||||
|
||||
// 4. Accessor untuk Status Dinamis (Otomatis Terlambat jika melewati deadline)
|
||||
public function getStatusAttribute($value)
|
||||
{
|
||||
if ($value === 'proses' && !empty($this->attributes['tanggal_selesai'])) {
|
||||
if (\Carbon\Carbon::now()->startOfDay()->gt(\Carbon\Carbon::parse($this->attributes['tanggal_selesai'])->startOfDay())) {
|
||||
return 'terlambat';
|
||||
}
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user