using System;
using System.Collections.Generic;

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Resultado da avaliação de fluxo e logística operacional do evento (circulação, gargalos, acesso de serviço).
    /// </summary>
    [Serializable]
    public class EventFlowEvaluationResult
    {
        /// <summary>Status geral do fluxo.</summary>
        public FlowStatus OverallFlowStatus { get; set; }

        /// <summary>Score de risco de congestionamento/gargalo (0-100; maior = pior).</summary>
        public int CongestionRiskScore { get; set; }

        /// <summary>Score de adequação de acesso de serviço (0-100; maior = melhor).</summary>
        public int ServiceAccessScore { get; set; }

        /// <summary>Avisos de circulação (zonas críticas, excesso de itens, etc.).</summary>
        public List<string> CirculationWarnings { get; set; } = new List<string>();

        /// <summary>Resumos de risco por zona/slot.</summary>
        public List<string> ZoneRiskSummaries { get; set; } = new List<string>();

        /// <summary>Recomendações operacionais para melhorar fluxo e logística.</summary>
        public List<string> Recommendations { get; set; } = new List<string>();
    }

    /// <summary>Status do fluxo operacional do evento.</summary>
    [Serializable]
    public enum FlowStatus
    {
        Unknown = 0,
        Good = 1,
        Warning = 2,
        Critical = 3
    }
}
