using System;

namespace EventsAppQuest.Core
{
    /// <summary>
    /// Resultado comercial consolidado da sessão Quest (para follow-up e futura integração web/CRM).
    /// Preenchido pelo QuestCommercialOutcomeController a partir do closing e da proposta.
    /// </summary>
    public class QuestCommercialOutcome
    {
        /// <summary>Identificador da sessão (ex.: único por apresentação).</summary>
        public string SessionId { get; set; }

        /// <summary>Id da proposta recomendada (recomendação).</summary>
        public string RecommendedProposalId { get; set; }

        /// <summary>Id da proposta escolhida/seleccionada pelo utilizador (pode igualar RecommendedProposalId).</summary>
        public string SelectedProposalId { get; set; }

        /// <summary>Se true, o utilizador confirmou o CTA principal.</summary>
        public bool ClosingCTAChosen { get; set; }

        /// <summary>Se true, o utilizador confirmou o CTA secundário.</summary>
        public bool SecondaryCTAChosen { get; set; }

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

        /// <summary>Próxima ação sugerida (ex.: da decisão ou recomendação).</summary>
        public string SuggestedNextAction { get; set; }

        /// <summary>Nível de confiança (ex.: "Alta", "Média", ou percentagem).</summary>
        public string ConfidenceLevel { get; set; }

        /// <summary>Resumo curto do resultado (uma ou duas frases).</summary>
        public string OutcomeSummary { get; set; }

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

        /// <summary>Notas livres para continuidade comercial.</summary>
        public string Notes { get; set; }

        /// <summary>Data/hora de criação do resultado (UTC ou local).</summary>
        public DateTime Timestamp { get; set; }
    }
}
