Пример #1
0
        private async void ShowChart(ExchangeRateItem obj)
        {
            obj.IsChartVisible = !obj.IsChartVisible;

            if (obj.IsChartVisible)
            {
                obj.ChartEntries = await _ratesStore.GetDataForChartGenerationAsync(obj.CurrencyType, obj.ChartDate.Month, obj.ChartDate.Year);
            }
        }
Пример #2
0
        public ExchangeRateItem GetExchangeRateApi(string rate)
        {
            WebClient        webclient = new WebClient();
            string           url       = string.Format("http://api.nbp.pl/api/exchangerates/rates/a/" + rate + "/?format=json");
            string           ratejson  = webclient.DownloadString(url);
            ExchangeRateItem item      = JsonConvert.DeserializeObject <ExchangeRateItem>(ratejson);

            return(item);
        }
Пример #3
0
        public PartialViewResult ExchangeRateGadget()
        {
            //Lepsze rozwiazanie: pojedyńcze połączenie z api z całą tabelą z wiloma walutami
            ExchangeRateItem            eur   = GetExchangeRateApi("eur");
            ExchangeRateItem            usd   = GetExchangeRateApi("usd");
            ExchangeRateItem            chf   = GetExchangeRateApi("chf");
            ExchangeRateItem            gbp   = GetExchangeRateApi("gbp");
            ExchangeRateGadgetViewModel model = new ExchangeRateGadgetViewModel()
            {
                EUR = eur.rates[0].mid,
                USD = usd.rates[0].mid,
                CHF = chf.rates[0].mid,
                GBP = gbp.rates[0].mid
            };

            return(PartialView(model));
        }
Пример #4
0
        public static ExchangeRatesInfo TransformToExchangeRatesInfo(this IEnumerable <HistoryItemExRatesApi> input)
        {
            var orderBy = input.OrderBy(r => r.Rate);

            var min = orderBy.First();
            var max = orderBy.Last();

            var minExRateItem = new ExchangeRateItem {
                Date = min.Date.ToString(), Rate = string.Format("{0:0.0000000000}", min.Rate)
            };
            var maxExRateItem = new ExchangeRateItem {
                Date = max.Date.ToString(), Rate = string.Format("{0:0.0000000000}", max.Rate)
            };

            return(new ExchangeRatesInfo {
                MinimumExchangeRateItem = minExRateItem, MaximumExchangeRateItem = maxExRateItem, AverageRate = string.Format("{0:0.0000000000}", input.Average(r => r.Rate))
            });
        }
Пример #5
0
        public static ExchangeRatesInfo TransformToExchangeRatesInfo(this TimeseriesResponseApiExchangerate input, IEnumerable <DateTime> requestedDates)
        {
            var requestedDateStrings = requestedDates.TransformToFormattedDateStrings();

            var requestedPairs = input.Rates.Select(pair => new { Date = pair.Key, Rate = pair.Value.First().Value }).Where(x => requestedDateStrings.Contains(x.Date)).ToList();

            var orderBy = requestedPairs.OrderBy(x => x.Rate);

            var minPair = orderBy.First();
            var maxPair = orderBy.Last();

            var minExRateItem = new ExchangeRateItem {
                Date = minPair.Date.ToString(), Rate = string.Format("{0:0.0000000000}", minPair.Rate)
            };
            var maxExRateItem = new ExchangeRateItem {
                Date = maxPair.Date.ToString(), Rate = string.Format("{0:0.0000000000}", maxPair.Rate)
            };

            return(new ExchangeRatesInfo {
                MinimumExchangeRateItem = minExRateItem, MaximumExchangeRateItem = maxExRateItem, AverageRate = string.Format("{0:0.0000000000}", requestedPairs.Average(r => r.Rate))
            });
        }
Пример #6
0
 private void DecrementChartDate(ExchangeRateItem obj)
 {
     obj.ChartDate = obj.ChartDate.AddMonths(-1);
 }
Пример #7
0
 private bool CanIncrementChartDate(ExchangeRateItem arg)
 {
     return(!IsBusy && arg != null && arg.ChartDate.AddMonths(1) <= DateTime.Now);
 }
Пример #8
0
 private bool CanDecrementDate(ExchangeRateItem arg)
 {
     return(!IsBusy && arg != null && arg.ChartDate.AddMonths(-1) >= new DateTime(1999, 1, 1));
 }