public HttpResponseMessage DeclineLoan(ApiModels.TrnLoanModel objLoanModel, String id) { try { var currentUser = from d in db.MstUsers where d.AspNetUserId == User.Identity.GetUserId() select d; var loan = from d in db.TrnLoans where d.Id == Convert.ToInt32(id) select d; if (loan.Any()) { if (loan.FirstOrDefault().IsSubmitted == false) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot decline unsubmitted loan application.")); } if (loan.FirstOrDefault().IsCancelled == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot decline cancelled loan application.")); } if (loan.FirstOrDefault().IsApproved == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot decline approved loan application.")); } if (loan.FirstOrDefault().IsDeclined == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "This loan application was already declcined.")); } if (loan.FirstOrDefault().IsClosed == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "This transaction is closed.")); } var declineLoan = loan.FirstOrDefault(); declineLoan.Status = "Declined"; declineLoan.Remarks = "Sorry but your loan application has been declined."; declineLoan.IsDeclined = true; declineLoan.IsLocked = true; declineLoan.UpdatedByUserId = currentUser.FirstOrDefault().Id; declineLoan.UpdatedDateTime = DateTime.Now; db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Loan transaction not found.")); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public HttpResponseMessage CancelLoan(String id, ApiModels.TrnLoanModel objLoanModel) { try { var currentUser = from d in db.MstUsers where d.AspNetUserId == User.Identity.GetUserId() select d; var loan = from d in db.TrnLoans where d.Id == Convert.ToInt32(id) select d; if (loan.Any()) { if (loan.FirstOrDefault().IsSubmitted == false) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "You cannot cancel unsubmitted loan application.")); } if (loan.FirstOrDefault().IsCancelled == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Your loan application was already cancelled.")); } if (loan.FirstOrDefault().IsDeclined == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "You cannot cancel declined loan application.")); } if (loan.FirstOrDefault().IsClosed == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "This transaction is closed.")); } var cancelLoan = loan.FirstOrDefault(); cancelLoan.IsCancelled = true; cancelLoan.IsClosed = true; cancelLoan.Status = "Cancelled"; cancelLoan.Remarks = "Your loan application has been cancelled."; db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Loan transaction not found.")); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public HttpResponseMessage CloseLoanTransaction(ApiModels.TrnLoanModel objLoanModel, String id) { try { var currentUser = from d in db.MstUsers where d.AspNetUserId == User.Identity.GetUserId() select d; var loan = from d in db.TrnLoans where d.Id == Convert.ToInt32(id) select d; if (loan.Any()) { if (loan.FirstOrDefault().IsSubmitted == false) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot close unsubmitted loan application.")); } if (loan.FirstOrDefault().IsCancelled == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot close cancelled loan application.")); } if (loan.FirstOrDefault().IsClosed == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "This transaction is already closed.")); } var closeLoanTransaction = loan.FirstOrDefault(); closeLoanTransaction.Status = "Closed"; closeLoanTransaction.Remarks = "Sorry. Your transaction has been closed due to some reasons: \n\n" + objLoanModel.Remarks; closeLoanTransaction.IsClosed = true; closeLoanTransaction.UpdatedByUserId = currentUser.FirstOrDefault().Id; closeLoanTransaction.UpdatedDateTime = DateTime.Now; db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Loan transaction not found.")); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public HttpResponseMessage SubmitLoan(String id, ApiModels.TrnLoanModel objLoanModel) { try { var currentUser = from d in db.MstUsers where d.AspNetUserId == User.Identity.GetUserId() select d; var loan = from d in db.TrnLoans where d.Id == Convert.ToInt32(id) select d; if (loan.Any()) { if (loan.FirstOrDefault().IsSubmitted == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Your loan application was already submitted. Please wait for an approval.")); } var submitLoan = loan.FirstOrDefault(); submitLoan.IsSubmitted = true; submitLoan.Status = "Submitted"; submitLoan.Remarks = "Your loan application has been successfully submitted for an approval. You will receive a text or an email once your loan application has been approved."; submitLoan.IsLocked = true; db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Loan transaction not found.")); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public HttpResponseMessage UpdateLoan(String id, ApiModels.TrnLoanModel objLoanModel) { try { var currentUser = from d in db.MstUsers where d.AspNetUserId == User.Identity.GetUserId() select d; var term = from d in db.MstTerms where d.Id == objLoanModel.TermId select d; if (term.Any() == false) { return(Request.CreateResponse(HttpStatusCode.NotFound, "Term not found.")); } if (objLoanModel.PrincipalAmount > term.FirstOrDefault().LimitAmount) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry, the customer cannot loan when the principal amount exceeds at " + term.FirstOrDefault().LimitAmount.ToString("#,##0.00"))); } Decimal principalAmount = objLoanModel.PrincipalAmount; Decimal interestAmount = principalAmount * (term.FirstOrDefault().MstInterest.Percentage / 100); Decimal loanAmount = principalAmount + interestAmount; Decimal netAmount = principalAmount - interestAmount; Decimal balanceAmount = principalAmount; Decimal amortizationAmount = term.FirstOrDefault().NumberOfMonths > 0 ? principalAmount / term.FirstOrDefault().NumberOfMonths : principalAmount; var loan = from d in db.TrnLoans where d.Id == Convert.ToInt32(id) select d; if (loan.Any()) { if (loan.FirstOrDefault().IsCancelled == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot change cancelled loan application.")); } if (loan.FirstOrDefault().IsApproved == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot change approved loan application.")); } if (loan.FirstOrDefault().IsDeclined == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot change declined loan application.")); } if (loan.FirstOrDefault().IsClosed == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "This transaction is closed.")); } if (loan.FirstOrDefault().IsLocked == true) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "This transaction is locked.")); } var submitLoan = loan.FirstOrDefault(); submitLoan.TermId = term.FirstOrDefault().Id; submitLoan.TermNumberOfMonths = term.FirstOrDefault().NumberOfMonths; submitLoan.PrincipalAmount = principalAmount; submitLoan.InterestId = term.FirstOrDefault().DefaultInterestId; submitLoan.InterestPercentage = term.FirstOrDefault().MstInterest.Percentage; submitLoan.InterestAmount = interestAmount; submitLoan.LoanAmount = loanAmount; submitLoan.NetAmount = netAmount; submitLoan.AmortizationAmount = amortizationAmount; submitLoan.BalanceAmount = balanceAmount; submitLoan.UpdatedByUserId = currentUser.FirstOrDefault().Id; submitLoan.UpdatedDateTime = DateTime.Now; db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Loan transaction not found.")); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public HttpResponseMessage CreateLoan(ApiModels.TrnLoanModel objLoanModel) { try { var currentUser = from d in db.MstUsers where d.AspNetUserId == User.Identity.GetUserId() select d; var loanNumber = "0000000001"; var lastLoan = from d in db.TrnLoans.OrderByDescending(d => d.Id) select d; if (lastLoan.Any()) { var lastLoanNumber = Convert.ToInt32(lastLoan.FirstOrDefault().LoanNumber) + 0000000001; loanNumber = LeadingZeroes(lastLoanNumber, 10); } var customer = from d in db.MstCustomers where d.Id == objLoanModel.CustomerId select d; if (customer.Any() == false) { return(Request.CreateResponse(HttpStatusCode.NotFound, "Customer not found.")); } var term = from d in db.MstTerms where d.Id == objLoanModel.TermId select d; if (term.Any() == false) { return(Request.CreateResponse(HttpStatusCode.NotFound, "Term not found.")); } if (objLoanModel.PrincipalAmount > term.FirstOrDefault().LimitAmount) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry, the customer cannot loan if the principal amount exceeds at " + term.FirstOrDefault().LimitAmount.ToString("#,##0.00"))); } var getLastLoan = from d in db.TrnLoans.OrderByDescending(d => d.Id) where d.CustomerId == customer.FirstOrDefault().Id && d.BalanceAmount > 0 && d.IsClosed == false select d; if (getLastLoan.Any()) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Cannot proceed if the customer has an open or pending previous transaction.")); } Decimal principalAmount = objLoanModel.PrincipalAmount; Decimal interestAmount = principalAmount * (term.FirstOrDefault().MstInterest.Percentage / 100); Decimal loanAmount = principalAmount + interestAmount; Decimal netAmount = principalAmount - interestAmount; Decimal balanceAmount = principalAmount; Decimal amortizationAmount = term.FirstOrDefault().NumberOfMonths > 0 ? principalAmount / term.FirstOrDefault().NumberOfMonths : principalAmount; Data.TrnLoan newLoan = new Data.TrnLoan() { LoanNumber = loanNumber, LoanDate = DateTime.Today, ManualLoanNumber = loanNumber, CustomerId = customer.FirstOrDefault().Id, TermId = term.FirstOrDefault().Id, TermNumberOfMonths = term.FirstOrDefault().NumberOfMonths, PrincipalAmount = principalAmount, InterestId = term.FirstOrDefault().DefaultInterestId, InterestPercentage = term.FirstOrDefault().MstInterest.Percentage, InterestAmount = interestAmount, LoanAmount = loanAmount, NetAmount = netAmount, AmortizationAmount = amortizationAmount, PaidAmount = 0, PenaltyAmount = 0, BalanceAmount = balanceAmount, Remarks = "NA", Status = "Open", IsSubmitted = true, IsCancelled = false, IsApproved = false, IsDeclined = false, IsClosed = false, IsLocked = false, CreatedByUserId = currentUser.FirstOrDefault().Id, CreatedDateTime = DateTime.Now, UpdatedByUserId = currentUser.FirstOrDefault().Id, UpdatedDateTime = DateTime.Now }; db.TrnLoans.InsertOnSubmit(newLoan); db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.OK, newLoan.Id.ToString())); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }