feat: penanganan pelanggaran (handling system)
- Migration: handling_status, handled_at, handled_by ke violations - Migration: tabel violation_handlings, handling_participants - Model: ViolationHandling, HandlingParticipant + relasi - Routes: storeHandling, resolveHandling, destroyHandling, calendar data - ViolationController: CRUD penanganan + filter status handling - DashboardController: data handling stats + calendar endpoint - Dashboard view: kalender pelanggaran interaktif (Alpine.js) - Violations index: filter status penanganan + kolom status - Violations show: stat card penanganan + timeline + modal tambah - Menambahkan handling_status filter di index
This commit is contained in:
@@ -16,7 +16,7 @@ class Violation extends Model
|
||||
'description', 'points', 'sanction', 'location',
|
||||
'violation_date', 'violation_time',
|
||||
'is_verified', 'verified_by', 'verified_at',
|
||||
'notes',
|
||||
'notes', 'handling_status', 'handled_at', 'handled_by',
|
||||
];
|
||||
|
||||
protected function casts(): array
|
||||
@@ -54,4 +54,29 @@ class Violation extends Model
|
||||
{
|
||||
return $this->hasMany(ViolationEvidence::class);
|
||||
}
|
||||
|
||||
public function handlings(): HasMany
|
||||
{
|
||||
return $this->hasMany(ViolationHandling::class);
|
||||
}
|
||||
|
||||
public function handler(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'handled_by');
|
||||
}
|
||||
|
||||
public function isUnhandled(): bool
|
||||
{
|
||||
return $this->handling_status === 'unhandled';
|
||||
}
|
||||
|
||||
public function isInProgress(): bool
|
||||
{
|
||||
return $this->handling_status === 'in_progress';
|
||||
}
|
||||
|
||||
public function isResolved(): bool
|
||||
{
|
||||
return $this->handling_status === 'resolved';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user