using System;
using System.Collections.Generic;

namespace EventsAppQuest.Domain.Models
{
    /// <summary>
    /// Resultado da avaliação de cronograma operacional e sequência de montagem do evento.
    /// </summary>
    [Serializable]
    public class EventSetupTimelineEvaluationResult
    {
        /// <summary>Tempo total estimado de montagem em minutos.</summary>
        public int EstimatedTotalSetupMinutes { get; set; }

        /// <summary>Passos críticos (itens que exigem montagem antecipada ou alta prioridade).</summary>
        public List<string> CriticalSteps { get; set; } = new List<string>();

        /// <summary>Avisos de montagem (excesso de críticos, tempo alto, etc.).</summary>
        public List<string> SetupWarnings { get; set; } = new List<string>();

        /// <summary>Problemas de dependência (tipos exigidos não atendidos na proposta).</summary>
        public List<string> DependencyIssues { get; set; } = new List<string>();

        /// <summary>Status de prontidão para execução.</summary>
        public ExecutionReadinessStatus ExecutionReadinessStatus { get; set; }

        /// <summary>Recomendações para viabilidade e sequência de montagem.</summary>
        public List<string> Recommendations { get; set; } = new List<string>();
    }

    /// <summary>Status de prontidão operacional para execução do evento.</summary>
    [Serializable]
    public enum ExecutionReadinessStatus
    {
        Unknown = 0,
        Ready = 1,
        Warning = 2,
        NotReady = 3
    }
}
