/// <summary> /// Получаем отсортированный список курсов для выбранного периода и курса из переданного списка курсов в БД /// </summary> /// <param name="cursesDb"> список курсов из БД </param> /// <param name="periodEnum"> период за который необходимо взять информацию </param> /// <param name="curseRequest"> валюта </param> /// <returns></returns> private static CurseResponse GetCursesByTime(IEnumerable <Curse> cursesDb, PeriodEnum periodEnum, CurseRequest curseRequest) { var result = cursesDb.Where(x => x.Created >= DateTime.Now.AddMinutes(-(int)periodEnum) && x.CurrenciesFrom == curseRequest.From && x.CurrenciesTo == curseRequest.To) .OrderBy(x => x.Created) .Select(x => x.Value).ToList(); return(new CurseResponse { Key = curseRequest.ToStringCurse(), FirstValue = result.FirstOrDefault(), LastValue = result.LastOrDefault(), MaxValue = !result.Any() ? 0 : result.Max(), MinValue = !result.Any() ? 0 : result.Min(), PeriodEnum = periodEnum }); }
public async Task SaveCurseAsync(CurseRequest request) { if (request.From == request.To) { await _context.Curses.AddAsync(new Curse { Value = 1, CurrenciesFrom = request.From, CurrenciesTo = request.To }); await _context.SaveChangesAsync(); return; } var query = $"{_url}{request.ToStringCurse()}&compact=ultra&apiKey={_apiKey}"; var result = await _httpClientProxy.GetAsync <CurseFromConverterResponse>(query); await _context.Curses.AddAsync(new Curse { Value = result.Value, CurrenciesFrom = request.From, CurrenciesTo = request.To }); await _context.SaveChangesAsync(); }