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; }
}
}