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));
        }