public async Task CreateAsync(CreateIndicadorInput input)
 {
     var @indicador = Indicador.Create(input.Nombre, input.Descripcion, input.FuenteDatos, input.Abreviatura);
     await _indicadorRepository.InsertAsync(@indicador);
 }
        public MultiIndicadorDetailOutput GetCalculadorCotizaciones(CalculadorDetailInput input)
        {
            var indicadores = _indicadorRepository
                              .GetAll()
                              .OrderBy(i => i.Nombre)
                              .ToList();

            Indicador indicadorPivot = indicadores.FirstOrDefault(e => e.Id == input.IndicadorId);

            IndicadorDetailOutput cotizPivot;

            if (input.EsIndicadorDefault || indicadorPivot == null)
            {
                cotizPivot = new IndicadorDetailOutput()
                {
                    Nombre       = "Default",
                    Id           = input.IndicadorId,
                    Cotizaciones = (new[] { new CotizacionDto()
                                            {
                                                ValorCotizacion = 1,
                                                FechaHoraCotizacion = input.FechaDesde,
                                                CreationTime = DateTime.Now,
                                            } }).ToList()
                };
            }
            else
            {
                cotizPivot = GetIndicadorDetail(new IndicadorDetailInput()
                {
                    IndicadorId = indicadorPivot.Id,
                    FechaDesde  = input.FechaDesde
                });
            }

            if (cotizPivot.Cotizaciones.Any())
            {
                var valorCotizPivot = cotizPivot.Cotizaciones.Last().ValorCotizacion;

                if (valorCotizPivot != decimal.Zero)
                {
                    var cots = indicadores.Select(i =>
                    {
                        var dto = new CotizacionDto()
                        {
                            IndicadorId         = i.Id,
                            FechaHoraCotizacion = input.FechaDesde,
                            ValorCotizacion     = decimal.Zero
                        };

                        var cotizIndicador = GetIndicadorDetail(new IndicadorDetailInput()
                        {
                            IndicadorId = i.Id,
                            FechaDesde  = input.FechaDesde
                        });

                        if (cotizIndicador.Cotizaciones.Any())
                        {
                            var valorCotiz      = cotizIndicador.Cotizaciones.LastOrDefault().ValorCotizacion;
                            dto.ValorCotizacion = valorCotiz / valorCotizPivot;
                        }

                        return(dto);
                    }
                                                  ).ToList();

                    return(new MultiIndicadorDetailOutput()
                    {
                        Nombres = indicadores.ToDictionary(x => x.Id, x => x.Nombre),
                        Cotizaciones = cots
                    });
                }
            }

            return(null);
        }