using System;
using EventsAppQuest.Web.Core;

namespace EventsAppQuest.Web.Domain
{
    /// <summary>
    /// Registo de sessão na camada Web. Campos conceituais preparados para ponte futura
    /// com a sessão Quest (export, handoff, outcome); sem integração real.
    /// Exibição útil: SessionId, recomendação, CTA, próxima ação, prioridade, artefactos e timestamp.
    /// </summary>
    [Serializable]
    public class SessionRecord
    {
        public string Id;
        public string SessionId;           // ID da sessão Quest (quando houver ponte)
        public string OpportunityId;
        public string ProposalRecordId;

        // Campos espelhados conceptualmente do resultado Quest
        public string RecommendedProposalId;
        public string SelectedProposalId;
        public WebSessionDecisionState FinalDecisionState;
        public string ConfirmedCTA;
        public string SuggestedNextAction;
        public FollowUpPriority FollowUpPriority;

        // Flags para indicar presença de artefactos da sessão Quest
        public bool HasExportPayload;
        public bool HasHandoffReport;
        public bool HasShareableSummary;
        public bool HasQualityAssessment;
        public bool HasImprovementPlan;

        /// <summary>Resumo do resultado comercial (da sessão Quest).</summary>
        public string OutcomeSummary;
        /// <summary>Rótulo de engajamento da sessão (ex.: High, Low).</summary>
        public string EngagementLabel;
        /// <summary>Rótulo de qualidade da sessão (ex.: High, Low).</summary>
        public string QualityLabel;
        /// <summary>Nível de confiança (ex.: "Alta", "80%").</summary>
        public string ConfidenceLevel;

        /// <summary>Data/hora da última sessão Quest associada (ou do registo).</summary>
        public DateTime? LastSessionTimestamp;

        public DateTime? HeldAt;
        public DateTime CreatedAt;
    }
}
