public static void UpdateUserBalance(Guid userId, CurrenciesEnum currency, double balanceAddition, UpdateBalanceType updateType) { try { using (var ctx = new RentooloEntities()) { var obj = ctx.Wallets.FirstOrDefault(x => x.UserId == userId && x.CurrencyId == (int)currency); if (obj != null) { obj.Value = obj.Value + balanceAddition; } else { Wallets wallet = new Wallets(); wallet.Value = balanceAddition; wallet.UserId = userId; wallet.CurrencyId = (int)currency; wallet.CreateDate = DateTime.Now; ctx.Wallets.Add(wallet); } ctx.SaveChanges(); } } catch (System.Exception ex) { DataHelper.AddException(ex); } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null) { CurrenciesEnum enumValue = (CurrenciesEnum)value; return(enumValue); } return(null); }
//public async Task<ExchangeRateOnADate> GetExchangeRateOnADateAsync( // string baseCurrency, string targetCurrency, string date) //{ // var httpClient = _httpClientFactory.CreateClient(); // var response = await httpClient // .GetAsync($"https://api.exchangeratesapi.io/{date}?base={baseCurrency}&symbols={targetCurrency}"); // if (response.IsSuccessStatusCode) // { // return JsonConvert.DeserializeObject<ExchangeRateOnADate>( // await response.Content.ReadAsStringAsync()); // } // return null; //} public async Task <IEnumerable <ExchangeRateOnADate> > GetExchangeRatesOnDatesAsync(CurrenciesEnum baseCurrency, CurrenciesEnum targetCurrency, IEnumerable <DateTime> dates) { var httpClient = _httpClientFactory.CreateClient(); var singleDateUrls = dates.Select(date => $"https://api.exchangeratesapi.io/{date:yyyy-MM-dd}?base={baseCurrency}&symbols={targetCurrency}") .ToList(); //Create tasks query var getRatesOnDatesTasksQuery = from singleDateUrl in singleDateUrls select GetRateOnDateAsync(httpClient, singleDateUrl); //Run tasks var getRatesOnDatesTasks = getRatesOnDatesTasksQuery.ToList(); return(await Task.WhenAll(getRatesOnDatesTasks)); }