/// <summary> /// Gera uma lista de cotãção com o preço de compra e venda da moeda /// </summary> /// <param name="moeda"></param>Moeda /// <param name="compra"></param>Lista com valores comrpa /// <param name="venda"></param>Lista com valores venda /// <returns>List<CotacaoMonetaria></returns> private List <CotacaoMonetaria> unionCotacaoCambial(Moeda moeda, List <CotacaoAux> compra, List <CotacaoAux> venda) { int count = compra.Count; List <CotacaoMonetaria> cotacoes = new List <CotacaoMonetaria>(); if (count > venda.Count) { //use o menor count = venda.Count; } for (int i = 0; i < count; i++) { var c = compra[i]; var v = venda[i]; var cot = new CotacaoMonetaria(); //compra e venda tem as mesma datas cot.DataCotacao = c.DataCotacao; cot.ValorCompra = c.ValorCotacao; cot.ValorVenda = v.ValorCotacao; cot.IdMoeda = moeda.IdMoeda; cot.Moeda = moeda; cot.AddReference(c.SerieVo); cotacoes.Add(cot); } return(cotacoes); }
//exibe a cotação da moeda pelo clique no tile private async void showCotacaoMonetariaFromMoeda(CotacaoMonetaria m) { using (var _wsBacen = new WSBacenCambio()) { try { var codigo = m.Moeda.CodigoWSCompra; var dataAtual = DateTime.Now; var moeda = new MoedaDaoManager().GetMoedaByCodigo((long)codigo); var cotacoes = await Task.Run(() => _wsBacen.GetCotacaoMonetariaFromBacen(dataAtual.AddDays(-7), dataAtual, moeda)); gridControl2.DataSource = cotacoes; var row = cotacoes.FirstOrDefault(); if (row != null) { lblFonte1.Text = row.ToString(); } gridView1.ExpandAllGroups(); } catch (BacenCambioException ex) { ex.ShowExceptionMessage(); } } }
private string getTextHtml(CotacaoMonetaria cot) { string html = "<u>" + cot.Moeda + "</u><br>" + "Compra: " + cot.ValorCompra.ToString("N4") + "<br>Venda: " + cot.ValorVenda.ToString("N4"); return(html); }
/// <summary> /// Obtem a cotação das principais moedas referidas no sistema. /// </summary> /// <returns></returns> public CurrencyExchange GetCurrencyExchange() { CurrencyExchange cotacao = new CurrencyExchange(); using (var ctx = new CambioContext()) { DateTime data = DateTime.Now.ToDateZerada(); if (data.DayOfWeek == DayOfWeek.Saturday) { data = data.AddDays(-1); } else if (data.DayOfWeek == DayOfWeek.Sunday) { data = data.AddDays(-2); } //localize as cotações do dia var cotExist = ctx.CotacaoMonetariaDao .Where(c => c.DataCotacao.ToDateZerada() == data) .ToList(); if (cotExist.Count >= 9) { //localizei primeiro a cotação no banco //isso aqui eh mais rapido q obter da internet cotacao.Cotacoes.AddRange(cotExist); } else { var moedas = ctx.MoedaDao.FindAll(); foreach (var m in moedas) { try { //obtem do webservice mesmo //persiste a cotação CotacaoMonetaria cotNew = getCotacao((TypeCodigoBacen)m.CodigoWSCompra, (TypeCodigoBacen)m.CodigoWSVenda); //sempre add cotacao.AddCurrencyExchange(cotNew); SaveCotacaoMonetaria(ctx, cotNew); } catch (Exception ex) { LoggerUtilIts.GenerateLogs(ex, "Falha no WSBacenCambio", "Falha na cotação cambial."); } } } } return(cotacao); }
/// <summary> /// Salva ou atualiza cotação /// </summary> /// <param name="ctx"></param> Contexto /// <param name="cot"></param>Cotação a ser salva private void SaveCotacaoMonetaria(CambioContext ctx, CotacaoMonetaria cotacao) { //use o codigo de compra mesmo long codigo = cotacao.Moeda.CodigoWSCompra; try { //recupera a moeda pelo codigo de compra/venda Moeda moeda = cotacao.Moeda; if (moeda == null || moeda.IdMoeda == 0) { moeda = ctx.MoedaDao.First(m => m.CodigoWSCompra == codigo || m.CodigoWSVenda == codigo); } try { //recupera a cotação var current = ctx.CotacaoMonetariaDao .First(c => c.DataCotacao.Date == cotacao.DataCotacao && c.IdMoeda == moeda.IdMoeda); //e atualiza ela current.ValorCompra = cotacao.ValorCompra; current.ValorVenda = cotacao.ValorVenda; current.DataCotacao = cotacao.DataCotacao; //atualiza no banco ctx.CotacaoMonetariaDao.Update(current); } catch (Exception ex) { //nao tem cotação add Console.WriteLine("Criando um nova cotação: =>" + ex.Message); //FK cotacao.IdMoeda = moeda.IdMoeda; //salva no banco ctx.CotacaoMonetariaDao.Save(cotacao); } } catch (Exception ex) { string msg = "Moeda não foi localizada"; string title = "Problema na rotina de atualização cambial"; XMessageIts.Advertencia(msg, title); LoggerUtilIts.GenerateLogs(ex, msg + "\n" + title); } }
public List <CotacaoMonetaria> GetCotacoesIndicadoresBacen() { var cotacoes = new List <CotacaoMonetaria>(); using (var ctx = new CambioContext()) { try { //recupera as moedas var indicadores = CambioContext.Instance.IndicadoresBacenDao .FindAll().ToList(); //.Where(m => m.NomeCompletoMoeda.ToLower().Contains("peso")).ToList(); foreach (var ind in indicadores) { try { var cot = getLastCotacaoAux(ind.CodigoMoeda); var cotacao = new CotacaoMonetaria(cot.DataCotacao, cot.ValorCotacao, cot.ValorCotacao, ind); cotacoes.Add(cotacao); } catch (BacenCambioException ex) { XMessageIts.Erro("Falha ao informações dos indicadores\n\n" + "Erro:" + ex.Message, ex.Title); return(null); } } } catch (Exception ex) { string msg = "Nenhum indicador localizado"; string title = "Falha na listagem de indicadores."; XMessageIts.Advertencia(msg, title); LoggerUtilIts.GenerateLogs(ex, msg + "\n" + title); } } return(cotacoes); }
private CotacaoMonetaria getCotacao(TypeCodigoBacen codigoCompra, TypeCodigoBacen codigoVenda) { long codCompra = (long)codigoCompra; long codVenda = (long)codigoVenda; var cotCompraAux = getLastCotacaoAux(codCompra); var cotVendaAux = getLastCotacaoAux(codVenda); //a data do cotCompraAux e cotVendaAux sao iguais var cot = new CotacaoMonetaria(cotVendaAux.DataCotacao, cotCompraAux.ValorCotacao, cotVendaAux.ValorCotacao, cotCompraAux.SerieVo); cot.AddReference(cotCompraAux.SerieVo); using (var ctx = new CambioContext()) { try { //recupera a moeda pelo codigo de compra/venda Moeda moeda = ctx.MoedaDao.First(m => m.CodigoWSCompra == codCompra || m.CodigoWSVenda == codVenda); cot.Moeda = moeda; SaveCotacaoMonetaria(ctx, cot); } catch (Exception ex) { string msg = "Moeda não foi localizada"; string title = "Não foi possível obter a atualização cambial"; XMessageIts.Advertencia(msg, title); LoggerUtilIts.GenerateLogs(ex, msg + "\n" + title); throw ex; } } return(cot); }
/// <summary> /// Salva ou atualiza cotação /// </summary> /// <param name="ctx"></param> Contexto /// <param name="cot"></param>Cotação a ser salva public void SaveCotacaoMonetaria(CotacaoMonetaria cot) { using (var ctx = new CambioContext()) { try { var cotacao = new CotacaoMonetaria(cot.DataCotacao, cot.ValorCompra, cot.ValorVenda); //FK cotacao.IdMoeda = cot.Moeda.IdMoeda; //salva no banco ctx.CotacaoMonetariaDao.Save(cotacao); } catch (Exception ex) { string msg = "Moeda não foi localizada"; string title = "Problema na rotina de atualização cambial"; XMessageIts.Advertencia(msg, title); LoggerUtilIts.GenerateLogs(ex, msg + "\n" + title); } } }