コード例 #1
0
        /// <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);
        }
コード例 #2
0
        public CotacaoMonetaria(DateTime dataCotacao, decimal compra, decimal venda, IndicadoresBacen ind)
            : this(dataCotacao, compra, venda)
        {
            var moeda = new Moeda();

            moeda.NomeMoeda      = ind.NomeCompletoMoeda;
            moeda.CodigoWSCompra = ind.CodigoMoeda;

            this.Moeda   = moeda;
            this.IdMoeda = ind.IdMoeda;
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <summary>
        /// Obtem a cotação cambial da moeda no site do banco do brasil
        ///A data de inicio deve ser 2 dias inferior a data atual
        /// </summary>
        /// <returns></returns>
        public List <CotacaoMonetaria> GetCotacaoMonetariaFromBacen(DateTime dtInicio, DateTime dtFim, Moeda moeda)
        {
            var cotacoes = new List <CotacaoMonetaria>();

            try
            {
                var compra = createCotacaoCambial(dtInicio, dtFim, moeda.CodigoWSCompra);
                var venda  = createCotacaoCambial(dtInicio, dtFim, moeda.CodigoWSVenda);
                //uni as cotações
                cotacoes.AddRange(unionCotacaoCambial(moeda, compra, venda));
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(BacenCambioException))
                {
                    BacenException be = ex as BacenCambioException;
                    be.ShowExceptionMessage();
                }
                else
                {
                    XMessageIts.Advertencia(ex.Message);
                }
                return(null);
            }
            return(cotacoes);
        }