php_components_pack/sources/traits/ActionState/ActionStateHasTrait.php
2025-07-13 12:23:08 +03:00

68 lines
2.3 KiB
PHP

<?php
namespace goodboyalex\php_components_pack\traits\ActionState;
use goodboyalex\php_components_pack\enums\MessageType;
use goodboyalex\php_components_pack\models\ActionStateMessage;
/**
* Часть кода класса ActionState, отвечающая за методы проверки на наличие сообщений.
*
* @author Александр Бабаев
* @package php_components_pack
* @version 1.0
* @since 1.0.13
*/
trait ActionStateHasTrait
{
/**
* Проверяет, есть ли информационные сообщения.
*
* @return bool Наличие сообщений
*/
public function HasInfos (): bool
{
return $this->Messages->IsExist(fn (ActionStateMessage $message)
=> $message->MessageType
== MessageType::Info);
}
/**
* Проверяет, успешно ли завершилась операция.
*
* @param bool $onlyCritical Игнорировать все некритические ошибки и предупреждения (не рекомендуется!)
*
* @return bool Успешно ли завершилась операция.
*/
public function IsSuccess (bool $onlyCritical = false): bool
{
return ($onlyCritical) ? !$this->HasErrors($onlyCritical) : !$this->HasErrors() && !$this->HasWarnings();
}
/**
* Проверяет, есть ли ошибки.
*
* @param bool $onlyCritical Учитывать только критические ошибки.
*
* @return bool Наличие ошибок.
*/
public function HasErrors (bool $onlyCritical = false): bool
{
return $this->Messages->IsExist(fn (ActionStateMessage $message): bool
=> $onlyCritical
? $message->MessageType == MessageType::Error && $message->IsCritical
: $message->MessageType == MessageType::Error);
}
/**
* Проверяет, есть ли предупреждения.
*
* @return bool Наличие предупреждений
*/
public function HasWarnings (): bool
{
return $this->Messages->IsExist(fn (ActionStateMessage $message)
=> $message->MessageType
== MessageType::Warning);
}
}