public IActionResult PaymentDetail(string billNumber) { if (String.IsNullOrEmpty(billNumber)) { return(RedirectToAction("SearchPayment")); } var payable = _unitOfWork.BillPayablesRepository.Items .Include(x => x.Economic).Include(x => x.Fund).FirstOrDefault(b => b.BillNumber == billNumber); if (payable == null) { TempData["SearchNotFound"] = $"Bill Number {billNumber} was not found!"; return(RedirectToAction("SearchPayment")); } var payments = _unitOfWork.PaymentsRepository .Items.Where(p => p.BillPayable.Id == payable.Id).ToList(); var viewModel = new AddPaymentView { Payable = payable, BillNumber = billNumber, Payments = payments, }; return(View(viewModel)); }
private void UpdateModel(CreditViewModel model) { if (model == null) { MessageBoxWPF.Show("Выберите кредит!", "Сообщение.", MessageBoxButton.OK, MessageBoxImage.Information); return; } Payment modelPay = repository.SearchPayment(model.Id); if (modelPay == null) { MessageBoxWPF.Show("Кредит уже выплачен!", "Сообщение.", MessageBoxButton.OK, MessageBoxImage.Information); return; } AddPaymentView view = new AddPaymentView(modelPay, repository) { ShowInTaskbar = false }; view.ShowDialog(); if (view.DialogResult != true) { return; } bool flag = repository.UpdatePayment(modelPay); if (!flag) { MessageBoxWPF.Show(StringProject.ErrorUpdRecort, StringProject.ErrorCaption, MessageBoxButton.OK, MessageBoxImage.Error); return; } List <Payment> list = repository.GetPaymentsByIdCredit(model.Id).ToList(); if (list.All(x => x.Repay != false)) { ConditionCredit modelConditionCredit = new ConditionCredit { Data = DateTime.Now, IdCredit = model.Id, IdCondition = 2 // выплачен }; //Сохранение состояния кредита в БД repository.AddConditionCredit(modelConditionCredit); } model.RefreshModel(); }
public IActionResult AddPayment(AddPaymentView viewModel) { var payable = _unitOfWork.BillPayablesRepository .Items.FirstOrDefault(b => b.BillNumber == viewModel.BillNumber); var paymentMadeList = _unitOfWork.PaymentsRepository.Items.Where(x => x.BillPayable.Id == payable.Id).ToList(); decimal totalPayment = 0; foreach (var made in paymentMadeList) { totalPayment += made.Amount; } totalPayment += Convert.ToDecimal(viewModel.Amount); decimal amountBilled = payable.Amount; if (totalPayment > amountBilled) { TempData["PaymentError"] = "Amount payable cannot be more than outstanding bill."; return(RedirectToAction("PaymentDetail", new { billNumber = viewModel.BillNumber })); } decimal outstandingAmount = amountBilled - totalPayment; var payment = new Payment { TransactionDate = DateTime.Now.ToString("dd/MM/yyyy"), Amount = Convert.ToDecimal(viewModel.Amount), Description = viewModel.Description, BillPayable = payable, OutstandingAmount = outstandingAmount, }; _unitOfWork.PaymentsRepository.Insert(payment); _unitOfWork.SaveChanges(); return(RedirectToAction("PaymentDetail", new { billNumber = viewModel.BillNumber })); }