using System;
using System.Collections.Generic;

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Resultado da avaliação de capacidade operacional da proposta para o espaço (adequação ao número de convidados).
    /// </summary>
    [Serializable]
    public class SpaceCapacityEvaluationResult
    {
        /// <summary>Capacidade estimada mínima da proposta (ex.: só sentados).</summary>
        public int EstimatedCapacityMin { get; set; }

        /// <summary>Capacidade estimada máxima da proposta (ex.: misto/sentados+em pé).</summary>
        public int EstimatedCapacityMax { get; set; }

        /// <summary>Faixa recomendada em texto (ex.: "80–120 convidados").</summary>
        public string RecommendedRangeText { get; set; }

        /// <summary>Status operacional em relação ao número de convidados do briefing.</summary>
        public CapacityOperationalStatus Status { get; set; }

        /// <summary>Riscos ou avisos operacionais básicos.</summary>
        public List<string> OperationalRisks { get; set; } = new List<string>();

        /// <summary>Número de convidados informado no briefing (0 se não informado).</summary>
        public int GuestCountFromBrief { get; set; }

        /// <summary>Se true, o layout acomoda os convidados com conforto.</summary>
        public bool FitsComfortably { get; set; }

        /// <summary>Se true, o layout está no limite da capacidade para os convidados.</summary>
        public bool FitsAtLimit { get; set; }

        /// <summary>Se true, a proposta está acima da capacidade estimada para os convidados.</summary>
        public bool OverCapacity { get; set; }
    }

    /// <summary>Status da adequação operacional de capacidade.</summary>
    [Serializable]
    public enum CapacityOperationalStatus
    {
        Unknown = 0,
        Comfortable = 1,
        AtLimit = 2,
        OverCapacity = 3
    }
}
