public void TestDebitTransaction_50030()
        {
            //Arrange
            var dto = new AmountDTO {
                Amount = 50030
            };
            var customerDebit = new CustomerDebitDTO
            {
                Amount         = 50030,
                TransferAmount = 49980,
                Charge         = 50,
                DebitAmount    = 50030
            };

            //Act
            transSurchargeService.Setup(t => t.DebitTransaction(dto)).Returns(customerDebit);
            ITransSurChargeService moq = transSurchargeService.Object;
            var result = moq.DebitTransaction(dto);

            //Assert
            Assert.AreEqual(customerDebit.Amount, result.Amount);
            Assert.AreEqual(customerDebit.TransferAmount, result.TransferAmount);
            Assert.AreEqual(customerDebit.Charge, result.Charge);
            Assert.AreEqual(customerDebit.DebitAmount, result.DebitAmount);
        }
Пример #2
0
        public CustomerDebitDTO DebitTransaction(AmountDTO dto)
        {
            var charge         = _transSurChargeRepository.GetSurcharge(dto.Amount);
            var transferAmount = _transSurChargeRepository.GetTransferAmount(dto.Amount);

            if (charge.FeeAmount > dto.Amount)
            {
                throw new ArgumentException("The amount is too low to transfer");
            }

            if (charge == null)
            {
                throw new ArgumentNullException("Sorry! Something went wrong. Try again.");
            }

            var debitInfo = new CustomerDebitDTO
            {
                Amount         = transferAmount + charge.FeeAmount,
                TransferAmount = transferAmount,
                Charge         = charge.FeeAmount,
                DebitAmount    = transferAmount + charge.FeeAmount
            };

            return(debitInfo);
        }
        public CustomerTransferDTO TransferTransaction(AmountDTO dto)
        {
            var fee = _feesRepository.GetFee(dto.Amount);

            if (fee == null)
            {
                throw new ArgumentNullException("Sorry! Something went wrong. Try again.");
            }

            var transferInfo = new CustomerTransferDTO
            {
                TransferAmount = dto.Amount,
                ExpectedCharge = dto.Amount + fee.FeeAmount,
                Charge         = fee.FeeAmount
            };

            return(transferInfo);
        }
        public IActionResult Surcharge(AmountDTO amount)
        {
            try
            {
                var debit = _transSurChargeService.DebitTransaction(amount);

                return(Ok(new
                {
                    success = true,
                    message = "Your transfer was successfully",
                    data = debit
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(new
                {
                    success = false,
                    message = ex.Message,
                    data = new { }
                }));
            }
        }
Пример #5
0
        public IActionResult Transfer(AmountDTO amount)
        {
            try
            {
                var transactinFee = _calculateFeeService.TransferTransaction(amount);

                return(Ok(new
                {
                    success = true,
                    message = "Your transfer was successfully",
                    data = transactinFee
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(new
                {
                    success = false,
                    message = ex.Message,
                    data = new { }
                }));
            }
        }