using System;
using System.Collections.Generic;
using EventsAppQuest.Domain.Enums;

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Plano de apresentação em realidade mista (Quest 3): mapeamento do que será mostrado na camada imersiva.
    /// Ponte entre o sistema comercial atual e a futura experiência no headset.
    /// </summary>
    [Serializable]
    public class ProposalMRPresentationPlan
    {
        /// <summary>Id da proposta a que este plano se refere.</summary>
        public string ProposalId { get; set; }

        /// <summary>Título da apresentação (ex.: "Casamento — Proposta Premium").</summary>
        public string PresentationTitle { get; set; }

        /// <summary>Modo de experiência recomendado para o Quest 3.</summary>
        public MRPresentationTargetMode TargetExperienceMode { get; set; }

        /// <summary>Ids dos passos do roteiro guiado incluídos na sequência MR (ordem).</summary>
        public List<string> GuidedSequenceStepIds { get; set; } = new List<string>();

        /// <summary>Ids dos hotspots visuais a exibir no MR.</summary>
        public List<string> HotspotIds { get; set; } = new List<string>();

        /// <summary>Ids dos estados de cena a exibir no MR (evolução ao longo do evento).</summary>
        public List<string> SceneStateIds { get; set; } = new List<string>();

        /// <summary>Zonas prioritárias para foco na apresentação (ex.: Entrance, StageArea, DiningArea).</summary>
        public List<string> PriorityZones { get; set; } = new List<string>();

        /// <summary>Momentos-chave de venda a destacar (ex.: "Entrada impactante", "Mesa de honra").</summary>
        public List<string> KeySellingMoments { get; set; } = new List<string>();

        /// <summary>Duração recomendada da sessão de apresentação no Quest (minutos).</summary>
        public int RecommendedSessionDurationMinutes { get; set; }

        /// <summary>Objetivo executivo da apresentação (ex.: "Fechar proposta recomendada").</summary>
        public string ExecutivePresentationGoal { get; set; }

        /// <summary>Se true, o plano está completo o suficiente para mapeamento MR (roteiro, hotspots e estados coerentes).</summary>
        public bool ReadyForMRMapping { get; set; }
    }
}
