TCommandBase

Базовая команда.

using PRTelegramBot.Models.Enums;
using System.Text.Json.Serialization;

namespace PRTelegramBot.Models.CallbackCommands
{
    /// <summary>
    /// Базовая команда.
    /// </summary>
    public class TCommandBase
    {
        #region Свойства и поля

        /// <summary>
        /// Предыдущая команда.
        /// </summary>
        [JsonPropertyName("l")]
        public int LastCommand { get; set; }

        /// <summary>
        /// Действие с предыдущим сообщением.
        /// </summary>
        [JsonPropertyName("a")]
        public int ActionWithLastMessage { get; set; }

        #endregion

        #region Методы

        /// <summary>
        /// получить команду нужного типа enum.
        /// </summary>
        /// <typeparam name="TEnum">Тип перечисления.</typeparam>
        /// <returns>Команда в enum типе.</returns>
        public TEnum GetLastCommandEnum<TEnum>() where TEnum : Enum
        {
            return (TEnum)Enum.ToObject(typeof(TEnum), LastCommand);
        }

        /// <summary>
        /// Действие с последним сообщением.
        /// </summary>
        /// <returns>Enum что сделать с последним сообщением.</returns>
        public ActionWithLastMessage GetActionWithLastMessage()
        {
            return (ActionWithLastMessage)Enum.ToObject(typeof(ActionWithLastMessage), ActionWithLastMessage);
        }

        #endregion

        #region Конструкторы

        /// <summary>
        /// Конструктор.
        /// </summary>
        public TCommandBase()
            : this(0) { }

        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="command">Команда.</param>
        public TCommandBase(int command)
        {
            LastCommand = command;
        }

        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="command">Команда.</param>
        /// <param name="action">Действие с последним сообщением.</param>
        public TCommandBase(int command, ActionWithLastMessage action)
            : this (action)
        {
            LastCommand = command;
        }

        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="action">Действие с последним сообщением.</param>
        public TCommandBase(ActionWithLastMessage action)
            : this(0)
        {
            ActionWithLastMessage = (int)action;
        }

        #endregion
    }
}

Last updated