<?php

namespace goodboyalex\php_components_pack\traits\ActionState;

use Closure;
use goodboyalex\php_components_pack\enums\MessageType;
use goodboyalex\php_components_pack\models\ActionStateMessageModel;

/**
 * Часть кода класса ActionState, отвечающая за статичные методы и константы.
 *
 * @author Александр Бабаев
 * @package php_components_pack
 * @version 1.0
 * @since 1.0.13
 */
trait ActionStateStaticTrait
{
    /**
     * При выводе GetStringMessages выводит только ошибки.
     *
     * @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
     */
    public static function GET_STRING_ERROR_ONLY (): Closure
    {
        return fn (ActionStateMessageModel $message)
            => $message->MessageType === MessageType::Error;
    }

    /**
     * При выводе GetStringMessages выводит ошибки и предупреждения.
     *
     * @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
     */
    public static function GET_STRING_ERROR_AND_WARNING (): Closure
    {
        return fn (ActionStateMessageModel $message)
            => $message->MessageType === MessageType::Error
            || $message->MessageType === MessageType::Warning;
    }

    /**
     * При выводе GetStringMessages выводит все сообщения.
     *
     * @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
     */
    public static function GET_STRING_ALL (): Closure
    {
        return fn (ActionStateMessageModel $message) => true;
    }
}