using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace FrameworkDAL.DTO.MessageHubService.UpdateHandleStatus { public class TemplateApprovalDTO { [JsonPropertyName("ApprovalStatus")] public ApprovalAction ApprovalStatus { get; set; } [JsonPropertyName("TemplateId")] public int TemplateID { get; set; } [JsonPropertyName("ClientId")] public string? ClientId { get; set; } [JsonPropertyName("Status")] public int Status { get; set; } [JsonPropertyName("UserId")] public string? UserId { get; set; } [JsonPropertyName("Remarks")] public string? Remarks { get; set; } [JsonPropertyName("Choice")] public string? Choice { get; set; } [JsonPropertyName("RawPayload")] public string? RawPayload { get; set; } [JsonPropertyName("TicketNumber")] public string? TicketNumber { get; set; } [JsonPropertyName("Platform")] public string? Platform { get; set; } = "Text"; [JsonPropertyName("MetaData")] public Dictionary? MetaData { get; set; } public string FlowCode { get; set; } public int TenantId { get; set; } public string Recipient { get; set; } /// Business record ID carried in the button payload: ACTION_TemplateId_ObjectId public int ObjectId { get; set; } // Helper Method public MessageDTO? GetMetaMessage() { if (MetaData != null && MetaData.TryGetValue("Message", out var messageObj)) { try { var messageJson = System.Text.Json.JsonSerializer.Serialize(messageObj); return System.Text.Json.JsonSerializer.Deserialize(messageJson); } catch { return null; } } return null; } } public enum ApprovalAction { Accept = 0, Reject = 1, Forward = 2 } public class MessageDTO { [JsonPropertyName("Mode")] public string Mode { get; set; } = string.Empty; [JsonPropertyName("Recipient")] public string Recipient { get; set; } = string.Empty; [JsonPropertyName("Message")] public string Message { get; set; } = string.Empty; } }