Files
hr/app/Observers/VacationObserver.php
2026-07-30 17:24:40 +05:00

36 lines
789 B
PHP

<?php
declare(strict_types=1);
namespace App\Observers;
use App\Enums\ApprovalStatus;
use App\Models\Vacation;
use App\Services\Leave\LeaveDaysCalculator;
class VacationObserver
{
public function __construct(
private readonly LeaveDaysCalculator $leaveDaysCalculator,
) {}
public function creating(Vacation $vacation): void
{
if ($vacation->status === null) {
$vacation->status = ApprovalStatus::Pending;
}
}
public function saving(Vacation $vacation): void
{
if ($vacation->start_date === null || $vacation->end_date === null) {
return;
}
$vacation->days = $this->leaveDaysCalculator->between(
$vacation->start_date,
$vacation->end_date,
);
}
}