using EventsAppQuest.Web.Producer.Core;
using EventsAppQuest.Web.Producer.Domain;

namespace EventsAppQuest.Web.Producer.Application
{
    /// <summary>
    /// Indicadores de estado do escopo: versão actual, revisão em curso, aprovações, confirmado, pronto para preparação.
    /// </summary>
    public static class ScopeIndicatorHelper
    {
        public static string GetScopeStatusLabel(ProducerScopeConfirmationState state, ProducerOrderScopeRevision activeRevision)
        {
            if (state == null) return "Escopo inicial";
            switch (state.Status)
            {
                case ProducerScopeConfirmationStatus.Draft:
                    return "Escopo inicial";
                case ProducerScopeConfirmationStatus.PendingHotelApproval:
                    return "Aguardando aprovação do hotel";
                case ProducerScopeConfirmationStatus.PendingProducerApproval:
                    return "Aguardando aprovação do produtor";
                case ProducerScopeConfirmationStatus.Confirmed:
                    return activeRevision != null ? "Escopo confirmado" : "Escopo confirmado";
                case ProducerScopeConfirmationStatus.Rejected:
                    return "Revisão rejeitada";
                case ProducerScopeConfirmationStatus.NeedsRevision:
                    return "Escopo em revisão";
                default:
                    return state.Status.ToString();
            }
        }

        /// <summary>Rótulo para "pronto para preparação" quando escopo confirmado e pedido aceite.</summary>
        public static string GetReadyForPreparationLabel(ProducerScopeConfirmationState state, bool orderAccepted)
        {
            if (state == null || !orderAccepted) return null;
            if (state.Status == ProducerScopeConfirmationStatus.Confirmed)
                return "Pronto para preparação";
            return null;
        }
    }
}
