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); }