public static ConversionResultModel MapConversionRequestToConversionResult( ConversionRequestModel conversionRequest) { if (conversionRequest == null) { return(null); } var conversionResultModel = new ConversionResultModel() { FromConversion = new FromConversion() { Amount = conversionRequest.Amount, CurrencyCode = conversionRequest.FromCurrency }, ToConversion = new ToConversion() { CurrencyCode = conversionRequest.ToCurrency } }; if (!string.IsNullOrWhiteSpace(conversionRequest.Date)) { conversionResultModel.Date = conversionRequest.Date; } return(conversionResultModel); }
public async Task <ConversionResultModel> GetCurrentCurrencyFromTo(string fromCurrency, string toCurrency) { var request = new ConversionRequestModel() { FromCurrency = fromCurrency, ToCurrency = toCurrency }; return(await _currencyConversionService.GetCurrentCurrencyFromTo(request)); }
public async Task <ConversionResultModel> ConvertCurrencyFromAmountTo(string fromCurrency, string toCurrency, decimal amount) { var request = new ConversionRequestModel() { FromCurrency = fromCurrency, ToCurrency = toCurrency, Amount = amount }; return(await _currencyConversionService.ConvertCurrencyFromAmountTo(request)); }
public async Task <ConversionResultModel> ConvertCurrencyFromHistoricalRates(string fromCurrency, string toCurrency, decimal amount, string date) { //todo: Check if all values in controller is valid var request = new ConversionRequestModel() { FromCurrency = fromCurrency, ToCurrency = toCurrency, Amount = amount, Date = date }; return(await _currencyConversionService.ConvertCurrencyFromHistoricalRates(request)); }
private ConversionRequestModel ConvertStringsToCapital(ConversionRequestModel conversionRequest) { if (!string.IsNullOrWhiteSpace(conversionRequest.FromCurrency)) { conversionRequest.FromCurrency = conversionRequest.FromCurrency.ToUpper(); } if (!string.IsNullOrWhiteSpace(conversionRequest.ToCurrency)) { conversionRequest.ToCurrency = conversionRequest.ToCurrency.ToUpper(); } return(conversionRequest); }
private decimal GetConvertedAmount(RatesResponseModel rates, ConversionRequestModel conversionRequest) { var property = rates.Rates.GetType().GetProperty(conversionRequest.ToCurrency); if (property == null) { return(0m); } var toRate = property.GetValue(rates.Rates, null).ToString(); var decimalRate = decimal.Parse(toRate); return(decimalRate * conversionRequest.Amount); }
public async Task <ConversionResultModel> ConvertCurrencyFromHistoricalRates(ConversionRequestModel conversionRequest) { var conversionResult = ConversionRequestToConversionResultMapper.MapConversionRequestToConversionResult(conversionRequest); var response = await _fixerApiClient.GetHistoricalCurrencyRatesFromTo(conversionRequest); if (!response.Success) { return(null); //return conversionResult } conversionResult.ToConversion.Amount = GetConvertedAmount(response, conversionRequest); return(conversionResult); }
//TODO: Date validator? In the controller. public async Task <RatesResponseModel> GetCurrentCurrencyRatesFromTo(ConversionRequestModel conversionRequest) { conversionRequest = ConvertStringsToCapital(conversionRequest); var url = "latest?access_key=" + AccessKey + "&base=" + conversionRequest.FromCurrency + "&symbols=" + conversionRequest.ToCurrency; var response = await _httpClient.GetAsync(url); if (!response.IsSuccessStatusCode) { return(null); } var json = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <RatesResponseModel>(json)); }
public async Task <CurrencyConversionModelResponse> ConvertCurrencyFromAmountTo(CurrencyConversionModelRequest conversionRequest) { var request = new ConversionRequestModel() { FromCurrency = conversionRequest.CurrencyFrom, ToCurrency = conversionRequest.CurrencyTo, Amount = conversionRequest.Amount }; var result = await _currencyConversionService.ConvertCurrencyFromAmountTo(request); var conversionResponse = new CurrencyConversionModelResponse(); if (result != null) { conversionResponse = ConversionResultToCurrencyConversionResponseMapper.MapConversionResultToCurrencyConversion(result); } return(conversionResponse); }
public HttpResponseMessage GetConversion(ConversionRequestModel request, Int64 sourceid) { if (request == null) { return(Request.CreateResponse(System.Net.HttpStatusCode.BadRequest)); } var source = TheSourceManager.GetSourceById(sourceid); if (source == null) { return(Request.CreateResponse(System.Net.HttpStatusCode.BadRequest)); } if (!source.Active) { return(Request.CreateResponse(System.Net.HttpStatusCode.MethodNotAllowed)); } var conversionService = _serviceLocator.GetServiceByName(source.Name); var response = conversionService.Convert(TheModelFacctory.Parse(request)); return(Request.CreateResponse(System.Net.HttpStatusCode.OK, TheModelFacctory.Create(response))); }
public Task <ConversionResultModel> GetCurrentCurrencyFromTo(ConversionRequestModel conversionRequest) { throw new System.NotImplementedException(); }