private static void handleRabbitMQOurBank(LoanRequest loanRequest) { //SSN;CreditScore;Amount;Duration string msg = string.Format("{0};{1};{2};{3}", loanRequest.SSN, loanRequest.CreditScore, loanRequest.Amount, loanRequest.Duration); LoanBroker.Utility.HandleMessaging.SendMessage <string>(QUEUE_OUT, msg); }
public Quote CreateQuote(LoanRequest request) { // Validation _loanRequestValidator.ValidateAndThrow(request); // Get lenders with required balance var lenders = _lendersService.GetAll().Where(x => x.Balance >= request.Amount); if (lenders == null || !lenders.Any()) { throw new BusinessLogicException("No lenders found for the requested loan amount"); } // Get cheapest lender var lender = lenders.OrderBy(x => x.AnnualPercentageYield).First(); // Calculate monthly repayment var monthlyRepayment = _paymentsCalculator.GetMonthlyRepayments(request.Amount, lender.AnnualPercentageYield, request.Months); return(new Quote() { Id = new Random().Next(999), // In the real world, we could store quote and hence returning an id Amount = request.Amount, Months = request.Months, AnnualInterestRate = Math.Round(lender.AnnualPercentageYield * 100, 1), TotalRepayment = Math.Round(monthlyRepayment * request.Months, 2), MonthlyPayment = Math.Round(monthlyRepayment, 2), }); }
public bool SendMessage(EmailTemplateType type, Client client, LoanRequest loanRequest, string text = null) { var template = this.emailTemplatesService.GetByType(type); var body = template.Text; var subject = template.Subject; if (!string.IsNullOrEmpty(text)) { body = body.Replace("{text}", text); } subject = subject.Replace("{firstname}", client.FirstName); body = this.MassReplace( body, new Collection <KeyValuePair <string, string> > { new KeyValuePair <string, string>("{firstname}", client.FirstName), new KeyValuePair <string, string>("{lastname}", client.LastName), new KeyValuePair <string, string>("{time}", DateTime.Now.ToShortTimeString()), new KeyValuePair <string, string>("{date}", DateTime.Now.ToShortDateString()), new KeyValuePair <string, string>("{currentamount}", client.PrimaryAccount.Amount.ToString("C0")) }); body = body.Replace("{amount}", loanRequest.Amount.ToString()); body = body.Replace("{productname}", loanRequest.LoanProduct.Name); subject = subject.Replace("{lastname}", client.FirstName); return(this.SendMessage(subject, body, client.Email)); }
// GET: LoanRequests/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } LoanRequest loanRequest = db.LoanRequest.Find(id); if (loanRequest == null) { return(HttpNotFound()); } var loanApproved = db.LoanApproved.Include(l => l.LoanRequest).Include(l => l.User).Include(l => l.Lender).Include(l => l.Dealer).Include(l => l.Car); var loanApproved1 = loanApproved.FirstOrDefault(l => l.LoanRequest.loan_id == id); if (loanApproved1 == null) { ViewBag.print = "none"; } else { ViewBag.print = loanApproved1.status; } return(View(loanRequest)); }
public void NotifyAggregator(LoanRequest loanRequest, string corrId) { using (var connection = _factory.CreateConnection()) using (var channel = connection.CreateModel()) { LoanRequest newLoanRequest = new LoanRequest { ssn = loanRequest.ssn, count = loanRequest.banks.Count }; string jsonNormlizer = JsonConvert.SerializeObject(newLoanRequest, Formatting.Indented); Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine("[{0}] >> notify to {1}", DateTime.Now.ToString("HH:mm:ss"), Constants.AggregatorOutRoutingKey); channel.ExchangeDeclare(exchange: Constants.DirectExchangeName, type: Constants.DirectExhangeType); var props = channel.CreateBasicProperties(); props.CorrelationId = corrId; var body = Encoding.UTF8.GetBytes(jsonNormlizer); channel.BasicPublish(exchange: Constants.DirectExchangeName, routingKey: Constants.AggregatorOutRoutingKey, basicProperties: props, body: body); } }
public async Task <string> GetLoans(string phone) { var result = await _apiRequest.GetLoans(phone); var loan = await _dao.GetByCondition(c => c.Phone == phone); var loanRequest = new LoanRequest { Data = result, Date = DateTime.UtcNow }; if (loan == null) { loan = new ClientLoans { Phone = phone, Requests = new[] { loanRequest } } } ; else { loan.Requests.ToList().Add(loanRequest); } await _dao.Save(loan).ConfigureAwait(false); return(result); }
private static void handleRabbitMQJSONBank(LoanRequest loanRequest, string routingKey) { /* * String format from pdf: * string msg = "{\"ssn\":" + loanRequest.SSN + ",\"creditScore\":" + loanRequest.CreditScore.ToString() + * ",\"loanAmount\":" + loanRequest.Amount.ToString() + ",\"loanDuration\":" + loanRequest.Duration +" }"; * * but getting this from the bank: * * Exception: Something went wrong.Data should be sent like: { "ssn":1605789787,"loanAmount":10.0,"loanDuration":360,"rki":false} * Can not instantiate value of type[simple type, class dk.cphbusiness.si.banktemplate.JsonDTO.BankLoanDTO] from JSON String; no single-String constructor/factory method * */ //string msg = "{ \"ssn\":" + loanRequest.SSN // + ",\"loanAmount\":" + loanRequest.Amount.ToString(CultureInfo.CreateSpecificCulture("en-GB")) // + ",\"loanDuration\":" + loanRequest.Duration.ToString() // + ",\"rki\":false }"; //TODO: 18/12/2015 A java group says we have to send a json object... string msg = "{ \"ssn\":" + loanRequest.SSN.Replace("-", "") + ",\"creditScore\":" + loanRequest.CreditScore.ToString() + ",\"loanAmount\":" + loanRequest.Amount.ToString(CultureInfo.CreateSpecificCulture("en-GB")) + ",\"loanDuration\":" + loanRequest.Duration + " }"; Console.WriteLine("--> Sending " + msg + " to cphbusiness.bankJSON"); HandleMessaging.SendMessage("cphbusiness.bankJSON", routingKey, Queues.RABBITMQJSONBANK_OUT, msg, "fanout"); }
public static bool AddLoanRequest(LoanRequest request) { try { using (var context = new HackathonContext()) { context.LoanRequests.Add(request); var user = context.Users.FirstOrDefault(x => x.UserId == request.User.UserId); if (user != null) { user.CreditPoints += 100; context.Entry(user).State = EntityState.Modified; } context.SaveChanges(); return(true); } } catch (Exception) { //ignored } return(false); }
private void CheckApprovedByAllApproversStatus(LoanRequest loanRequest) { if (!loanRequest.RemainingApprovers.Any()) { loanRequest.Status = LoanRequestStatus.ApprovedByAllApprovers; } }
public ActionResult Create([Bind(Include = "Request, NetIncome, TotalDeduction")] LoanRequest loanRequest) { Db db = new Db(DbServices.ConnectionString); if (ModelState.IsValid) { try { LoanRequestServices.Insert(CurrentUser.Id, loanRequest, db); TempData["Success"] = ResourceServices.GetString(Cf.Data.Resources.ResourceBase.Culture, "UI", "InsertConfirmed"); return(RedirectToAction("Index")); } catch (CfException cfex) { TempData["Failure"] = cfex.ErrorDefinition.LocalizedMessage; } catch (Exception ex) { TempData["Failure"] = ex.Message; } } ViewBag.RequestList = new SelectList(RequestServices.List(db), "Product", "Attachment"); return(View(loanRequest)); }
public ActionResult Create([Bind(Include = "loan_id,lender_id,downpayment,loan_period,emi,user_address,id_proof_file,income_certificate_file,income_tax_return_file,address_proof_file,gnn,gnn_address,gnn_address_file")] LoanRequest loanRequest) { if (ModelState.IsValid) { var loanRequest1 = new LoanRequest() { u_id = Convert.ToInt32(Session["u_id"]), c_id = Convert.ToInt32(Session["c_id"]), d_id = Convert.ToInt32(Session["d_id"]), lender_id = loanRequest.lender_id, downpayment = loanRequest.downpayment, loan_period = loanRequest.loan_period, emi = loanRequest.emi, user_address = loanRequest.user_address, gnn = loanRequest.gnn, gnn_address = loanRequest.gnn_address, id_proof = SaveToPhysicalLocation(loanRequest.id_proof_file), income_certificate = SaveToPhysicalLocation(loanRequest.income_certificate_file), income_tax_return = SaveToPhysicalLocation(loanRequest.income_tax_return_file), address_proof = SaveToPhysicalLocation(loanRequest.address_proof_file), gnn_address_p = SaveToPhysicalLocation(loanRequest.gnn_address_file), }; db.LoanRequest.Add(loanRequest1); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.c_id = new SelectList(db.Car, "c_id", "car_manufacturer", loanRequest.c_id); ViewBag.d_id = new SelectList(db.Dealer, "d_id", "company_name", loanRequest.d_id); ViewBag.lender_id = new SelectList(db.Lender, "lender_id", "bankname", loanRequest.lender_id); ViewBag.u_id = new SelectList(db.User, "u_id", "firstname", loanRequest.u_id); return(View(loanRequest)); }
static void Main(string[] args) { LoanRequest loanRequest = new LoanRequest { LoanAmount = double.Parse(args[1]), Offers = ReadFile(args[0]) }; LoanResponse loanResponse = null; Controller controller = new Controller(); try { controller.ValidateRequest(loanRequest); loanResponse = controller.Calculate(loanRequest) as LoanResponse; } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } if (loanResponse != null) { CultureInfo culture = new CultureInfo(ConfigurationManager.AppSettings["DefaultCulture"]); Console.WriteLine("Requested amount: " + loanResponse.RequestedAmount.ToString("C", culture)); Console.WriteLine("Rate: " + loanResponse.Rate.ToString("P1")); Console.WriteLine("Monthly repayment: " + loanResponse.MounthlyRepayment.ToString("C2", culture)); Console.WriteLine("Total repayment: " + loanResponse.TotalRepayment.ToString("C2", culture)); } }
public IHttpActionResult Post(LoanRequest loanRequest) { var userId = Guid.NewGuid(); _command.Send(new ApplyForLoan() { //Apr = loanRequest.LoanDetails.Apr, //MonthlyPayment = loanRequest.LoanDetails.MonthlyCost, //LoanAmount = loanRequest.LoanDetails.LoanAmount, //Term = loanRequest.LoanDetails.Term, UserId = userId }); _command.Send(new UserRegister() { Title = loanRequest.UserDetails.Title, Firstname = loanRequest.UserDetails.Firstname, Lastname = loanRequest.UserDetails.Lastname, Email = loanRequest.UserDetails.Email, PhoneNumber = loanRequest.UserDetails.PhoneNumber, DoB = loanRequest.UserDetails.DoB, AnnualIncomeBeforeTax = loanRequest.FinancialDetails.AnnualIncomeBeforeTax, MonthlyMortgageContribution = loanRequest.FinancialDetails.MonthlyMortgageContribution, MonthlyRentContribution = loanRequest.FinancialDetails.MonthlyRentContribution, LoanReason = loanRequest.LoanReason.Reason, //EmploymentStatus = loanRequest.FinancialDetails.Employment.EmploymentStatus, UserId = userId }); //Implement Service to generate a ref number var quote = "Test"; return(Ok(new { LoanRed = quote })); }
private static void handleRabbitMQOurBank(LoanRequest loanRequest) { //SSN;CreditScore;Amount;Duration string msg = string.Format("{0};{1};{2};{3}", loanRequest.SSN, loanRequest.CreditScore, loanRequest.Amount, loanRequest.Duration); HandleMessaging.SendMessage <string>(Queues.RABBITMQOURBANK_IN, msg); }
public async Task <ActionResult <LoanRequest> > PostLoanRequest(LoanRequest loanRequest) { _context.LoanRequests.Add(loanRequest); await _context.SaveChangesAsync(); return(CreatedAtAction("GetLoanRequest", new { id = loanRequest.LoanRequestId }, loanRequest)); }
public string AddRequestAccountAve(Guid loanRequestId, RequestAccountAveDto requestAccountAveDto) { try { string accountCode = requestAccountAveDto.AccountCode; LoanRequestRepository repository = new LoanRequestRepository(); LoanRequest loanRequest = repository.ActiveContext.LoanRequests.FirstOrDefault(lr => lr.Id == loanRequestId); if (loanRequest == null) { return("this request with this Request no :" + requestAccountAveDto.ReqNo.ToString() + " is not there"); } Account account = repository.ActiveContext.BankAccounts.OfType <Account>().FirstOrDefault(a => a.Code == accountCode); if (account == null) { return("account is not found"); } RequestAccountAve requestAccountAve = (RequestAccountAve) new RequestAccountAve().InjectFrom <UnflatLoopValueInjection>(requestAccountAveDto); requestAccountAve.Id = Guid.NewGuid(); requestAccountAve.LoanRequest = loanRequest; requestAccountAve.Account = account; requestAccountAve.Average = GetAverageType(requestAccountAveDto.AverageId, repository); loanRequest.RequestAccountAves = new Collection <RequestAccountAve>(); loanRequest.RequestAccountAves.Add(requestAccountAve); repository.ActiveContext.SaveChanges(); return("record added successfully"); } catch (Exception exception) { return(exception.Message); } }
public async Task UpdateLoanRequest(RequestResult result, RequestPolicyResult?refused_policy, decimal amount, int?terms, string id) { LoanRequest loanRequest = new LoanRequest { id = id, status = RequestStatus.completed, result = result, refused_policy = refused_policy, amount = amount, terms = terms }; var request = new HttpRequestMessage(HttpMethod.Put, _loanURL + "/api/" + id); var json = JsonSerializer.Serialize(loanRequest); request.Content = new StringContent(json, Encoding.UTF8, "application/json"); var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); if (!response.IsSuccessStatusCode) { _logger.LogError("Error Loan: {Loan}", json); } }
public async Task <IActionResult> PutLoanRequest(int id, LoanRequest loanRequest) { if (id != loanRequest.LoanRequestId) { return(BadRequest()); } _context.Entry(loanRequest).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!LoanRequestExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public LoanRequestModel Reqest(LoanRequestModel loanRequestModel) { try { LoanRequest loanRequest = new LoanRequest(); loanRequest.DictionaryData = loanRequestModel.DictionaryData; loanRequest.LoanSupplied = loanRequestModel.LoanSupplied; loanRequest.FirstName = loanRequestModel.FirstName; loanRequest.LastName = loanRequestModel.LastName; loanRequest.LoanRequestrId = loanRequestModel.LoanRequestrId; var LoanIsExists = _context.LoanRequests.FirstOrDefault(l => l.LoanRequestrId == loanRequestModel.LoanRequestrId); if (LoanIsExists == null) { _context.LoanRequests.Add(loanRequest); _context.SaveChanges(); } Customer customer = _context.Customers.FirstOrDefault(c => c.CustomerId == loanRequestModel.LoanSupplied); if (customer == null) { throw new Exception("Custemer not exist"); } var listRule = _context.Rules.Where(item => item.CustomerId2.CustomerId == loanRequestModel.LoanSupplied).ToList(); return(_mapper.Map <LoanRequestModel> (loanRequest)); } catch (Exception e) { throw e; } }
private static void VerifyProfilePrerequisitesRuleCompleted(LoanRequest loanRequest) { if (loanRequest.Status != LoanRequestStatus.ProfilePrerequisitesAreVerified) { throw new WorkflowException("Loan Request should be verified by profile prerequisite rules first"); } }
public bool Process(LoanRequest loanRequest) { var processingStatus = default(bool); var validation = loanRequest != default(LoanRequest) && loanRequest.CustomerDetails != default(Customer) && loanRequest.AssetDetails != default(AssetDetail) && loanRequest.Amount <= MAX_PROCESSING_AMOUNT; if (validation) { processingStatus = true; Console.WriteLine("Loan Request Processed Internally ..."); } else { Console.WriteLine("Unable to process loan request internally ..."); Console.WriteLine("Sending the Loan Request to External and Partner Banks ..."); processingStatus = this.externalLoanRequestProcessor.ProcessExternal(loanRequest); Console.WriteLine("External Loan Request Processing Completed ..."); } return(processingStatus); }
public void Approve(LoanRequest loanRequest) { if (loanRequest.LoanAmount <= MaxLoanApproveAmount && loanRequest.PreviousRecord) { loanRequest.Approved = true; loanRequest.ApprovedBy = this; } }
public async Task Insert(LoanRequest loan) { var loanJSON = JsonSerializer.Serialize(loan); var item = Document.FromJson(loanJSON); await _table.PutItemAsync(item); }
public ActionResult DeleteConfirmed(int id) { LoanRequest loanRequest = db.LoanRequest.Find(id); db.LoanRequest.Remove(loanRequest); db.SaveChanges(); return(RedirectToAction("Index")); }
private static void handleWebServiceBank(LoanRequest loanRequest) { WebServiceBank.WebServiceBank webBank = new WebServiceBank.WebServiceBank(); decimal msg = webBank.ProcessLoanRequest(loanRequest.SSN, loanRequest.CreditScore, loanRequest.Amount, loanRequest.Duration); //TODO: Send loanrequest info aswell as decimal msg LoanBroker.Utility.HandleMessaging.SendMessage <decimal>("group1_bank_out", msg); }
public void UnsatisifiedLoanRequest() { var lender = new Lender("Bob", 900, 0.04); var request = new LoanRequest(1000, 36); request.AddLenderToLoan(lender); Assert.False(request.IsSatisfied(), "The lender does not have enough funds to satisfy the Request"); }
void MonthlyRepaymentAmount() { var lender = new Lender("Bob", 1000, 0.07); var request = new LoanRequest(1000, 36); request.AddLenderToLoan(lender); Assert.Equal(30.88, request.GetMonthlyRepaymentAmount()); }
public void SatisfiedLoanRequest() { var lender = new Lender("Bob", 1000, 0.04); var request = new LoanRequest(1000, 36); request.AddLenderToLoan(lender); Assert.True(request.IsSatisfied(), "The lender has enough funds to satisfy the Request."); }
public IActionResult Put(LoanRequest loanRequest) { var domainUser = _mapper.Map <Loan>(loanRequest); _loanService.ReturnBook(domainUser); return(Ok(loanRequest)); }
public void CreateConsumer() { var counter = 0; var connection = _factory.CreateConnection(); var channel = connection.CreateModel(); channel.ExchangeDeclare(exchange: "laurbaer_direct", type: Constants.DirectExhangeType); Dictionary <string, object> args = new Dictionary <string, object>(); args.Add("x-dead-letter-exchange", "dead_exchange"); var queueName = channel.QueueDeclare("laur_agg", false, false, false, args).QueueName; channel.QueueBind(queue: queueName, exchange: "laurbaer_direct", routingKey: "aggOut"); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { counter++; var body = ea.Body; var probs = ea.BasicProperties; var message = Encoding.UTF8.GetString(body); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("[{0}] << received on {1}", DateTime.Now.ToString("HH:mm:ss"), message); LoanRequest loanRequest = null; try { loanRequest = JsonConvert.DeserializeObject <LoanRequest>(message); } catch (JsonException ex) { Console.WriteLine(ex.Message); Console.WriteLine("Sending to Dead letter chan."); channel.BasicNack(ea.DeliveryTag, false, false); //Todo: Send to dead letter return; } if (probs.CorrelationId != null) { Console.WriteLine("Ack"); channel.BasicAck(ea.DeliveryTag, true); aggregators.Add(probs.CorrelationId, new BankQuoteAggregate(loanRequest.count, _messageRouter)); } else { Console.WriteLine(); Console.WriteLine("NoAck - " + ea.DeliveryTag); channel.BasicNack(ea.DeliveryTag, false, false); } }; channel.BasicConsume(queue: queueName, noAck: false, consumer: consumer); }
public string IsValid(LoanRequest loanRequest) { if (!loanRequest.LoanProduct.Requirements.NeedEarningsRecord) { return string.Empty; } return loanRequest.Client.PersonalDetails.EmploymentData.Salary >= loanRequest.LoanProduct.Requirements.MinSalary ? string.Empty : Error; }
public string IsValid(LoanRequest loanRequest) { if (!loanRequest.LoanProduct.Requirements.NeedEarningsRecord) { return string.Empty; } return loanRequest.Client.PersonalDetails.EmploymentData.HireDate <= DateTime.UtcNow.AddMonths(loanRequest.LoanProduct.Requirements.MinWorkOnLastJobInMonths) ? string.Empty : Error; }
public void ApproveLoanRequest(LoanRequest loanRequest, IUserContext userContext) { Contract.Requires<ArgumentNullException>(userContext.IsNotNull()); Contract.Requires<ArgumentNullException>(loanRequest.IsNotNull()); VerifyProfilePrerequisitesRuleCompleted(loanRequest); AddUserApprovers(loanRequest, userContext); this.CheckApprovedByAllApproversStatus(loanRequest); this.TakeLoan(loanRequest); this.gangsterBankUnitOfWork.LoanRequestsRepository.CreateOrUpdate(loanRequest); }
public string IsValid(LoanRequest loanRequest) { Contract.Requires<ArgumentNullException>(loanRequest.IsNotNull()); var list = this.rules.Select( rule => { var isValid = rule.IsValid(loanRequest); return isValid.ToLower(); }); list = list.Where(x => x != string.Empty); return string.Join(", ", list); }
private void TakeLoan(LoanRequest loanRequest) { if (loanRequest.Status != LoanRequestStatus.ApprovedByAllApprovers) { return; } loanRequest.Status = LoanRequestStatus.Approved; this.mailService.SendMessage(EmailTemplateType.ApproveCreditRequest, loanRequest.Client, loanRequest); TakenLoan takenLoan = CreateTakenLoanForClient(loanRequest); Account account = loanRequest.Client.PrimaryAccount; account.Amount += takenLoan.Amount; this.AddLoanPayments(takenLoan); this.gangsterBankUnitOfWork.ClientsRepository.CreateOrUpdate(loanRequest.Client); }
private void TryApproveAndTakeLoanOnCreation(LoanRequest loanRequest) { var result = this.CheckLoanRequestPrerequisiteRules(loanRequest); if (loanRequest.Status == LoanRequestStatus.Declined) { this.gangsterBankUnitOfWork.LoanRequestsRepository.CreateOrUpdate(loanRequest); throw new Exception(result); } this.CheckApprovedByAllApproversStatus(loanRequest); this.TakeLoan(loanRequest); }
public void DeclineLoanRequest(LoanRequest loanRequest, IUserContext userContext) { Contract.Requires<ArgumentNullException>(userContext.IsNotNull()); Contract.Requires<ArgumentNullException>(loanRequest.IsNotNull()); VerifyProfilePrerequisitesRuleCompleted(loanRequest); SetDeclinedStatus(loanRequest, userContext); this.gangsterBankUnitOfWork.LoanRequestsRepository.CreateOrUpdate(loanRequest); }
private static void AddUserApprovers(LoanRequest loanRequest, IUserContext userContext) { IEnumerable<IdentityRoleEntity> userApprovers = GetUserApprovers(loanRequest, userContext).ToList(); foreach (IdentityRoleEntity userRole in userApprovers) { loanRequest.ApprovedBy.Add(userRole); } }
private static TakenLoan CreateTakenLoanForClient(LoanRequest loanRequest) { var takenLoan = new TakenLoan { Amount = loanRequest.Amount, MaturityInMonth = loanRequest.Months, ProductLoan = loanRequest.LoanProduct, TakeDate = DateTime.UtcNow, Payments = new Collection<LoanPayment>(), Status = TakenLoanStatus.Active }; loanRequest.Client.TakenLoans.Add(takenLoan); return takenLoan; }
private string CheckLoanRequestPrerequisiteRules(LoanRequest loanRequest) { var result = this.loanRequestPrerequisiteRule.IsValid(loanRequest); loanRequest.Status = result == string.Empty ? LoanRequestStatus.ProfilePrerequisitesAreVerified : LoanRequestStatus.Declined; return result; }
private static IEnumerable<IdentityRoleEntity> GetUserApprovers( LoanRequest loanRequest, IUserContext userContext) { IEnumerable<IdentityRoleEntity> userApprovers = loanRequest.RemainingApprovers.Intersect(userContext.IdentityRoleEntities); return userApprovers; }
public bool IsValid(LoanRequest loanRequest) { return loanRequest.Amount >= loanRequest.LoanProduct.MinAmount && loanRequest.Amount <= loanRequest.LoanProduct.MaxAmount; }
string ILoanRequestPrerequisiteRule.IsValid(LoanRequest loanRequest) { return loanRequest.Amount >= loanRequest.LoanProduct.MinAmount && loanRequest.Amount <= loanRequest.LoanProduct.MaxAmount ? string.Empty : ErrorConst; }
private static void SetDeclinedStatus(LoanRequest loanRequest, IUserContext userContext) { IEnumerable<IdentityRoleEntity> userApprovers = GetUserApprovers(loanRequest, userContext); if (!userApprovers.Any()) { throw new WorkflowException("User is not in remaining approvers list"); } loanRequest.Status = LoanRequestStatus.Declined; }
public string IsValid(LoanRequest loanRequest) { return loanRequest.Months >= loanRequest.LoanProduct.MinPeriodInMonth && loanRequest.Months <= loanRequest.LoanProduct.MaxPeriodInMonth ? string.Empty : Error; }
public bool SendMessage(EmailTemplateType type, Client client, LoanRequest loanRequest, string text = null) { var template = this.emailTemplatesService.GetByType(type); var body = template.Text; var subject = template.Subject; if (!string.IsNullOrEmpty(text)) { body = body.Replace("{text}", text); } subject = subject.Replace("{firstname}", client.FirstName); body = this.MassReplace( body, new Collection<KeyValuePair<string, string>> { new KeyValuePair<string, string>("{firstname}", client.FirstName), new KeyValuePair<string, string>("{lastname}", client.LastName), new KeyValuePair<string, string>("{time}", DateTime.Now.ToShortTimeString()), new KeyValuePair<string, string>("{date}", DateTime.Now.ToShortDateString()), new KeyValuePair<string, string>("{currentamount}", client.PrimaryAccount.Amount.ToString("C0")) }); body = body.Replace("{amount}", loanRequest.Amount.ToString()); body = body.Replace("{productname}", loanRequest.LoanProduct.Name); subject = subject.Replace("{lastname}", client.FirstName); return this.SendMessage(subject, body, client.Email); }