fix: prevent flood of absence expiry notifcation emails

Signed-off-by: miguel456 <me@nogueira.codes>
This commit is contained in:
Miguel Nogueira 2022-11-12 22:09:42 +00:00
parent 35d112a5ca
commit 4a2061fbf9
No known key found for this signature in database
GPG Key ID: 3C6A7E29AF26D370

View File

@ -60,7 +60,9 @@ class AbsenceService
User::whereHas('roles', function ($q) { User::whereHas('roles', function ($q) {
$q->where('name', 'admin'); $q->where('name', 'admin');
})->get()->each(function ($user, $key) use ($absence) { })->get()->each(function ($user, $key) use ($absence) {
$user->notify((new NewAbsenceRequest($absence))); if ($user->isNot($absence->requester->id)) {
$user->notify((new NewAbsenceRequest($absence)));
}
}); });
@ -89,8 +91,7 @@ class AbsenceService
'new_status' => 'APPROVED' 'new_status' => 'APPROVED'
]); ]);
return $absence $absence->setApproved()
->setApproved()
->requester->notify(new AbsenceRequestApproved($absence)); ->requester->notify(new AbsenceRequestApproved($absence));
} }
@ -110,8 +111,7 @@ class AbsenceService
'new_status' => 'DECLINED' 'new_status' => 'DECLINED'
]); ]);
return $absence $absence->setDeclined()
->setDeclined()
->requester->notify(new AbsenceRequestDeclined($absence)); ->requester->notify(new AbsenceRequestDeclined($absence));
} }
@ -130,8 +130,7 @@ class AbsenceService
'new_status' => 'CANCELLED' 'new_status' => 'CANCELLED'
]); ]);
return $absence $absence->setCancelled()
->setCancelled()
->requester->notify(new AbsenceRequestCancelled($absence)); ->requester->notify(new AbsenceRequestCancelled($absence));
} }
@ -148,8 +147,7 @@ class AbsenceService
'new_status' => 'ENDED' 'new_status' => 'ENDED'
]); ]);
return $absence $absence->setEnded()
->setEnded()
->requester->notify(new AbsenceRequestEnded($absence)); ->requester->notify(new AbsenceRequestEnded($absence));
} }
@ -174,7 +172,7 @@ class AbsenceService
{ {
foreach (Absence::all() as $absence) foreach (Absence::all() as $absence)
{ {
if (!Carbon::parse($absence->predicted_end)->isFuture() && $absence->status !== 'ENDED') { if (!Carbon::parse($absence->predicted_end)->isFuture() && $absence->isActionable()) {
$this->endAbsence($absence); $this->endAbsence($absence);
} }
} }