namespace Mercados.Infrastructure.DataFetchers
{
    /// 
    /// Clase estática que proporciona un mapeo entre los tickers de acciones y sus nombres descriptivos.
    /// 
    public static class TickerNameMapping
    {
        /// 
        /// Diccionario privado que almacena los tickers como claves y los nombres de las empresas como valores.
        /// La comparación de claves no distingue entre mayúsculas y minúsculas.
        /// 
        private static readonly Dictionary Names = new(StringComparer.OrdinalIgnoreCase)
        {
          // USA
            { "SPY", "S&P 500 ETF" },
            { "AAPL", "Apple Inc." },
            { "AMZN", "Amazon.com, Inc." },
            { "NVDA", "NVIDIA Corp." },
            { "AMD", "Advanced Micro Devices" },
            { "KO", "The Coca-Cola Company" },
            { "BRK-B", "Berkshire Hathaway Inc." },
            { "GLD", "SPDR Gold Shares" },
            { "XLF", "Financial Select Sector SPDR" },
            { "XLI", "Industrial Select Sector SPDR" },
            { "XLE", "Energy Select Sector SPDR" },
            { "XLK", "Technology Select Sector SPDR" },
            { "MELI", "MercadoLibre, Inc." },
            { "MSFT", "Microsoft Corp." },
            { "GLOB", "Globant" },
            
            // ADRs Argentinos que cotizan en EEUU
            { "YPF", "YPF S.A. (ADR)" },
            { "GGAL", "Grupo Financiero Galicia (ADR)" },
            { "BMA", "Banco Macro (ADR)" },
            { "LOMA", "Loma Negra (ADR)" },
            { "PAM", "Pampa Energía (ADR)" },
            { "TEO", "Telecom Argentina (ADR)" },
            { "TGS", "Transportadora de Gas del Sur (ADR)" },
            { "EDN", "Edenor (ADR)" },
            { "CRESY", "Cresud (ADR)" },
            { "CEPU", "Central Puerto (ADR)" },
            { "BBAR", "BBVA Argentina (ADR)" },
            // Argentina Local
            { "^GSPC", "S&P 500 Index" }, // Lo dejamos por si Yahoo lo devuelve
            { "^MERV", "S&P Merval" },
            { "GGAL.BA", "Grupo Financiero Galicia" },
            { "YPFD.BA", "YPF S.A." },
            { "PAMP.BA", "Pampa Energía" },
            { "BMA.BA", "Banco Macro" },
            { "COME.BA", "Sociedad Comercial del Plata" },
            { "TECO2.BA", "Telecom Argentina" },
            { "EDN.BA", "Edenor" },
            { "CRES.BA", "Cresud" },
            { "TXAR.BA", "Ternium Argentina" },
            { "MIRG.BA", "Mirgor" },
            { "CEPU.BA", "Central Puerto" },
            { "LOMA.BA", "Loma Negra" },
            { "VALO.BA", "Banco de Valores" },
            { "MELI.BA", "MercadoLibre (CEDEAR)" }, // Aclaramos que es el CEDEAR
        };
        /// 
        /// Obtiene el nombre descriptivo asociado a un ticker.
        /// 
        /// El ticker de la acción (ej. "AAPL").
        /// El nombre completo de la empresa si se encuentra en el mapeo; de lo contrario, null.
        public static string? GetName(string ticker)
        {
            // Devuelve el nombre si existe, o null si no se encuentra la clave.
            return Names.TryGetValue(ticker, out var name) ? name : $"Ticker no reconocido: {ticker}";
        }
    }
}