public IActionResult GetInstallment(int txnId) { if (_context.CustomerLoanTxn.Find(txnId).IsPaid) { return(BadRequest()); } var data = _context.CustomerLoanTxn.Include(q => q.CustomerLoan).ThenInclude(q => q.Customer); var txnData = data.FirstOrDefault(q => q.TransactionId == txnId); var installmentsCount = _context.CustomerLoanTxn.Where(q => q.CustomerLoanId == txnData.CustomerLoanId).ToList().TakeWhile(q => q.TransactionId != txnId).Count(); InstalmentTxnVM installmentVM = new InstalmentTxnVM { InstallmentNo = installmentsCount + 1, TransactionId = txnId, LoanAmount = txnData.CustomerLoan.LoanAmount, InstallmentDate = txnData.InstallmentDate, InstallmentAmount = txnData.InstallmentAmount, CustomerLoanId = txnData.CustomerLoanId, CustomerName = txnData.CustomerLoan.Customer.Firstname + ' ' + txnData.CustomerLoan.Customer.Middlename + ' ' + txnData.CustomerLoan.Customer.Lastname }; return(Ok(installmentVM)); //return Ok(new { // transactionid = txnId, // loanamount = txnData.CustomerLoan.LoanAmount, // installmentdate = txnData.InstallmentDate, // installmentamount = txnData.InstallmentAmount, // customerloanid = txnData.CustomerLoanId, // customername = txnData.CustomerLoan.Customer.Firstname + ' ' + txnData.CustomerLoan.Customer.Middlename + ' ' + txnData.CustomerLoan.Customer.Lastname //}); }
public IActionResult MarkInstallmentPaid([FromBody] InstalmentTxnVM data) { if (data.PaidAmount <= 0) { return(BadRequest()); } //InstalmentTxnVM data = new InstalmentTxnVM(); //if (!string.IsNullOrEmpty(req)) //{ // data = JsonConvert.DeserializeObject<InstalmentTxnVM>(req); //} var currentUser = HttpContext.User; Int32 userId = Convert.ToInt32(currentUser.Claims.FirstOrDefault(c => c.Type == "user_id").Value); bool isPrePay = false; bool isLatepay = false; decimal newInstallAmount = 0; bool IsFullpayment = true; CustomerLoanTxn txnData = _context.CustomerLoanTxn.Find(data.TransactionId); if (DateTime.Now.Date < txnData.InstallmentDate.Date) { isPrePay = true; } else if (DateTime.Now.Date > txnData.InstallmentDate.Date) { isLatepay = true; } if (data.PaidAmount < data.InstallmentAmount) { IsFullpayment = false; decimal remainAmnt = data.InstallmentAmount - data.PaidAmount; int unpaidInstallments = _context.CustomerLoanTxn.Where(q => q.CustomerLoanId == data.CustomerLoanId && q.IsPaid == false).Count(); newInstallAmount = data.InstallmentAmount + (remainAmnt / unpaidInstallments); } txnData.BankName = data.BankName; txnData.ChequeNo = data.ChequeNo; txnData.CreatedBy = userId; txnData.CreatedDate = DateTime.Now; txnData.IsPaid = true; txnData.IsLatePay = isLatepay; txnData.IsPrePay = isPrePay; txnData.PaidAmount = data.PaidAmount; txnData.PaidDate = DateTime.Now; txnData.PaymentMethodId = data.PaymentMethodId; txnData.Remarks = data.Remarks; _context.Entry(txnData).State = EntityState.Modified; _context.SaveChanges(); int totalUnpaid = _context.CustomerLoanTxn.Where(q => q.CustomerLoanId == data.CustomerLoanId && q.IsPaid == false).Count(); if (totalUnpaid <= 0) { var objCustLoan = _context.CustomerLoan.Find(data.CustomerLoanId); objCustLoan.IsPaid = true; _context.Entry(objCustLoan).State = EntityState.Modified; _context.SaveChanges(); } if (!IsFullpayment) { List <int> ids = _context.CustomerLoanTxn.Where(q => q.CustomerLoanId == data.CustomerLoanId && q.IsPaid == false).Select(q => q.TransactionId).ToList(); var updateData = _context.CustomerLoanTxn.Where(q => ids.Contains(q.TransactionId)).ToList(); updateData.ForEach(q => q.InstallmentAmount = newInstallAmount); _context.SaveChanges(); } return(Ok(new { success = true })); }