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

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Pacote comercial: tier, faixa de orçamento-alvo, itens incluídos, temas sugeridos e notas de upsell/downsell.
    /// </summary>
    [Serializable]
    public class ProposalCommercialPackage
    {
        /// <summary>Identificador único.</summary>
        public string Id { get; set; }

        /// <summary>Nome do pacote (ex.: Casamento Essential).</summary>
        public string Name { get; set; }

        /// <summary>Tier comercial (Essential, Standard, Premium, Luxury).</summary>
        public CommercialPackageTier Tier { get; set; }

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

        /// <summary>Ids dos itens do showroom incluídos neste pacote.</summary>
        public List<string> IncludedShowroomItemIds { get; set; } = new List<string>();

        /// <summary>Ids de temas visuais sugeridos para este pacote.</summary>
        public List<string> SuggestedThemeIds { get; set; } = new List<string>();

        /// <summary>Orçamento-alvo mínimo sugerido (valor em reais).</summary>
        public float TargetBudgetRangeMin { get; set; }

        /// <summary>Orçamento-alvo máximo sugerido (valor em reais).</summary>
        public float TargetBudgetRangeMax { get; set; }

        /// <summary>Notas para upsell (sugestões de upgrade).</summary>
        public string UpsellNotes { get; set; }

        /// <summary>Notas para downsell (sugestões de redução/encaixe).</summary>
        public string DownsellNotes { get; set; }

        /// <summary>Ordem de exibição (menor = antes).</summary>
        public int DisplayOrder { get; set; }

        /// <summary>Id do template de evento ao qual o pacote se aplica (opcional).</summary>
        public string EventTemplateId { get; set; }
    }
}
