Exemple #1
0
        public void GeneratingBankSlips()
        {
            List <int> installments = new List <int>();

            BCrediTest.Viewmodels.ContractDetailViewModel contractDetail = _bLContract.GetContractDetail("123");


            installments = contractDetail.DelayedInstallments.Select(x => x.InstallmentId).ToList();

            BCrediTest.Viewmodels.BankSlipScheduleViewModel detailsToSchedule = _bLContract.GetDetailsToSchedule(installments);

            detailsToSchedule.FeeValue      = 5;
            detailsToSchedule.InterestValue = 1;

            detailsToSchedule.DueDate = DateTime.Now.AddDays(2);

            BankSlip bankSlip = _bLContract.CreateBankSlip(detailsToSchedule, "123");


            if (bankSlip != null)
            {
                Assert.Pass();
            }
            else
            {
                Assert.Fail();
            }
        }
Exemple #2
0
        private async void SendEmailWithBankslip(BankSlip bankSlip, string contractId)
        {
            string   message  = string.Format("Id: {0}\nDue Date: {1}\nValue: {2}\nStatus: {3}", bankSlip.BankslipId, bankSlip.DueDate, string.Format("{0:C}", bankSlip.Value), bankSlip.Status);
            string   subject  = string.Format("Bank slip for contract #{0}", contractId);
            Contract contract = _contractRepository.GetContract(contractId);


            await _emailSender.SendEmailAsync(contract.CustomerEmail, subject, message);
        }
        public IActionResult Post([FromBody] OrderInputModel inputModel)
        {
            var paymentMethod = _paymentMethodService.GetById(inputModel.PaymentMethodId);
            var payment       = _mapper.Map <CreditCard>(inputModel.CreditCard) ?? BankSlip.Create() as Payment;
            var address       = _addressService.GetById(inputModel.AddressId);

            _orderService.ProcessOrder(User.Identity.Name, paymentMethod, payment, address, inputModel.CouponCode);

            return(Ok());
        }
        public void ShouldProcessOneBankSlipPayment()
        {
            var bankSlipProcessor = new BankSlipProcessor();

            var invoice   = new Invoice("Aurore", 200m);
            var bankslip  = new BankSlip(200m);
            var bankslips = new List <BankSlip> {
                bankslip
            };

            bankSlipProcessor.Process(bankslips, invoice);

            Assert.AreEqual(1, invoice.Payments.Count);
            Assert.AreEqual(200m, invoice.Payments.Sum(p => p.Value));
        }
        public IActionResult CreateSlip(BankSlipScheduleViewModel bankslipSchedule)
        {
            string currentId = (TempData["currentId"]).ToString();
            var    data      = _blContract.GetContractDetail(currentId);

            if (bankslipSchedule.DueDate.Date < DateTime.Now.Date)
            {
                return(RedirectToAction("Details", new { id = currentId, success = false }));
            }


            BankSlip bl = _blContract.CreateBankSlip(bankslipSchedule, currentId);

            if (bl == null)
            {
                return(RedirectToAction("Details", new { id = currentId, success = false }));
            }

            return(RedirectToAction("Details", new { id = currentId }));
        }
Exemple #6
0
        /// <summary>
        /// Creates a  bank slip for the given delayed  installments and contract and send it by email
        /// </summary>
        /// <param name="bankslipSchedule">Viewmodel containing all the data for generating the bank slip</param>
        /// <param name="contractId">Id of the related contract</param>
        public BankSlip CreateBankSlip(BankSlipScheduleViewModel bankslipSchedule, string contractId)
        {
            if (bankslipSchedule.DueDate < DateTime.Now)
            {
                return(null);
            }
            BankSlip bankSlip  = new BankSlip();
            decimal  baseValue = bankslipSchedule.Installments.Sum(x => x.Value);

            bankSlip.DueDate             = bankslipSchedule.DueDate;
            bankSlip.Value              += baseValue * (1 + (bankslipSchedule.FeeValue / 100));
            bankSlip.BankSlipInstallment = new List <BankSlipInstallment>();

            bankslipSchedule.Installments.ForEach(x =>
            {
                bankSlip.Value += x.Value * (decimal)Math.Pow((double)(bankslipSchedule.InterestValue / 100), x.DaysInDelay);
                bankSlip.BankSlipInstallment.Add(new BankSlipInstallment {
                    InstallmentId = x.InstallmentId
                });
            });

            bankSlip.Status = BankSlipStatus.Pending;

            bankSlip = _contractRepository.PersistBankSlip(bankSlip);

            if (bankSlip.BankslipId != 0)
            {
                try
                {
                    SendEmailWithBankslip(bankSlip, contractId);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                return(bankSlip);
            }
            return(null);
        }
 public BankSlip PersistBankSlip(BankSlip bankSlip)
 {
     _context.BankSlips.Add(bankSlip);
     _context.SaveChanges();
     return(bankSlip);
 }