fix: null check budget, cegah duplikasi approval/vote, tambah related_type di votes

This commit is contained in:
2026-04-05 23:22:15 +07:00
parent 4106eae5cf
commit db7c19b249
5 changed files with 54 additions and 26 deletions
+23 -17
View File
@@ -47,23 +47,29 @@ class ActivityObserver
// Threshold budget
$budget = $activity->budget;
if ($budget >= 500_000 && $budget <= 2_000_000) {
Approval::create([
'model_type' => Activity::class,
'model_id' => $activity->id,
'required_approvals' => 1,
'status' => 'pending',
]);
} elseif ($budget > 2_000_000) {
Vote::create([
'title' => "Persetujuan Budget Kegiatan: {$activity->title}",
'description' => "Budget kegiatan senilai Rp " . number_format($budget, 0, ',', '.') . " memerlukan persetujuan voting.",
'type' => 'finance',
'related_id' => $activity->id,
'status' => 'open',
'deadline' => now()->addDays(3),
'created_by' => Auth::id() ?? $activity->created_by,
]);
if ($budget !== null && $budget >= 500_000 && $budget <= 2_000_000) {
Approval::firstOrCreate(
['model_type' => Activity::class, 'model_id' => $activity->id],
['required_approvals' => 1, 'status' => 'pending']
);
} elseif ($budget !== null && $budget > 2_000_000) {
$exists = Vote::where('related_type', Activity::class)
->where('related_id', $activity->id)
->where('type', 'finance')
->exists();
if (! $exists) {
Vote::create([
'title' => "Persetujuan Budget Kegiatan: {$activity->title}",
'description' => "Budget kegiatan senilai Rp " . number_format($budget, 0, ',', '.') . " memerlukan persetujuan voting.",
'type' => 'finance',
'related_id' => $activity->id,
'related_type' => Activity::class,
'status' => 'open',
'deadline' => now()->addDays(3),
'created_by' => Auth::id() ?? $activity->created_by,
]);
}
}
}