using FacebookService.Domain.SeedWork;

namespace FacebookService.Domain.AggregatesModel.ChatbotAggregate;

/// <summary>
/// EN: Flow node type enumeration.
/// VI: Enumeration loại node trong flow.
/// </summary>
public class NodeType : Enumeration
{
    /// <summary>
    /// EN: Start node - entry point of flow.
    /// VI: Node bắt đầu - điểm vào của flow.
    /// </summary>
    public static NodeType Start = new(1, nameof(Start));

    /// <summary>
    /// EN: Message node - sends a text/media message.
    /// VI: Node tin nhắn - gửi tin nhắn text/media.
    /// </summary>
    public static NodeType Message = new(2, nameof(Message));

    /// <summary>
    /// EN: Question node - sends message with quick replies.
    /// VI: Node câu hỏi - gửi tin nhắn với quick replies.
    /// </summary>
    public static NodeType Question = new(3, nameof(Question));

    /// <summary>
    /// EN: Condition node - branching based on user input.
    /// VI: Node điều kiện - phân nhánh dựa trên input người dùng.
    /// </summary>
    public static NodeType Condition = new(4, nameof(Condition));

    /// <summary>
    /// EN: Action node - performs an action (tag user, call API, etc.).
    /// VI: Node hành động - thực hiện hành động (tag user, gọi API, v.v.).
    /// </summary>
    public static NodeType Action = new(5, nameof(Action));

    /// <summary>
    /// EN: End node - terminates the flow.
    /// VI: Node kết thúc - kết thúc flow.
    /// </summary>
    public static NodeType End = new(6, nameof(End));

    public NodeType(int id, string name) : base(id, name)
    {
    }
}
