Exemple #1
0
        public Money Convert(string targetCurrency)
        {
            double rate;

            // currency value validation here:

            if (string.IsNullOrWhiteSpace(targetCurrency) == true && targetCurrency.Length != 3)
            {
                CustomExceptions.ExceptionThrower.ThrowImproperValueForCurrency();
            }
            if (this.Currency.Equals("USD") == false && targetCurrency.ToUpper().Equals("USD") == false)
            {
                throw new Exception("Either of two currencies must be USD!!");
            }
            if (this.Currency.Equals("USD"))
            {
                FileExchangeRateProvider provideExchangeRate = new FileExchangeRateProvider();
                rate = provideExchangeRate.GetExchangeRate(this.Currency, targetCurrency.ToUpper());
                return(new Money(this.Amount * rate, targetCurrency.ToUpper()));
            }
            else
            {
                FileExchangeRateProvider provideExchangeRate = new FileExchangeRateProvider();
                rate = provideExchangeRate.GetExchangeRate(targetCurrency.ToUpper(), this.Currency);
                if (this.Amount == 0)
                {
                    return(new Money(0, targetCurrency.ToUpper()));
                }

                return(new Money(this.Amount / rate, targetCurrency.ToUpper()));
            }
        }