Example #1
0
 public override double ApplyFee(BaseFee o, double amount)
 {
     if (o is Fee)
     {
         FeesManager feeCrypto        = new FeesManager(_context);
         var         currentFeeCrypto = Convert.ToDouble((int)Math.Round((double)(Convert.ToDouble(feeCrypto.GetAllFees()) / 100) * amount));
         return(currentFeeCrypto);
     }
     else if (o is FlatRateFee)
     {
         FeesManager flatRateFee = new FeesManager(_context);
         var         flatRate    = flatRateFee.GetAllFlatRateFees();
         return(flatRate);
     }
     return(0);
 }
Example #2
0
        public override bool DoTransfer(Transfer t)
        {
            var cryptoCurrencyName = _context.CryptoCurrency.Where(i => i.CryptoCurrencyAbbreviation == t.From).Select(i => i.CryptoCurrencyName).FirstOrDefault();
            var fiatCurrencyName   = _context.Currency.Where(i => i.CurrencyAbbreviation == t.To).Select(i => i.CurrencyName).FirstOrDefault();

            if (fiatCurrencyName == null)
            {
                fiatCurrencyName = _context.CryptoCurrency.Where(i => i.CryptoCurrencyAbbreviation == t.To).Select(i => i.CryptoCurrencyName).FirstOrDefault();
                GetConversionRateAsync getConversionRateAsyncCrypto = new GetConversionRateAsync();
                double conversionRateCrypto = getConversionRateAsyncCrypto.GetConversionRate(t.To, t.From);

                FeesManager feeCrypto        = new FeesManager(_context);
                var         currentFeeCrypto = Convert.ToDouble((int)Math.Round((double)(Convert.ToDouble(feeCrypto.GetAllFees()) / 100) * t.Amount));

                var cryptoAccountFrom = _context.CryptoAccount.Where(i => i.CryptoCurrencyName == cryptoCurrencyName).FirstOrDefault();
                var cryptoAccountTo   = _context.CryptoAccount.Where(i => i.CryptoCurrencyName == fiatCurrencyName).FirstOrDefault();
                cryptoAccountFrom.Sold -= (t.Amount + currentFeeCrypto);
                if (cryptoAccountFrom.Sold < 0)
                {
                    return(false);
                }
                cryptoAccountTo.Sold = t.Amount * Convert.ToDouble(conversionRateCrypto);
                _context.SaveChanges();
                string        type        = "Crypto Transaction";
                CryptoManager transaction = new CryptoManager(_context, _mapper);
                transaction.AddCryptoTransaction(t.From, t.To, t.Amount, type);
                return(true);
            }
            GetConversionRateAsync getConversionRateAsync = new GetConversionRateAsync();
            var         conversionRate = getConversionRateAsync.GetConversionRate(t.From, t.To);
            FeesManager fee            = new FeesManager(_context);
            var         currentFee     = Convert.ToDouble((int)Math.Round((double)(Convert.ToDouble(fee.GetAllFees()) / 100) * t.Amount));
            var         acountTo       = _context.BankAccount.Where(i => i.CurrencyName == fiatCurrencyName).FirstOrDefault();
            var         acountFrom     = _context.CryptoAccount.Where(i => i.CryptoCurrencyName == cryptoCurrencyName).FirstOrDefault();

            acountFrom.Sold -= (t.Amount + currentFee);
            if (acountFrom.Sold < 0)
            {
                return(false);
            }

            acountTo.Sold = t.Amount * Convert.ToDouble(conversionRate);
            _context.SaveChanges();
            return(true);
        }
        private IFeeManager CreateSut(IFeesForVehicleFactory feesForVehicleFactory = null,
                                      IVehicleFeesFactory vehicleFeesFactory       = null)
        {
            if (feesForVehicleFactory == null)
            {
                feesForVehicleFactory = Substitute.For <IFeesForVehicleFactory>();
            }

            if (vehicleFeesFactory == null)
            {
                vehicleFeesFactory = Substitute.For <IVehicleFeesFactory>();
            }

            var sut = new FeesManager(feesForVehicleFactory,
                                      vehicleFeesFactory);

            return(sut);
        }
Example #4
0
 public FeesController(IMapper mapper, FeesManager feesManager)
 {
     _mapper      = mapper;
     _feesManager = feesManager;
 }