using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FrameworkDAL.DTO.EIPConversation { public class EIPFlowExecutionResultDTO { public bool IsCompleted { get; set; } public string? FlowCode { get; set; } // 🔥 ADD public string? CurrentStepCode { get; set; } // 🔥 ADD public string? NextStepCode { get; set; } public string? ResponseMessage { get; set; } /// Propagated from EIPFlowStepDTO.MessageKey — EIPResponseEngine uses this to /// resolve a localized MEIPMESSAGETEMPLATE row, falling back to ResponseMessage if unset /// or no template matches. public string? MessageKey { get; set; } public string? CapabilityCode { get; set; } public string? ActionCode { get; set; } public List Buttons { get; set; } = new(); // ✅ FIX NULL public string? MediaUrl { get; set; } // ✅ nullable /// /// Populated when a CALL_API or PRESENT step has ResponseFormat configured. /// Channel handlers use this to render TABLE, CARD, or LIST; text channels /// call EIPTextFormatter.FormatAsText() to produce a plain-text fallback. /// public EIPStructuredDataDTO? StructuredData { get; set; } /// QR code data string — channels encode this as a displayable QR image. public string? QrCodeData { get; set; } /// /// Input type hint for the next expected user input: "text"|"number"|"date"|"email"| /// "phone"|"qr_scan"|"file"|"rating"|"location". AppChat renders the appropriate widget. /// public string? InputHint { get; set; } /// Max star value when InputHint="rating". public int? RatingMax { get; set; } /// When true, the channel should prompt the user to share their location. public bool RequestLocation { get; set; } /// SSML or plain-text TTS override for Voice channel responses. public string? VoiceHint { get; set; } } }