/// <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 })); }
/// <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); }