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

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Hotspot/ponto de destaque visual da proposta (foco especial na apresentação ao cliente).
    /// </summary>
    [Serializable]
    public class ProposalVisualHotspot
    {
        /// <summary>Identificador único.</summary>
        public string Id { get; set; }

        /// <summary>Título do ponto de destaque.</summary>
        public string Title { get; set; }

        /// <summary>Descrição do hotspot.</summary>
        public string Description { get; set; }

        /// <summary>Tipos de zona relacionados (ex.: Entrance, StageArea, DiningArea).</summary>
        public List<string> RelatedZoneTypes { get; set; } = new List<string>();

        /// <summary>Ids dos itens do showroom relacionados a este hotspot.</summary>
        public List<string> RelatedShowroomItemIds { get; set; } = new List<string>();

        /// <summary>Id do passo do roteiro guiado relacionado (ProposalGuidedTourStep), se aplicável.</summary>
        public string RelatedGuidedTourStepId { get; set; }

        /// <summary>Tipo do hotspot (EntranceImpact, ThemeHighlight, etc.).</summary>
        public ProposalVisualHotspotType HotspotType { get; set; }

        /// <summary>Prioridade de destaque (1 = mais alto; maior = menor prioridade).</summary>
        public int HighlightPriority { get; set; }

        /// <summary>Score de valor comercial do destaque (0–100).</summary>
        public int SalesValueScore { get; set; }

        /// <summary>Duração sugerida de foco neste ponto em minutos.</summary>
        public int SuggestedFocusDurationMinutes { get; set; }

        /// <summary>Se true, é uma oportunidade de upsell premium.</summary>
        public bool IsPremiumUpsell { get; set; }

        /// <summary>Observações sobre o hotspot.</summary>
        public string Notes { get; set; }
    }
}
