示例#1
0
 public void Setup()
 {
     _fee            = Substitute.For <IFee>();
     _log            = Substitute.For <ILogger>();
     _walletRepo     = Substitute.For <IWalletRepo>();
     _bankingAccount = Substitute.For <IBankingAccount>();
 }
示例#2
0
 public Wallet(IWalletRepo walletRepo, IBankingAccount bankingAccount, IFee fee, ILogger log)
 {
     _walletRepo     = walletRepo;
     _bankingAccount = bankingAccount;
     _fee            = fee;
     _log            = log;
 }
 public void AddFee(IFee fee)
 {
     if (_Counter._Fees == null)
     {
         _Counter._Fees = new System.Collections.Generic.List <IFee>();
     }
     _Counter._Fees.Add(fee);
 }
 internal TransactionFee(ITransactionFeeRecord transactionFeeRecord, IFee fee) :
     base(transactionFeeRecord.RecordType, transactionFeeRecord.Id)
 {
     TransactionId = transactionFeeRecord.TransactionId;
     Quantity      = transactionFeeRecord.Quantity;
     UnitPrice     = transactionFeeRecord.UnitPrice;
     TotalPrice    = transactionFeeRecord.TotalPrice;
     Fee           = fee;
 }
        public override decimal CalculateRentalPrice(int days, IFee fee)
        {
            if (days <= _feeThreshold)
            {
                return(fee.Premium * days);
            }

            return(fee.Premium * _feeThreshold + fee.Regular * (days - _feeThreshold));
        }
示例#6
0
        public void AddFee(IFee fee)
        {
            if (m_Fees.Contains(fee))
            {
                throw new FeeAlreadyAddedException(fee);
            }

            m_Fees.Add(fee);
        }
示例#7
0
        public override decimal CalculateRentalPrice(int days, IFee fee)
        {
            var totalFee = fee.OneTime;

            if (days <= _feeThreshold)
            {
                return(totalFee + fee.Premium * days);
            }

            return(totalFee + fee.Premium * _feeThreshold + fee.Regular * (days - _feeThreshold));
        }
 public static CartItemDto ToCartItemDto(this CartItem cartItem, IFee fee)
 {
     return(new CartItemDto
     {
         Id = cartItem.EquipmentItem.Id,
         Name = cartItem.EquipmentItem.Name,
         Price = cartItem.GetRentalPrice(fee),
         LoyaltyPoints = cartItem.EquipmentItem.LoyaltyPoints,
         RentalPeriod = cartItem.RentalPeriod
     });
 }
 public static OrderDto ToOrderDto(this Order order, IFee fee)
 {
     return(new OrderDto
     {
         Id = order.Id,
         ItemsCount = order.Items.Count(),
         Price = order.Items.Sum(i => i.GetRentalPrice(fee)),
         LoyaltyPoints = order.Items.Sum(i => i.EquipmentItem.LoyaltyPoints),
         OrderDate = order.OrderDate
     });
 }
        public string GenerateInvoice(Order order, IFee fee)
        {
            var builder = new StringBuilder();

            builder.AppendLine($"Invoice #{order.Id}");
            foreach (CartItem orderItem in order.Items)
            {
                builder.AppendLine($"{orderItem.EquipmentItem.Name}\t{orderItem.GetRentalPrice(fee)}");
            }

            builder.AppendLine($"Total price: {order.Items.Sum(i => i.GetRentalPrice(fee))}; " +
                               $"points earned: {order.Items.Sum(i => i.EquipmentItem.LoyaltyPoints)}");
            return(builder.ToString());
        }
        public void AddFee_AddsFeeToFees_ForGivenFee()
        {
            // Arrange
            var         fee        = Substitute.For <IFee>();
            var         calculator = Substitute.For <IFeeCalculator>();
            VehicleFees sut        = CreateSut(calculator);

            // Act
            sut.AddFee(fee);

            // Assert
            IFee actual = sut.Fees.First();

            Assert.AreEqual(fee,
                            actual);
        }
示例#12
0
        public void Fees_CallsVehicleFees_WhenCalled()
        {
            // Arrange
            var expected = new IFee[0];
            var fees     = Substitute.For <IVehicleFees>();

            fees.Fees.Returns(expected);
            var sut = new TestBaseVehilce(fees,
                                          DefaultId,
                                          DefaultWeightInKilogram);

            // Act
            IEnumerable <IFee> actual = sut.Fees;

            // Assert
            Assert.AreEqual(expected,
                            actual);
        }
 public abstract decimal CalculateRentalPrice(int days, IFee fee);
示例#14
0
 public bool ContainsFee(IFee fee)
 {
     return(VehicleFees.ContainsFee(fee));
 }
示例#15
0
 public void AddFee(IFee fee)
 {
     VehicleFees.AddFee(fee);
 }
示例#16
0
 public void Release(IFee fee)
 {
 }
示例#17
0
 public bool ContainsFee(IFee fee)
 {
     return(m_Fees.Contains(fee));
 }
示例#18
0
 public void RemoveFee(IFee fee)
 {
     m_Fees.Remove(fee);
 }
 public FeeAlreadyAddedException(IFee fee)
 {
     Fee = fee;
 }
示例#20
0
 public override decimal CalculateRentalPrice(int days, IFee fee)
 {
     return(fee.OneTime + fee.Premium * days);
 }
示例#21
0
 public FeeType(int id, string name, IFee fee) : base(id, name)
 {
     _fee = fee;
 }
 public void RemoveFee(IProcessExecutionContext executionContext, IWorkSession session, IFee fee, decimal quantity = 1)
 {
     throw new NotImplementedException();
 }
        public void AddFee(IProcessExecutionContext executionContext, IWorkSession session, IFee fee, decimal quantity = 1)
        {
            try
            {
                // check to see if the related fee is already in the list. If so we will update that item rather than create
                // a new one.
                var transactionFee = FeeList.Where(r => r.Fee.Id == fee.Id).FirstOrDefault();

                if (transactionFee is null)
                {
                    var transactionFeeRecord = DataConnector.CreateTransactionFee(
                        executionContext.DataService,
                        Transaction,
                        fee as IRecordPointer <Guid>,
                        fee.Name,
                        quantity);

                    transactionFee = new TransactionFee(transactionFeeRecord, fee);
                    FeeList.Add(transactionFee);
                }
                else
                {
                    transactionFee.IncrementQuantity(quantity);
                }

                var priceCalculator = PriceCalculatorFactory.CreatePriceCalculator(executionContext, session, Transaction);
                transactionFee.CalculatePrice(executionContext, priceCalculator);

                DataConnector.UpdateTransactionFee(executionContext.DataService, transactionFee);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public decimal GetRentalPrice(IFee fee)
 {
     return(EquipmentItem.CalculateRentalPrice(RentalPeriod, fee));
 }
示例#25
0
 public decimal CalculateUnitPrice(IProcessExecutionContext executionContext, IFee fee, decimal quantity)
 {
     return(0);
 }
示例#26
0
 public SmartFeeType(string name, int value, IFee fee) : base(name, value)
 {
     _fee = fee;
 }