public async Task <CalculatedRatesDateRateResponse> GetRates(CalculatedRatesRequest calculatedRatesRequest)
        {
            string targetCurrency = EnumUtil.GetCurrencyByName(calculatedRatesRequest.TargetCurrency);
            string baseCurrency   = EnumUtil.GetCurrencyByName(calculatedRatesRequest.BasicCurrency);

            string queryString = CreateQueryString(calculatedRatesRequest.Dates.DeepClone(), targetCurrency, baseCurrency);

            var apiResponse = await CallToExchangeRatesApi(queryString);

            var ratesResponse = CreateCalculatedRatesResponse(apiResponse, calculatedRatesRequest.Dates, targetCurrency);

            return(ratesResponse);
        }
        public async Task <ActionResult <CalculatedRatesDateRateResponse> > GetCalculatedRates(Currency baseCurrency, Currency targetCurrency, [FromQuery] List <DateTime> dates)
        {
            try
            {
                // doesn't allow duplicate date entries
                if (!ListsUtil.CheckForDuplicates(dates))
                {
                    throw new DuplicateTypeException("date");
                }

                var request = new CalculatedRatesRequest
                {
                    BasicCurrency  = baseCurrency,
                    TargetCurrency = targetCurrency,
                    Dates          = dates
                };

                CustomObjectValidator.Validate(request);

                var response = await _calculatedRatesService.GetExhangeRates(request);

                return(Ok(response));
            }
            catch (DuplicateTypeException de)
            {
                return(BadRequest(de.Message));
            }
            catch (AggregateException ex)
            {
                var messages = ErrorUtil.ValidationErrorMessages(ex);
                return(BadRequest(messages));
            }
            catch (EmptyRatesException ere)
            {
                return(BadRequest(ere.Message));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemplo n.º 3
0
        public async Task <CalculatedRatesDateRateResponse> GetExhangeRates(CalculatedRatesRequest calculatedRatesRequest)
        {
            var response = await _exchangeRatesService.GetRates(calculatedRatesRequest);

            return(response);
        }