using System;
using System.Collections.Generic;
using EventsAppQuest.Web.Core;
using EventsAppQuest.Web.Producer.Core;

namespace EventsAppQuest.Web.Producer.Domain
{
    /// <summary>
    /// Pedido recebido pelo produtor/prestador: handoff do hotel com escopo operacional do evento.
    /// Origem conceptual: proposta, sessão Quest, oportunidade (IDs e rótulos; sem acoplamento ao CRM).
    /// </summary>
    [Serializable]
    public class ProducerOrder
    {
        public string OrderId;
        public string ProposalId;
        public string SessionId;
        public string OpportunityId;

        public string EventCategory;
        public string ThemeLabel;
        public string SelectedCommercialPackageLabel;
        public string RecommendedProposalId;
        public string SelectedProposalId;

        /// <summary>Itens do showroom necessários (ids ou nomes).</summary>
        public List<string> RequiredShowroomItems = new List<string>();
        /// <summary>Hotspots/destaques relevantes da sessão Quest.</summary>
        public List<string> KeyHotspots = new List<string>();
        /// <summary>Notas deixadas pelo comercial (handoff).</summary>
        public List<string> KeyNotesFromSales = new List<string>();

        public FollowUpPriority FollowUpPriority;
        public ProducerOrderStatus ProducerOrderStatus;
        public DateTime CreatedAt;

        // Handoff formal
        public string SourceLeadId;
        public string OrderSummary;
        public ProducerAcceptanceStatus AcceptanceStatus;
        public bool RequiresClarification;
        public string ClarificationReason;
        public string SalesHandoffNotes;
        public DateTime? GeneratedAt;
        public DateTime? AcceptedAt;
        public DateTime? RejectedAt;
        public DateTime? LastUpdatedAt;
    }
}
