using System;

namespace EventsAppQuest.Core
{
    /// <summary>
    /// Payload estruturado exportável da sessão Quest para futura integração web/backend/CRM.
    /// Gerado pelo QuestSessionExportController a partir do outcome, closing, recomendação e proposta.
    /// Mantido em memória; sem persistência real nesta etapa.
    /// </summary>
    public class QuestSessionExportPayload
    {
        /// <summary>Identificador da sessão (ex.: igual ao do QuestCommercialOutcome).</summary>
        public string SessionId { get; set; }

        /// <summary>Identificador do projeto (quando disponível via AppSession).</summary>
        public string ProjectId { get; set; }

        /// <summary>Id da proposta recomendada.</summary>
        public string RecommendedProposalId { get; set; }

        /// <summary>Id da proposta escolhida/seleccionada.</summary>
        public string SelectedProposalId { get; set; }

        /// <summary>Estado final da decisão comercial.</summary>
        public QuestCommercialDecisionState FinalDecisionState { get; set; }

        /// <summary>CTA confirmado (ex.: "PrimaryCTA", "SecondaryCTA").</summary>
        public string ConfirmedCTA { get; set; }

        /// <summary>Próxima ação sugerida.</summary>
        public string SuggestedNextAction { get; set; }

        /// <summary>Prioridade de follow-up (0 = não definida; maior = mais urgente).</summary>
        public int FollowUpPriority { get; set; }

        /// <summary>Resumo curto do resultado comercial.</summary>
        public string OutcomeSummary { get; set; }

        /// <summary>Resumo do fechamento (headline ou texto do closing).</summary>
        public string ClosingSummary { get; set; }

        /// <summary>Estatísticas de interação da sessão.</summary>
        public QuestSessionInteractionStats InteractionStats { get; set; }

        /// <summary>Data/hora de geração do payload (UTC).</summary>
        public DateTime Timestamp { get; set; }
    }
}
