value); } public static function pendingStates(): array { return [ self::Created, self::WaitingForTechnical, self::WaitingForAdministrative, self::AcceptedByTechnical, self::AcceptedByAdministrative, ]; } public static function successStates(): array { return [self::Approved]; } public static function failedStates(): array { return [ self::Rejected, self::Cancelled, ]; } public static function filterByStatus(string $filter): array { return match ($filter) { "pending" => VacationRequestState::pendingStates(), "success" => VacationRequestState::successStates(), "failed" => VacationRequestState::failedStates(), default => VacationRequestState::cases(), }; } }