public async Task <IList <EvdsCurrencyRating> > GetListByCodeAndDate(EvdsCurrencyRatingRequest request) { HttpClient client = new HttpClient(); var uri = Options.Host + Options.Path + "series=" + StringHelper.SerieCodeGenerator(request.CurrencyCode, request.OperationType) + "&startDate=" + request.StartDate.ToString("dd-MM-yyyy") + (request.EndDate.HasValue ? "&endDate=" + request.EndDate.Value.ToString("dd-MM-yyyy") : "") + "&type=" + request.ResponseType.ToString().ToLower() + "&key=" + Options.ApiKey; HttpResponseMessage response = await client.GetAsync(uri); string contentString = await response.Content.ReadAsStringAsync(); if (string.IsNullOrEmpty(contentString)) { return(new List <EvdsCurrencyRating>()); } var parsedJson = JObject.Parse(contentString); var serieRatingData = parsedJson.SelectToken("items").Children <JObject>(); IList <EvdsCurrencyRating> serieRatingList = new List <EvdsCurrencyRating>(); EvdsCurrencyRating newSerieRating = new EvdsCurrencyRating(); foreach (var item in serieRatingData) { var dateValue = item.Properties().FirstOrDefault(m => m.Name == "Tarih").Value.ToString(); foreach (var property in item.Properties()) { var regularPropertyName = property.Name.Replace("_", "."); if (StringHelper.SerieCodeGenerator(request.CurrencyCode, request.OperationType) == regularPropertyName) { newSerieRating = new EvdsCurrencyRating(); newSerieRating.CurrencyCode = request.CurrencyCode; newSerieRating.OperationType = request.OperationType; newSerieRating.Date = DateTime.ParseExact(dateValue, "dd-MM-yyyy", CultureInfo.InvariantCulture); newSerieRating.SerieCode = regularPropertyName; newSerieRating.Rating = (decimal?)property.Value; serieRatingList.Add(newSerieRating); } } } return(serieRatingList); }
public async Task <IDataResult <IList <CurrencyRating> > > SaveListFromEvds(int currencyId, DateTime startDate, DateTime?endDate) { var currency = _currencyService.Get(m => m.Id == currencyId).Data; var existCurrencyRatingList = GetListByCurrenyIdAndDate(currencyId, startDate, endDate).Data; EvdsCurrencyRatingRequest request = new EvdsCurrencyRatingRequest() { CurrencyCode = currency.Code, StartDate = startDate, EndDate = endDate, OperationType = currency.OperationType, ResponseType = ResponseTypes.Json.ToString() }; var evdsCurrencyRatings = await _evdsService.CurrencyRatingService.GetListByCodeAndDate(request); var existCurrencyRatingDates = existCurrencyRatingList.Select(m => m.Date); var doesNotExistRates = evdsCurrencyRatings.Where(m => m.CurrencyCode == currency.Code && !existCurrencyRatingDates.Contains(m.Date)); var addListResult = AddList(doesNotExistRates.Select(m => new CurrencyRating { CurrencyId = currencyId, Date = m.Date, Rating = m.Rating }).ToList()); return(new SuccessDataResult <IList <CurrencyRating> >(existCurrencyRatingList.Concat(addListResult.Data).ToList())); }
public async Task <IActionResult> GetListByCodeAndDate([FromBody] EvdsCurrencyRatingRequest request) { var result = await _evdsService.CurrencyRatingService.GetListByCodeAndDate(request); return(Ok(result)); }