public GridBalancoColdModel()
        {
            ListaMoedas = new List <SelectListItem>();
            ListaMoedas.Add(new SelectListItem()
            {
                Text = string.Empty, Value = string.Empty
            });
            ListaMoedas.AddRange(TipoCrypto.ListarTodasParaInputTela().Select(c => new SelectListItem()
            {
                Text  = c.Sigla + " - " + c.Nome,
                Value = c.Sigla
            }).OrderBy(c => c.Text));

            ListaExchange = new List <SelectListItem>();
            ListaExchange.Add(new SelectListItem()
            {
                Text = string.Empty, Value = string.Empty
            });
            ListaExchange = TipoExchange.ListarTodosParaInputTela().Select(e => new SelectListItem()
            {
                Text  = e.Nome,
                Value = e.Id.ToString()
            }).OrderBy(c => c.Text).ToList();

            ListaBalancos = new List <MoedaEmCarteiraEntidade>();
        }
        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);
        }