private async Task FillDetails(string currency) { await Task.Run(() => { LendingOffer highLoanRate = null; LendingOffer lowLoanRate = null; IList <LendingOffer> periodOffers = null; try { DateTime horaInicio = DateTime.Now; DateTime horaFim = DateTime.Now; txtMinutos.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate { int tempoMinutoPeriodo = 20; if (!int.TryParse(txtMinutos.Text, out tempoMinutoPeriodo)) { tempoMinutoPeriodo = 20; } horaInicio = DateTime.Now.AddMinutes(-tempoMinutoPeriodo); }); using (var context = new LoanContext()) periodOffers = context.LendingOffers.Where(o => (o.currency.Equals(currency) && (o.dataRegistro >= horaInicio && o.dataRegistro <= horaFim))).ToList(); ResetLabels(); if (periodOffers.Any()) { highLoanRate = periodOffers.OrderByDescending(o => o.rate).First(); lowLoanRate = periodOffers.OrderBy(o => o.rate).First(); var averageLoanRate = periodOffers.Average(x => x.rate); this.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate { txtMaiorLoanRate.Text = highLoanRate.rate.ToString("0.0000%"); txtMenorLoanRate.Text = string.Concat(lowLoanRate.rate.ToString("0.0000%"), " ", "(", lowLoanRate.dataRegistro.ToShortTimeString(), ")"); txtRateAverage.Text = averageLoanRate.ToString("0.0000%"); txtDataRegistro.Text = highLoanRate.dataRegistro.ToString(); txtCountLoanOffers.Text = periodOffers.Count() + " in " + txtMinutos.Text + " mins."; }); } } catch { ResetLabels(); } finally { highLoanRate = null; lowLoanRate = null; periodOffers = null; } }); }
public async Task LoadLoanOffersAsync(PoloniexClient PoloniexClient) { await Task.Run(async() => { PublicLoanOffersData lendings = null; LendingOffer firstLoanOffer = null; try { lendings = await PoloniexClient.Lendings.GetLoanOffersAsync("BTC"); firstLoanOffer = lendings.offers.OrderBy(x => x.rate).First(); if (MarketService.Instance().MarketList != null) { if (MarketService.Instance().MarketList.Any()) { double ethPriceLast = MarketService.Instance().MarketList.First(x => x.Key.ToString().ToUpper().Equals("BTC_ETH")).Value.PriceLast; double btcPriceLast = MarketService.Instance().MarketList.First(x => x.Key.ToString().ToUpper().Equals("USDT_BTC")).Value.PriceLast; firstLoanOffer.ethExchangeValue = ethPriceLast; firstLoanOffer.btcExchangeValue = btcPriceLast; string dolarValor = FachadaWSSGSService.Instance().getUltimoValorVOResponse.getUltimoValorVOReturn.ultimoValor.svalor; string eth = string.Concat("BTC/ETH: ", firstLoanOffer.ethExchangeValue.ToString("0.00000000")); string btc = string.Concat("USDT/BTC: ", firstLoanOffer.btcExchangeValue.ToString("0.000000")); string loan = string.Concat("BTC Loan Rate: ", firstLoanOffer.rate.ToString("0.00000%")); string dolar = string.Concat("USD: ", double.Parse(dolarValor.Replace(".", ",")).ToString("C2")); string btcReal = string.Concat("BTC: ", (firstLoanOffer.btcExchangeValue * double.Parse(dolarValor.Replace(".", ","))).ToString("C2")); txtDisplay.Dispatcher.Invoke(DispatcherPriority.Background, (ThreadStart) delegate { animation = new DoubleAnimation((Application.Current.MainWindow.Width - 202), 0, TimeSpan.FromSeconds(10)); txtDisplay.Content = string.Concat(btc, " ", eth, " ", loan, " ", dolar, " ", btcReal); }); } } } finally { lendings = null; firstLoanOffer = null; } }); }
private async Task LoadLoanOffersAsync() { await Task.Run(async() => { selectedCurrency = "BTC"; //defaultValue PublicLoanOffersData lendings = null; LendingOffer firstLoanOffer = null; IDictionary <CurrencyPair, IMarketData> markets = null; try { if (PoloniexClient != null) { markets = await PoloniexClient.Markets.GetSummaryAsync(); cbCurrency.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate { if (cbCurrency.SelectedValue != null) { if (cbCurrency.SelectedValue.ToString().Split(':').Any()) { selectedCurrency = cbCurrency.SelectedValue.ToString().Split(':')[1].ToString(); } } }); lendings = await PoloniexClient.Lendings.GetLoanOffersAsync(selectedCurrency.Trim()); if (markets != null) { if (markets.Any()) { if (lendings != null) { this.Dispatcher.Invoke(DispatcherPriority.Render, (ThreadStart) delegate { DataGrid1.Items.Clear(); foreach (var offer in lendings.offers) { DataGrid1.Items.Add(offer); } }); firstLoanOffer = lendings.offers.OrderBy(x => x.rate).First(); if (firstLoanOffer != null) { using (var context = new LoanContext()) if (!context.LendingOffers.Any(x => x.currency.Equals(selectedCurrency) && x.amount.Equals(firstLoanOffer.amount) && x.rate.Equals(firstLoanOffer.rate) && x.rangeMin.Equals(firstLoanOffer.rangeMin) && x.rangeMax.Equals(firstLoanOffer.rangeMax))) { firstLoanOffer.currency = selectedCurrency; context.LendingOffers.Add(firstLoanOffer); await context.SaveChangesAsync(); } } await FillDetails(selectedCurrency); } } } } } finally { firstLoanOffer = null; lendings = null; markets = null; } }); }