示例#1
0
        /// <summary>
        /// Loads a viewmodel with the selected installments details
        /// </summary>
        /// <param name="installmentsIds">A list with all the desired installments id</param>
        /// <returns></returns>
        public BankSlipScheduleViewModel GetDetailsToSchedule(List <int> installmentsIds)
        {
            BankSlipScheduleViewModel scheduleViewModel = new BankSlipScheduleViewModel();

            scheduleViewModel.Installments  = _contractRepository.GetDelayedInstallments(installmentsIds);
            scheduleViewModel.DueDate       = DateTime.Now;
            scheduleViewModel.FeeValue      = 5;
            scheduleViewModel.InterestValue = 1;

            return(scheduleViewModel);
        }
        public IActionResult Schedule(ContractDetailViewModel installments, bool success = true)
        {
            List <int> installmentsIds = installments.DelayedInstallments.Where(x => x.IsSelected == true).Select(x => x.InstallmentId).ToList();
            string     currentId       = (TempData["currentId"]).ToString();

            ViewBag.CurrentId = currentId;

            if (!installmentsIds.Any())
            {
                return(RedirectToAction("Details", new { id = currentId, success = false }));
            }

            BankSlipScheduleViewModel bankSlipSchedule = _blContract.GetDetailsToSchedule(installmentsIds);

            ViewBag.Success = success;

            return(View(bankSlipSchedule));
        }
        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 }));
        }
示例#4
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);
        }