public ActionResult Create([Bind(Include = "ID,CreditAmount,NumberOfMonths,TypeID")] CreditApplication creditApplication) { if (ModelState.IsValid) { HttpPostedFileBase file = Request.Files["ScannedDocument"]; if (file.ContentLength != 0) { Image image = Image.FromStream(file.InputStream, true, true); creditApplication.ScannedDocument = imageToByteArray(image); } creditApplication.TotalRepayment = GetMonthRepayment(creditApplication.CreditAmount, creditApplication.NumberOfMonths, creditApplication.TypeID) * creditApplication.NumberOfMonths; creditApplication.MonthRepayment = GetMonthRepayment(creditApplication.CreditAmount, creditApplication.NumberOfMonths, creditApplication.TypeID); creditApplication.DateOfSubmission = DateTime.Now; creditApplication.State = null; db.CreditApplications.Add(creditApplication); db.Profiles.Single(p => p.Email == User.Identity.Name).CreditApplications.Add(creditApplication); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.Types = db.CreditTypes.ToList(); return(View(creditApplication)); }
public ActionResult Edit([Bind(Include = "ID,CreditAmount,State")] CreditApplication creditApplication) { if (ModelState.IsValid) { var creditApplicationEdit = db.CreditApplications.Single(c => c.ID == creditApplication.ID); creditApplicationEdit.State = creditApplication.State; db.Entry(creditApplicationEdit).State = EntityState.Modified; if (creditApplicationEdit.State == true) { var profile = db.Profiles .Single(p => p.CreditApplications .Any(c => c.ID == creditApplicationEdit.ID)); var toBankAccount = profile.BankAccounts .First(b => b.BankAccountType.Type == "PAY_ACC_FOR_YOUNG" || b.BankAccountType.Type == "PAY_ACC_FOR_ADULT"); var value = creditApplicationEdit.CreditAmount; toBankAccount.Balance += value; toBankAccount.AvailableFounds += value; Credit credit = new Credit { CreditAmount = creditApplicationEdit.CreditAmount, TotalRepayment = creditApplicationEdit.TotalRepayment, CurrentRepayment = 0m, MonthRepayment = creditApplicationEdit.MonthRepayment, NumberOfMonths = creditApplicationEdit.NumberOfMonths, NumberOfMonthsToEnd = creditApplicationEdit.NumberOfMonths, StartDate = DateTime.Now, IsPaidOff = false, Type = creditApplicationEdit.Type }; db.Credits.Add(credit); profile.Credits.Add(credit); Transaction transaction = new Transaction { ValueTo = value, ValueFrom = value, BalanceAfterTransactionUserTo = toBankAccount.Balance, CurrencyTo = toBankAccount.Currency, ToBankAccountNumber = toBankAccount.BankAccountNumber, FromBankAccountNumber = toBankAccount.BankAccountNumber, TransactionTypeID = db.TransactionTypes.Single(t => t.Type == "CREDIT_TRANSFER").ID, Description = $"Kredyt {credit.ID}", ReceiverName = profile.FullName, Date = DateTime.Now }; db.Transactions.Add(transaction); } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(creditApplication)); }
public async Task <IActionResult> Edit(int id, [Bind("CreditApplicationId,LoanAmount,APR,TermMonths,Product,ApplicantId,StatusId")] CreditApplication creditApplication) { if (id != creditApplication.CreditApplicationId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(creditApplication); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CreditApplicationExists(creditApplication.CreditApplicationId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["ApplicantId"] = new SelectList(_context.Applicants, "ApplicantId", "ApplicantId", creditApplication.ApplicantId); ViewData["StatusId"] = new SelectList(_context.Status, "StatusId", "StatusId", creditApplication.StatusId); return(View(creditApplication)); }
public bool ValidatorLogic(CreditApplication creditApplication) { if (creditApplication.PostalCode <= 0 || creditApplication.PostalCode > 99999) { return(false); } return(true); }
public ActionResult DeleteConfirmed(int id) { CreditApplication creditApplication = db.CreditApplications.Find(id); db.CreditApplications.Remove(creditApplication); db.SaveChanges(); return(RedirectToAction("Index")); }
public bool ValidatorLogic(CreditApplication model) { if (model.PostalCode <= 0 || model.PostalCode >= 9999) { return(false); } return(true); }
public bool ValidatorLogic(CreditApplication model) { if (DateTime.Now.AddYears(-18) < model.DOB) { return(false); } if (model.Salary < 1000) { return(false); } return(true); }
public (bool, IEnumerable <string>) PassAllValidations(CreditApplication creditApplication) { var errorMessages = new List <string>(); foreach (var validation in _validations) { if (!validation.ValidatorLogic(creditApplication)) { errorMessages.Add(validation.ErrorMessage); } } return(!errorMessages.Any(), errorMessages); }
public async Task <IActionResult> Create([Bind("CreditApplicationId,LoanAmount,APR,TermMonths,Product,ApplicantId,StatusId")] CreditApplication creditApplication) { if (ModelState.IsValid) { _context.Add(creditApplication); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["ApplicantId"] = new SelectList(_context.Applicants, "ApplicantId", "ApplicantId", creditApplication.ApplicantId); ViewData["StatusId"] = new SelectList(_context.Status, "StatusId", "StatusId", creditApplication.StatusId); return(View(creditApplication)); }
// GET: CreditApplications/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CreditApplication creditApplication = db.CreditApplications.Find(id); if (creditApplication == null) { return(HttpNotFound()); } return(View(creditApplication)); }
public void CreateTasksForNewCreditApplication(CreditApplication creditApplication) { ApprovalTask task = CreateApprovalTask(creditApplication, ApprovalType.CreditCommittee, TaskNames.ApprovalFromCreditCommittee); unitOfWork.GetRepository <ApprovalTask>().InsertOrUpdate(task); task = CreateApprovalTask(creditApplication, ApprovalType.RiskManagment, TaskNames.ApprovalFromRiskManager); unitOfWork.GetRepository <ApprovalTask>().InsertOrUpdate(task); task = CreateApprovalTask(creditApplication, ApprovalType.SecurityService, TaskNames.ApprovalFromSecurityService); unitOfWork.GetRepository <ApprovalTask>().InsertOrUpdate(task); unitOfWork.Commit(); }
public async Task <(bool, IEnumerable <string>)> PassAllValidations(CreditApplication model) { bool validationsPassed = true; List <string> errorMessages = new List <string>(); foreach (var validation in _validations) { if (!validation.ValidatorLogic(model)) { errorMessages.Add(validation.ErrorMessage); validationsPassed = false; } } return(validationsPassed, errorMessages); }
private ApprovalTask CreateApprovalTask(CreditApplication creditApplication, ApprovalType type, string name) { return(new ApprovalTask { CreditApplicationId = creditApplication.Id, ApprovalType = type, DispalyText = name, CreateDate = DateTime.Now, Status = TaskStatus.New, CompleteDate = null, Outcome = null, RejectionReason = null, UserId = null, }); }
public RepaymentChartViewModel GetRepaymentChartViewModel(Guid id) { RepaymentChartViewModel repaymentChartViewModel = new RepaymentChartViewModel(); CreditApplication creditApplication = unitOfWork.GetRepository <CreditApplication>().GetById(id); if (creditApplication.Client.ClientGroup == ClientGroup.PrivatePerson) { LegalPerson client = unitOfWork.GetRepository <LegalPerson>().GetById(creditApplication.ClientId); repaymentChartViewModel.ClientName = client.FirstName + " " + client.LastName; } else { repaymentChartViewModel.ClientName = unitOfWork.GetRepository <JuridicalPerson>().GetById(creditApplication.ClientId).Name; } CreditCategory creditCategory = creditApplication.CreditCategory; List <string> keys = new List <string>(); List <double> values = new List <double>(); double percent = creditCategory.Rate; double money = Convert.ToDouble(creditCategory.MaxAmount); int months = creditCategory.Span; if (creditCategory.RepaymentScheme == RepaymentScheme.Annuity) { double monthlyPercent = percent / 100 / 12; double monthlyPayment = money * monthlyPercent / (1 - Math.Pow(1 + monthlyPercent, (-1) * months)); for (int i = 0; i < months; i++) { values.Add(monthlyPayment); } } else { DateTime date = creditApplication.CompleteDate.Value; double fixedPayment = money / months; double variablePayment = 0; for (int i = 0; i < months; i++) { variablePayment = money * percent / 100 * 31 / 365; money -= fixedPayment; values.Add(fixedPayment + variablePayment); } } keys = GetKeys(creditApplication.CompleteDate.Value, months); repaymentChartViewModel.Keys = JsonConvert.SerializeObject(keys.ToArray()); repaymentChartViewModel.Values = JsonConvert.SerializeObject(values.ToArray()); return(repaymentChartViewModel); }
private ApplicationDetailsViewModel GetApplicationDetails(CreditApplication creditApplication) { ApplicationDetailsViewModel applicationDetailsModel = new ApplicationDetailsViewModel(); if (creditApplication.Client.ClientGroup == ClientGroup.PrivatePerson) { LegalPerson client = unitOfWork.GetRepository <LegalPerson>().GetById(creditApplication.ClientId); applicationDetailsModel.ClientName = client.FirstName + " " + client.LastName; } else { applicationDetailsModel.ClientName = unitOfWork.GetRepository <JuridicalPerson>().GetById(creditApplication.ClientId).Name; } AutoMapper.Mapper.Map(creditApplication, applicationDetailsModel); var contract = applicationDetailsModel.Attachments.FirstOrDefault(x => x.IsContract); if (contract != null) { applicationDetailsModel.Attachments.Remove(contract); applicationDetailsModel.Contract = contract; } return(applicationDetailsModel); }
public double GetCreditApproved(CreditApplication creditApplication) { //Complex logic return(creditApplication.Salary * 0.3); }
public double GetCreditApproved(CreditApplication creditApplication) { // have a different logic to calculate approval limit //we will hardcore to 50% of salary return(creditApplication.Salary * .5); }
public bool ValidatorLogic(CreditApplication model) { return(model.PostalCode > 0 && model.PostalCode < 99999); }
public double GetCreditApproved(CreditApplication creditApplication) { return(creditApplication.Salary * .5); }
public IActionResult CreditApplicationGET() { CreditApplication = new CreditApplication(); return(View(CreditApplication)); }
public IActionResult CreditApplication() { CreditModel = new CreditApplication(); return(View(CreditModel)); }
public double GetCreditApproved(CreditApplication creditApplication) { //less logic return(creditApplication.Salary * 0.5); }