public async Task <ActionResult> Actualizar([FromBody] TipoCambioDto model)
        {
            var tipoCambio = new TipoCambio();

            tipoCambio.ID              = model.ID;
            tipoCambio.Moneda          = model.Moneda;
            tipoCambio.ValorTipoCambio = model.ValorTipoCambio;

            _context.TipoCambio.Update(tipoCambio);
            _context.SaveChanges();
            return(Ok());
        }
Ejemplo n.º 2
0
        public async Task Registrar(IEnumerable <SunatTipoCambioDto> listTipoCambioSunat)
        {
            //Primero convertimos a una lista de objetos TipoCambioDto
            //No creo que sea la manera mas eficiente pero asumiendo que son unas 60-64 interacciones no importa
            var _listTipoCambio = new List <TipoCambioDto>();

            foreach (var itemSunat in listTipoCambioSunat)
            {
                var _split = itemSunat.fecPublica.Split('/');

                var _fecha = new DateTime(Convert.ToInt32(_split[2]), Convert.ToInt32(_split[1]), Convert.ToInt32(_split[0]));

                var _anio = _fecha.Year;
                var _mes  = _fecha.Month;
                var _dia  = _fecha.Day;

                bool _existe = false;

                foreach (var itemExistente in _listTipoCambio)
                {
                    if (itemExistente.anio == _anio &&
                        itemExistente.mes == _mes &&
                        itemExistente.dia == _dia)
                    {
                        if (itemSunat.codTipo == "C")
                        {
                            itemExistente.compra = Convert.ToDecimal(itemSunat.valTipo);
                        }

                        if (itemSunat.codTipo == "V")
                        {
                            itemExistente.venta = Convert.ToDecimal(itemSunat.valTipo);
                        }

                        _existe = true;
                    }
                }

                if (!_existe)
                {
                    var _tipoCambio = new TipoCambioDto()
                    {
                        anio = _anio,
                        mes  = _mes,
                        dia  = _dia
                    };

                    if (itemSunat.codTipo == "C")
                    {
                        _tipoCambio.compra = Convert.ToDecimal(itemSunat.valTipo);
                    }

                    if (itemSunat.codTipo == "V")
                    {
                        _tipoCambio.venta = Convert.ToDecimal(itemSunat.valTipo);
                    }

                    _listTipoCambio.Add(_tipoCambio);
                }
            }

            using (var db = new NpgsqlConnection(_config.GetConnectionString("DatosPeruDb")))
            {
                var _sqlSelect = @"SELECT * FROM sunat_tipo_cambio WHERE anio=@anio AND mes=@mes AND dia=@dia";
                var _sqlInsert = @"INSERT INTO sunat_tipo_cambio(anio,mes,dia,venta,compra) VALUES(@anio,@mes,@dia,@venta,@compra)";
                var _sqlUpdate = @"UPDATE sunat_tipo_cambio SET venta=@venta,compra=@compra WHERE anio=@anio AND mes=@mes AND dia=@dia";


                foreach (var item in _listTipoCambio)
                {
                    var _parametros = new DynamicParameters();
                    _parametros.Add("@anio", item.anio);
                    _parametros.Add("@mes", item.mes);
                    _parametros.Add("@dia", item.dia);

                    var _tipoCambioExistente = await db.QueryFirstOrDefaultAsync <TipoCambioDto>(_sqlSelect, _parametros);

                    _parametros.Add("@venta", item.venta);
                    _parametros.Add("@compra", item.compra);

                    if (_tipoCambioExistente == null)
                    {
                        await db.ExecuteAsync(new CommandDefinition(_sqlInsert, _parametros));
                    }
                    else
                    {
                        await db.ExecuteAsync(new CommandDefinition(_sqlUpdate, _parametros));
                    }
                }
            }
        }