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));
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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();
 }