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)); } }
public async Task <CalculatedRatesDateRateResponse> GetExhangeRates(CalculatedRatesRequest calculatedRatesRequest) { var response = await _exchangeRatesService.GetRates(calculatedRatesRequest); return(response); }