using System;
using System.Collections.Generic;

namespace EventsAppQuest.Web.Domain
{
    /// <summary>
    /// Visão consolidada de um ciclo completo: Quest → Hotel → Produtor → Aceite Final (por pedido/evento).
    /// Apenas agregador; não duplica regras dos módulos existentes.
    /// </summary>
    [Serializable]
    public class EventCycleDashboardState
    {
        /// <summary>Identificador do ciclo (ex.: ProducerOrderId).</summary>
        public string CycleId;
        public string LeadId;
        public string OpportunityId;
        public string ProposalId;
        public string SessionId;
        public string ProducerOrderId;

        /// <summary>Status do aceite final do hotel (rótulo ou enum name).</summary>
        public string FinalAcceptanceStatus;
        public string CommercialStageLabel;
        public string OperationalStageLabel;
        public string OverallCycleStatus;
        public DateTime? LastUpdatedAt;

        public bool IsQuestSessionDone;
        public bool IsHandoffGenerated;
        public bool IsProducerAccepted;
        public bool IsScopeConfirmed;
        public bool IsPreparationConfirmed;
        public bool IsExecutionStarted;
        public bool IsExecutionCompleted;
        public bool IsFinalAcceptanceDone;

        /// <summary>Seções do dashboard (Comercial, Sessão Quest, Handoff, Produtor, Execução, Aceite Final, Status Geral).</summary>
        public List<EventCycleDashboardSection> Sections = new List<EventCycleDashboardSection>();
    }
}
