Ejemplo n.º 1
0
        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
            //});
        }
Ejemplo n.º 2
0
        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
            }));
        }