using FrameworkDAL.DTO.EIPConversation; using System; using System.Collections.Generic; namespace FrameworkDAL.DTO.MessageHub.MessageHubGenerator { public class MessageHubDTO { // ------------------------------- // Engine Control // ------------------------------- public int ReferenceId { get; set; } public int ActionType { get; set; } public int? TemplateId { get; set; } public string? TemplateName { get; set; } public string? LanguageCode { get; set; } public bool IsTemplate { get; set; } = false; // ------------------------------- // Recipient & Message // ------------------------------- public string? To { get => Recipient; set => Recipient = value; } public string? Recipient { get; set; } public Dictionary? Parameters { get; set; } public Dictionary? Payload { get; set; } public string? Subject { get; set; } public string? MessageText { get; set; } public List? Buttons { get; set; } // ------------------------------- // Audit & DB Info // ------------------------------- public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } public int TenantId { get; set; } public int Status { get; set; } = 1; public short SortOrder { get; set; } = 9999; // ✅ New optional fields for Telegram public string TextMessage { get; set; } // fallback text message public string PayloadJson { get; set; } // raw JSON payload for Telegram public int ActionId { get; set; } // logging/tracking if needed public string? TemplateText { get; set; } // ── DirectAction button support ─────────────────────────────── /// FK to MDIRECTACTION.DIRECTACTIONID. -1 = no action buttons (one-way). public int DirectActionId { get; set; } = -1; /// Context entity PK embedded in button payloads. public int ContextId { get; set; } // ------------------------------- // Helpers // ------------------------------- public void DefaultEmptyParametersToNone() { if (Parameters == null) Parameters = new Dictionary(); foreach (var key in Parameters.Keys) { if (Parameters[key] == null || string.IsNullOrWhiteSpace(Parameters[key]?.ToString())) Parameters[key] = "NONE"; } } public string GetSafeMessageText() => string.IsNullOrWhiteSpace(MessageText) ? "NONE" : MessageText!; } }