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

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Regra de compatibilidade entre tipo de item do showroom e posicionamento (zona/slot/ancoragem).
    /// Base para composição lógica da proposta e futura montagem coerente em MR.
    /// </summary>
    [Serializable]
    public class ShowroomPlacementRule
    {
        /// <summary>Tipo de item ao qual a regra se aplica.</summary>
        public ShowroomItemType ShowroomItemType { get; set; }

        /// <summary>Zonas permitidas (vazio ou null = todas).</summary>
        public List<PlacementZoneType> AllowedPlacementZones { get; set; }

        /// <summary>Tipos de ancoragem permitidos (vazio ou null = todos).</summary>
        public List<SpatialAnchorType> AllowedAnchorTypes { get; set; }

        /// <summary>Zona preferida (opcional).</summary>
        public PlacementZoneType? PreferredZone { get; set; }

        /// <summary>Nomes de slots preferidos (ordem de prioridade).</summary>
        public List<string> PreferredSlotNames { get; set; }

        /// <summary>Máximo de itens deste tipo por slot (0 = sem limite).</summary>
        public int MaxItemsPerSlot { get; set; }
    }
}
