public LoanResponseViewModel Add(LoanRequestViewModel loan) { var loanEntity = _mapper.Map <Loan>(loan); var result = _loanBusiness.Add(loanEntity, loan.BookKey); return(_mapper.Map <LoanResponseViewModel>(result)); }
public ActionResult Edit(int?id) { LoanRequestViewModel vm = new LoanRequestViewModel(); try { Db db = new Db(DbServices.ConnectionString); if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Product product = ProductServices.Get(id.Value, db); Request request = RequestServices.Get(id.Value, db); LoanRequest loanRequest = LoanRequestServices.Get(id.Value, db); RefundableProduct refundableProduct = RefundableProductServices.Get(id.Value, db); if (product == null || request == null || loanRequest == null || refundableProduct == null) { return(HttpNotFound()); } // For Product //ViewBag.EmployeeList = new SelectList(EmployeeServices.List(db), "Id", "Id_Name", product.Employee); ViewBag.ProductTypeList = new SelectList(ProductTypeServices.List(db), "Id", "Name", product.ProductType); // For Request //We need to customise the droplist for two options ViewBag.BypassStatusList = new SelectList(BypassStatusServices.List(db).Where((c => (c.Id == 0 || c.Id == 2))), "Id", "Name"); EmployeeProductCalculatorFilter f = new EmployeeProductCalculatorFilter(); f.EmployeeId = product.Employee; f.ProductTypeId = (short)product.ProductType; f.Amount = (decimal)request.Amount; f.Period = (short)refundableProduct.PaymentPeriod; EmployeeProductCalculatorResult result = db.EmployeeProductCalculatorFirstOrDefault(f); if (result != null) { ViewBag.Calculations = result; } vm.RequestProduct = product; vm.Request = request; vm.LoanRequest = loanRequest; vm.RequestProductProductRefundableProduct = refundableProduct; } catch (CfException cfex) { TempData["Failure"] = cfex.ErrorDefinition.LocalizedMessage; } catch (Exception ex) { TempData["Failure"] = ex.Message; } return(View(vm)); }
public ActionResult <string> Post([FromBody] LoanRequestViewModel loan) { try { if (!ModelState.IsValid) { return(BadRequest(loan)); } var result = _loanServices.Add(loan); if (result.ValidationResult.Errors.Any()) { return(AddValidationErrors(result.ValidationResult.Errors)); } return(Ok(Labels.Success)); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return(new StatusCodeResult(500)); } }
public ActionResult Edit(LoanRequestViewModel model) { Db db = new Db(DbServices.ConnectionString); if (ModelState.IsValid) { try { EmployeeProductCalculatorFilter f = new EmployeeProductCalculatorFilter(); f.EmployeeId = model.RequestProduct.Employee; f.ProductTypeId = (short)model.RequestProduct.ProductType; f.Amount = (decimal)model.Request.Amount; f.Period = (short)model.RequestProductProductRefundableProduct.PaymentPeriod; List <EmployeeProductCalculatorResult> result = db.EmployeeProductCalculator(f); if (result.Count > 0) { model.RequestProductProductRefundableProduct.NetAmount = result[0].NetAmount.Value; model.RequestProductProductRefundableProduct.ProfitAmount = result[0].ProfitAmount.Value; model.RequestProductProductRefundableProduct.Installment = result[0].Installment.Value; } // 1- Add Prouct // set the Amount of the Produt the same as Request //model.RequestProduct.Amount = model.Request.Amount; ProductServices.Update(CurrentUser.Id, model.RequestProduct, db); ProductServices.Update(CurrentUser.Id, model.RequestProduct, db); //2-Add Request //model.Request.Product = model.RequestProduct.Id; // model.Request.RequestStatus = (int)RequestStatusEnum.New; //model.Request.Cost = 5; RequestServices.Update(CurrentUser.Id, model.Request, db); //3-Add LoanRequest //model.LoanRequest.Request = model.RequestProduct.Id; LoanRequestServices.Update(CurrentUser.Id, model.LoanRequest, db); //4- Add RefundableProduct //model.RequestProductProductRefundableProduct.Product = model.RequestProduct.Id; RefundableProductServices.Update(CurrentUser.Id, model.RequestProductProductRefundableProduct, db); TempData["Success"] = ResourceServices.GetString(Cf.Data.Resources.ResourceBase.Culture, "UI", "UpdateConfirmed"); return(RedirectToAction("Index", "LoanRequest")); } catch (CfException cfex) { TempData["Failure"] = cfex.ErrorDefinition.LocalizedMessage; } catch (Exception ex) { TempData["Failure"] = ex.Message; } } // For Product ViewBag.EmployeeList = new SelectList(EmployeeServices.List(db), "Id", "FirstName", model.RequestProduct.Employee); ViewBag.ProductTypeList = new SelectList(ProductTypeServices.List(db), "Id", "Name", model.RequestProduct.ProductType); // For Request ViewBag.BypassStatusList = new SelectList(BypassStatusServices.List(db), "Id", "Name", model.Request.BypassStatus); ViewBag.ProductList = new SelectList(ProductServices.List(db), "Id", "Notes", model.Request.Product); ViewBag.RequestStatusList = new SelectList(RequestStatusServices.List(db), "Id", "Name", model.Request.RequestStatus); return(View(model)); }
public ActionResult Create(LoanRequestViewModel model) { int productId = 0; try { Db db = new Db(DbServices.ConnectionString); if (!(db.Connection.State == ConnectionState.Open)) { db.Connection.Open(); } db.Transaction = db.Connection.BeginTransaction(); if (ModelState.IsValid) { try { EmployeeProductCalculatorFilter f = new EmployeeProductCalculatorFilter(); f.EmployeeId = model.RequestProduct.Employee; f.ProductTypeId = (short)model.RequestProduct.ProductType; f.Amount = (decimal)model.Request.Amount; f.Period = (short)model.RequestProductProductRefundableProduct.PaymentPeriod; List <EmployeeProductCalculatorResult> result = db.EmployeeProductCalculator(f); if (result.Count > 0) { model.RequestProductProductRefundableProduct.NetAmount = result[0].NetAmount.Value; model.RequestProductProductRefundableProduct.ProfitAmount = result[0].ProfitAmount.Value; model.RequestProductProductRefundableProduct.Installment = result[0].Installment.Value; } // 1- Add Prouct // set the Amount of the Produt the same as Request model.RequestProduct.Amount = model.Request.Amount; Product p = ProductServices.Insert(CurrentUser.Id, model.RequestProduct, db); productId = p.Id; //2-Add Request model.Request.Product = p.Id; model.Request.RequestStatus = (int)RequestStatusEnum.New; model.Request.Cost = 5; Request r = RequestServices.Insert(CurrentUser.Id, model.Request, db); //3-Add LoanRequest model.LoanRequest.Request = p.Id; LoanRequestServices.Insert(CurrentUser.Id, model.LoanRequest, db); //4- Add RefundableProduct model.RequestProductProductRefundableProduct.Product = p.Id; RefundableProductServices.Insert(CurrentUser.Id, model.RequestProductProductRefundableProduct, db); TempData["Success"] = ResourceServices.GetString(Cf.Data.Resources.ResourceBase.Culture, "UI", "InsertConfirmed"); } catch (CfException cfex) { TempData["Failure"] = cfex.ErrorDefinition.LocalizedMessage; } catch (Exception ex) { TempData["Failure"] = ex.Message; } } if (db.Transaction != null) { db.Transaction.Commit(); } return(RedirectToAction("Details", new { id = productId })); } catch (CfException cfex) { TempData["Failure"] = cfex.ErrorDefinition.LocalizedMessage; } catch (Exception ex) { TempData["Failure"] = ex.Message; } return(View()); }
public async Task <IActionResult> Post([FromBody] LoanRequestViewModel requestObject) { try { if (requestObject == null) { arrError.Add("No data found!"); } if (string.IsNullOrEmpty(requestObject.name)) { arrError.Add("Empty Name!"); } if (string.IsNullOrEmpty(requestObject.cpf)) { arrError.Add("Empty CPF!"); } if (requestObject.terms <= 0) { arrError.Add("Invalid Terms!"); } if (requestObject.income <= 0) { arrError.Add("Invalid Income!"); } if (requestObject.birthDate == null || requestObject.birthDate == DateTime.MinValue) { arrError.Add("Invalid BirthDate!"); } var lstTerms = await termsService.GetByFilterAsync(t => t.Id == t.Id); var objTerms = (lstTerms.Where(t => t.Term == Convert.ToInt32(requestObject.terms)).FirstOrDefault() != null ? lstTerms.Where(t => t.Term == Convert.ToInt32(requestObject.terms)).FirstOrDefault() : null); if (objTerms == null || string.IsNullOrEmpty(objTerms.Id)) { arrError.Add($"Invalid Term. It can be: {string.Join(",", lstTerms.Select(t => t.Term))} !"); } if (arrError.Count > 0) { return(BadRequest(new { errors = arrError })); } #region Customer object var cpfParam = requestObject.cpf.Replace(".", "").Replace("-", "").Replace("/", "").Replace(@"\", ""); var objCustomer = new Customer { CpfCnpj = cpfParam, Name = requestObject.name, BirthDate = Convert.ToDateTime(requestObject.birthDate.ToString()), Modificado = DateTime.Now }; var objCustomerExist = await customerService.GetByFilterAsync(c => c.CpfCnpj == cpfParam); if (objCustomerExist != null && objCustomerExist.ToList().Count > 0) { objCustomer.Id = objCustomerExist.FirstOrDefault().Id; objCustomer.StatusRow = "U"; //Update objCustomer.IdUserUpdate = -1; //System customerService.Put <CustomerValidator>(objCustomer); } else { objCustomer.Id = Customer.GetNewId(); objCustomer.StatusRow = "I"; //Insert objCustomer.IdUserInsert = 1; customerService.Post <CustomerValidator>(objCustomer); } #endregion Customer object var loanRequestId = LoanRequest.GetNewId(); #region Request object var objLoanRequest = new LoanRequest { Id = loanRequestId, IdCustomer = objCustomer.Id, VlAmout = Convert.ToDecimal(requestObject.amount), VlIncome = Convert.ToDecimal(requestObject.income), IdTerms = objTerms.Id, Modificado = DateTime.Now, StatusRow = "I", //Insert IdUserInsert = -1, //System }; loanRequestService.Post <LoanRequestValidator>(objLoanRequest); objLoanRequest.Customer = objCustomer; objLoanRequest.Terms = objTerms; #endregion Request object #region Process object var loanProcessId = LoanProcess.GetNewId(); var objLoanProcess = new LoanProcess { Id = loanProcessId, IdLoanRequest = loanRequestId, IdStatus = Status.Processing, IdTerms = objTerms.Id, VlAmout = Convert.ToDecimal(requestObject.amount), Modificado = DateTime.Now, StatusRow = "I", //Insert IdUserInsert = -1, //System }; loanProcessService.Post <LoanProcessValidator>(objLoanProcess); objLoanProcess.LoanRequest = objLoanRequest; #endregion Process object var sqsMessage = new SQSHelpers(); sqsMessage.attibutes = new Dictionary <string, string> { { "Id", loanProcessId } }; var sendMessageOk = await sqsMessage.SendMessage(JsonConvert.SerializeObject(objLoanProcess), configuration["ProcessQueue"].ToString()); if (sendMessageOk != System.Net.HttpStatusCode.OK) { return(BadRequest("Temporary error. Try again!")); } return(new ObjectResult(new { Id = loanRequestId })); } catch (ArgumentNullException ex) { arrError.Add(ex); return(NotFound(new { errors = arrError })); } catch (Exception ex) { arrError.Add(ex); return(BadRequest(new { errors = arrError })); } }