private GridListaCryptosModel ObterModelListaCryptos(double valorBrlBtc, double valorUsdBtc, double valorBrlBtcReal, PoloniexEntradaApiEntidade entradaPoloniex, BittrexEntradaApiEntidade entradaBittrex, KrakenEntradaApiEntidade entradaKraken, BitfinexEntradaApiEntidade entradaBitfinex, List <MoedaEmCarteiraEntidade> listaBalancoColdWallet) { List <CryptoModel> lista = new List <CryptoModel>(); var consulta = new ConsultaExchangesBusiness().ConsultarExchanges(entradaPoloniex, entradaBittrex, entradaKraken, entradaBitfinex, listaBalancoColdWallet); foreach (var quantidade in consulta.ListaQuantidades) { if (quantidade.Quantidade > 0) { double valorTotalBtc = ConsultaExchangesBusiness.ObterValorTotalEmBtc(consulta.ListaCotacoes, quantidade); double valorUnidadeEmBtc = quantidade.Quantidade > 0 ? (valorTotalBtc / quantidade.Quantidade) : 0; double valorTotalBrl = valorTotalBtc * valorBrlBtc; double valorTotalBrlReal = valorTotalBtc * valorBrlBtcReal; if (valorTotalBrl >= 1 && valorTotalBrlReal >= 1) { double valorTotalUsd = valorTotalBtc * valorUsdBtc; lista.Add(new CryptoModel { NomeCrypto = quantidade.Tipo.Nome, SiglaCrypto = quantidade.Tipo.Sigla, QuantidadeCryptoDouble = quantidade.Quantidade, ValorCryptoBtc = valorUnidadeEmBtc.ToString("N8"), ValorTotalBtcDouble = valorTotalBtc, ValorTotalBrlDouble = valorTotalBrl, ValorTotalBrlRealDouble = valorTotalBrlReal, ValorTotalUsdDouble = valorTotalUsd }); } } } var model = new GridListaCryptosModel(valorBrlBtc, valorBrlBtcReal, valorUsdBtc) { Lista = lista.OrderByDescending(c => c.ValorTotalBrlRealDouble).ToList(), ResultadosOperacao = ObterListaResultadosOperacao(consulta.ListaResultadosOperacoesExchanges) }; model.Lista.ForEach(c => c.PercentualRelativoDouble = (100 * c.ValorTotalBtcDouble / model.ValorTotalBtcDouble)); return(model); }
public ConsultaExchangesEntidade ConsultarExchanges(PoloniexEntradaApiEntidade entradaPoloniex, BittrexEntradaApiEntidade entradaBittrex, KrakenEntradaApiEntidade entradaKraken, BitfinexEntradaApiEntidade entradaBitfinex, List <MoedaEmCarteiraEntidade> listaBalancoColdWallet) { ConsultaExchangesEntidade retorno = new ConsultaExchangesEntidade(); retorno.ListaCotacoes = new List <CotacaoMoedaEntidade>(); retorno.ListaQuantidades = new List <CryptoQuantidadeEntidade>(); retorno.ListaResultadosOperacoesExchanges = new List <ResultadoOperacaoEntidade>(); var listaBalanco = new List <BalancoMoedaEntidade>(); long nonce = DateTime.Now.Ticks; var resultadoConsulta = new List <ResultadoConsultaExchangeEntidade>(); if (entradaPoloniex != null) { resultadoConsulta.Add(ConsultarExchange(entradaPoloniex, new ApiPoloniex(entradaPoloniex.ApiKey, entradaPoloniex.ApiSecret, nonce))); } if (entradaBittrex != null) { resultadoConsulta.Add(ConsultarExchange(entradaBittrex, new ApiBittrex(entradaBittrex.ApiKey, entradaBittrex.ApiSecret, nonce))); } if (entradaKraken != null) { resultadoConsulta.Add(ConsultarExchange(entradaKraken, new ApiKraken(entradaKraken.ApiKey, entradaKraken.ApiSecret, nonce))); } if (entradaBitfinex != null) { resultadoConsulta.Add(ConsultarExchange(entradaBitfinex, new ApiBitfinex(entradaBitfinex.ApiKey, entradaBitfinex.ApiSecret, nonce))); } listaBalanco.AddRange(resultadoConsulta.SelectMany(r => r.Balanco)); retorno.ListaCotacoes.AddRange(resultadoConsulta.SelectMany(r => r.Cotacao)); retorno.ListaResultadosOperacoesExchanges.AddRange(resultadoConsulta.Select(r => r.ResultadoOperacoes)); foreach (var balanco in listaBalanco) { if (!retorno.ListaQuantidades.Any(q => q != null && q.Tipo != null && q.Tipo.Sigla == balanco.Moeda.Sigla)) { retorno.ListaQuantidades.Add(new CryptoQuantidadeEntidade(balanco.Moeda)); } retorno.ListaQuantidades.First(q => q != null && q.Tipo != null && q.Tipo.Sigla == balanco.Moeda.Sigla).ListaBalancos.Add(balanco); } if (listaBalancoColdWallet != null) { foreach (var moedaColdWallet in listaBalancoColdWallet) { TipoCrypto moeda = TipoCrypto.ObterPorSigla(moedaColdWallet.SiglaMoeda); if (!retorno.ListaQuantidades.Any(q => q != null && q.Tipo != null && q.Tipo.Sigla == moeda.Sigla)) { retorno.ListaQuantidades.Add(new CryptoQuantidadeEntidade(moeda)); } retorno.ListaQuantidades.First(q => q != null && q.Tipo != null && q.Tipo.Sigla == moeda.Sigla).ListaBalancos.Add( new BalancoMoedaEntidade() { Exchange = TipoExchange.Obter(Convert.ToInt32(moedaColdWallet.ExchangeCotacao)), Moeda = moeda, Quantidade = moedaColdWallet.QuantidadeMoeda, ColdWallet = true }); } } return(retorno); }