public async Task <LoanDetailModel> CreateLoanDetail(LoanDetailModel loanDetailModel, string username) { var loan = await this._loanRepository.GetAsync(loanDetailModel.LoanId); var lastLoanDetail = await this._loanDetailRepository.FindLastLoanDetail(loanDetailModel.LoanId); var loanDetail = new LoanDetail() { LoanId = loanDetailModel.LoanId, Installment = lastLoanDetail.Installment + 1, Month = lastLoanDetail.Month.AddMonths(1), MonthlyInterest = lastLoanDetail.InterestType == InterestType.CompoundInterest ? lastLoanDetail.Balance * loan.Interest / 100 : loan.CapitalOutstanding * loan.Interest / 100, Balance = lastLoanDetail.InterestType == InterestType.CompoundInterest ? lastLoanDetail.Balance + lastLoanDetail.Balance * loan.Interest / 100 : loan.CapitalOutstanding + loan.CapitalOutstanding * loan.Interest / 100, InterestType = InterestType.SimpleInterest, CreatedBy = username, CreatedOn = DateTime.Now }; var result = await this._loanDetailRepository.AddAsyn(loanDetail); loanDetailModel.Id = result.Id; loanDetailModel.Installment = result.Installment; loanDetailModel.Month = result.Month; loanDetailModel.MonthlyInterest = result.MonthlyInterest; loanDetailModel.Balance = result.Balance; loanDetailModel.InterestType = result.InterestType; return(loanDetailModel); }
private InputParameters GetDummyInput(LoanDetailModel loanDetail) { InputParameters inputs = new InputParameters() { RevolUtil = 1, AllUtil = 1, AnnualIncJoint = 1, DtiJoint = 1, IntRate = 1, MthsSinceLastRecord = 3, TotalRecPrncp = 5 }; return(inputs); }
private InputParameters GetInputParameter(LoanDetailModel loanDetail) { InputParameters inputs = new InputParameters() { RevolUtil = loanDetail.revolUtil, AllUtil = loanDetail.allUtil, AnnualIncJoint = loanDetail.annualIncJoint, DtiJoint = loanDetail.dtiJoin, IntRate = loanDetail.intRate, LoanAmnt = loanDetail.loanAmnt, MthsSinceLastRecord = loanDetail.mthsSinceLastRecod, TotalRecPrncp = loanDetail.totalRecPrncp }; return(inputs); }
// Details about a specific loan public IActionResult Detail(int id) { var loan = _loanService.GetFromID(id); var timeSinceLoaned = _feeService.DaysLoaned(id); var model = new LoanDetailModel(); model.ID = id; model.BookTitle = _loanService.GetBookTitle(id); model.MemberName = _loanService.GetMemberName(id); model.Checkout = loan.Checkout; model.Returned = loan.Returned; model.MemberID = _memberService.GetIDFromLoan(loan); model.TimeSpan = timeSinceLoaned.ToString("%d"); return(View(model)); }
public ActionResult Index(LoanDetailModel loanDetail) { if (ModelState.IsValid) { var client = GetAuthenticatedClient(); var inputs = GetInputParameter(loanDetail); var results = client.LoanPredictService(inputs); double?loanScore = null; if (results != null) { loanScore = results.OutputParameters.LoanScore; } ViewBag.loanprediction = WillLoanPayOff(loanScore); return(View()); } else { return(View(loanDetail)); } }
public void Create(LoanDetailModel modelToCreate) { try { using (OracleConnection connection = new OracleConnection()) { connection.ConnectionString = ConfigurationManager.ConnectionStrings["ORACLE"].ConnectionString; connection.Open(); OracleDynamicParameters parameters = new OracleDynamicParameters(); parameters.Add("SecurityId", modelToCreate.SecurityId); parameters.Add("DateOfLoan", modelToCreate.DateOfLoan); parameters.Add("AccountType", modelToCreate.AccountType); parameters.Add("LoanQty", modelToCreate.LoanQty); int affectedRows = connection.Execute(sql: "SPINSERTTEMPDATA", param: parameters, commandType: CommandType.StoredProcedure); } } catch (Exception ex) { throw ex; } }
public List <LoanDetailModel> Retrieve(WebApiConfigModel configurations, int securityId) { try { if (configurations.ConnectionStringId.Equals("oracle", StringComparison.CurrentCultureIgnoreCase)) { using (OracleConnection connection = new OracleConnection()) { connection.ConnectionString = ConfigurationManager.ConnectionStrings["ORACLE"].ConnectionString; connection.Open(); OracleDynamicParameters parameters = new OracleDynamicParameters(); parameters.Add("SecurityId", securityId, dbType: OracleDbType.Int32, direction: ParameterDirection.Input); parameters.Add("RC", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); var resultSet = connection.Query(sql: configurations.ObjectToRetrieveData, param: parameters, commandType: CommandType.StoredProcedure); if (resultSet != null) { List <LoanDetailModel> loanDetails = new List <LoanDetailModel>(); foreach (var result in resultSet) { LoanDetailModel retrievedModel = new LoanDetailModel(); retrievedModel.AccountType = result.ACCNT; retrievedModel.SecurityId = Convert.ToInt32(result.SEC_ID); retrievedModel.DateOfLoan = result.DATE_OF_LOAN; loanDetails.Add(retrievedModel); } return(loanDetails); } else { return(null); } } } else if (configurations.ConnectionStringId.Equals("sqlserver", StringComparison.CurrentCultureIgnoreCase)) { using (SqlConnection connection = new SqlConnection()) { connection.ConnectionString = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString; connection.Open(); return(connection.Query <LoanDetailModel>(sql: configurations.ObjectToRetrieveData, param: new { SecurityId = securityId }, commandType: CommandType.StoredProcedure).ToList()); } } else if (configurations.ConnectionStringId.Equals("oracle,sqlserver", StringComparison.CurrentCultureIgnoreCase)) { var oracleResultSet = (dynamic)null; List <LoanDetailModel> sqlServerResultSet = new List <LoanDetailModel>(); using (OracleConnection connection = new OracleConnection()) { connection.ConnectionString = ConfigurationManager.ConnectionStrings["ORACLE"].ConnectionString; connection.Open(); OracleDynamicParameters parameters = new OracleDynamicParameters(); parameters.Add("SecurityId", securityId); parameters.Add("RC", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); oracleResultSet = connection.Query(sql: configurations.ObjectToRetrieveData, param: parameters, commandType: CommandType.StoredProcedure); } using (SqlConnection connection = new SqlConnection()) { connection.ConnectionString = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString; connection.Open(); sqlServerResultSet = connection.Query <LoanDetailModel>(sql: configurations.ObjectToRetrieveData, param: new { SecurityId = securityId }, commandType: CommandType.StoredProcedure).ToList(); } if (oracleResultSet == null) { return(sqlServerResultSet); } else { List <LoanDetailModel> loanDetails = new List <LoanDetailModel>(); List <LoanDetailModel> mergedLoanDetails = new List <LoanDetailModel>(); foreach (var result in oracleResultSet) { LoanDetailModel retrievedModel = new LoanDetailModel(); retrievedModel.AccountType = result.ACCNT; retrievedModel.SecurityId = Convert.ToInt32(result.SEC_ID); retrievedModel.DateOfLoan = result.DATE_OF_LOAN; loanDetails.Add(retrievedModel); } for (int i = 0; i < loanDetails.Count; i++) { for (int j = i; j <= sqlServerResultSet.Count; j++) { if (loanDetails[j].AccountType.Equals("A", StringComparison.InvariantCultureIgnoreCase)) { loanDetails[j].LoanQty = (sqlServerResultSet[j].LoanQty / 100) * 5; } if (loanDetails[j].AccountType.Equals("B", StringComparison.InvariantCultureIgnoreCase)) { loanDetails[j].LoanQty = (sqlServerResultSet[j].LoanQty / 100) * 7; } if (loanDetails[j].AccountType.Equals("C", StringComparison.InvariantCultureIgnoreCase)) { loanDetails[j].LoanQty = (sqlServerResultSet[j].LoanQty / 100) * 7.5; } break; } mergedLoanDetails.Add(loanDetails[i]); } return(mergedLoanDetails); } } return(null); } catch (Exception ex) { throw ex; } }
public async Task <LoanDetailModel> UpdateLoanDetail(LoanDetailModel loanDetailModel, string username) { var _existingLoan = this._loanRepository.GetAllIncluding(e => e.LoanDetails).Where(x => x.Id == loanDetailModel.LoanId).FirstOrDefault(); var _existingLoanDetail = _existingLoan.LoanDetails.FirstOrDefault(x => x.Id == loanDetailModel.Id); if (loanDetailModel.InterestType == InterestType.SimpleInterest) { if (_existingLoanDetail.Paid == null) { _existingLoanDetail.Balance -= loanDetailModel.Paid.Value; } else { _existingLoanDetail.Balance += _existingLoanDetail.Paid.Value; _existingLoanDetail.Balance -= loanDetailModel.Paid.Value; } } _existingLoanDetail.Paid = loanDetailModel.Paid; _existingLoanDetail.LatePaid = loanDetailModel.LatePaid; _existingLoanDetail.PaidDate = loanDetailModel.PaidDate; _existingLoanDetail.UpdatedBy = username; _existingLoanDetail.UpdatedOn = DateTime.Now; if (loanDetailModel.CapitalPaid != null && loanDetailModel.CapitalPaid > 0) { if (loanDetailModel.InterestType == InterestType.SimpleInterest) { _existingLoan.UpdatedBy = username; _existingLoan.UpdatedOn = DateTime.Now; if (_existingLoanDetail.CapitalPaid == null) { _existingLoanDetail.Balance -= loanDetailModel.CapitalPaid.Value; _existingLoan.CapitalOutstanding -= loanDetailModel.CapitalPaid.Value; } else { _existingLoanDetail.Balance += _existingLoanDetail.CapitalPaid.Value; _existingLoanDetail.Balance -= loanDetailModel.CapitalPaid.Value; _existingLoan.CapitalOutstanding += _existingLoanDetail.CapitalPaid.Value; _existingLoan.CapitalOutstanding -= loanDetailModel.CapitalPaid.Value; } _existingLoanDetail.CapitalPaid = loanDetailModel.CapitalPaid; } } var _futureLoanDetails = _existingLoan.LoanDetails.Where(x => x.Installment > _existingLoanDetail.Installment).OrderBy(o => o.Installment); var _previousBalance = _existingLoanDetail.Balance; var _previousLoanDetail = _existingLoanDetail; foreach (var _futureLoanDetail in _futureLoanDetails) { if (_existingLoanDetail.InterestType == InterestType.SimpleInterest && _existingLoanDetail.CapitalPaid != null) { _futureLoanDetail.MonthlyInterest = _existingLoan.CapitalOutstanding * _existingLoan.Interest / 100; _futureLoanDetail.Balance = _previousBalance + _futureLoanDetail.MonthlyInterest; _futureLoanDetail.InterestType = InterestType.SimpleInterest; } else if (_futureLoanDetail.InterestType == InterestType.SimpleInterest && _previousLoanDetail.InterestType == InterestType.SimpleInterest) { _futureLoanDetail.MonthlyInterest = _existingLoan.CapitalOutstanding * _existingLoan.Interest / 100; _futureLoanDetail.Balance = _previousBalance + _futureLoanDetail.MonthlyInterest; _futureLoanDetail.InterestType = InterestType.SimpleInterest; } _previousBalance = _futureLoanDetail.Balance; _previousLoanDetail = _futureLoanDetail; } var result = await this._loanRepository.UpdateAsyn(_existingLoan, loanDetailModel.LoanId); loanDetailModel.Balance = _existingLoanDetail.Balance; return(loanDetailModel); }
public async Task <ActionResult> CreatLoanDetail(LoanDetailModel loanDetailModel) { var result = await this._loanLoanService.CreateLoanDetail(loanDetailModel, this.Username); return(Ok(result)); }