public CreditBureauRequest FilterMessage(LoanQuoteRequest loanQuoteRequest) { return(new CreditBureauRequest { CprNr = loanQuoteRequest.CprNr }); }
public LoanQuoteReply EnrichMessage(BankQuoteReply bestBankQuoteReply, LoanQuoteRequest loanRequest) { return(new LoanQuoteReply { CprNr = bestBankQuoteReply.CprNr, InterestRate = bestBankQuoteReply.InterestRate, LoanAmount = loanRequest.LoanAmount, QuoteId = bestBankQuoteReply.QuoteId }); }
public BankQuoteRequest EnrichMessage(CreditBureauReply creditBureauReply, LoanQuoteRequest loanRequest) { return(new BankQuoteRequest { CprNr = creditBureauReply.CprNr, CreditScore = creditBureauReply.CreditScore, HistoryLength = creditBureauReply.HistoryLength, LoanAmount = loanRequest.LoanAmount, LoanTerm = loanRequest.LoanTerm }); }
public LoanQuote Post(LoanQuoteRequest quoteRequest) { var quote = new LoanQuote(); double rate = 3.99; double calcRate = ((rate / 12) / 100); double factor = calcRate + (calcRate / (Math.Pow(calcRate + 1, quoteRequest.term) - 1)); quote.payment = quoteRequest.loanAmount * factor; quote.term = quoteRequest.term; quote.rate = rate; return(quote); }
private static void HandleLoanQuoteRequest(LoanQuoteRequest loanQuoteRequest) { _loanQuoteRequests.TryAdd(loanQuoteRequest.CprNr, loanQuoteRequest); Console.WriteLine($"Received Loan request regarding Cpr.Nr {loanQuoteRequest.CprNr}"); //Message filtering var creditBureauRequest = _messageTransformer.FilterMessage(loanQuoteRequest); Console.WriteLine($"Sent credit bureau request regarding Cpr.Nr {loanQuoteRequest.CprNr}"); using (var messageGateway = new MessageGateway("host=localhost;timeout=60")) { var reply = messageGateway.Request <CreditBureauRequest, CreditBureauReply>(creditBureauRequest); HandleCreditBureauReply(reply); } }
private static void ReplyToLoanRequest(LoanQuoteRequest loanRequest, LoanQuoteReply ĺoanQuoteReply) { using (var messageGateway = new MessageGateway("host=localhost;timeout=60")) { messageGateway.Send(ĺoanQuoteReply, loanRequest.ReplyQueueId); } LoanQuoteRequest removedCustomer; List <BankQuoteReply> removedBankQuoteReplies; _loanQuoteRequests.TryRemove(loanRequest.CprNr, out removedCustomer); _bankQuoteReplies.TryRemove(loanRequest.CprNr, out removedBankQuoteReplies); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"Resolved Loan request regarding Cpr.Nr {loanRequest.CprNr}."); Console.ResetColor(); }
public async Task ProcessQueueMessage([QueueTrigger("credit-checked-loan-requests")] string message, TextWriter log) { logger.Information("Retrieving credit checked loan request..."); dynamic creditCheckedLoanRequest = JsonConvert.DeserializeObject(message); var loanQuoteRequest = new LoanQuoteRequest { BSN = creditCheckedLoanRequest.OriginalLoanRequest.CitizenServiceNumber, CreditRating = $"{creditCheckedLoanRequest.CreditCheckReport.CreditScore} " + $"({creditCheckedLoanRequest.CreditCheckReport.CreditRating})", LoanAmount = creditCheckedLoanRequest.OriginalLoanRequest.RequestedLoanAmount }; logger.Information("Now sending the loan quote {@request} to all the registered banks...", loanQuoteRequest); var quoteResponse = await loanRequestSenderFilter.GetLoanQuotesFromRegisteredBanks(loanQuoteRequest); await pipe.Write(quoteResponse); logger.Information("Loan Request Sender Done!"); }
public static void Main(string[] args) { Console.WriteLine("Customer application started."); var cts = new CancellationTokenSource(); try { _messageGateway = new MessageGateway("host=localhost;timeout=60"); _messageGateway.Receive <LoanQuoteReply>(CustomerAppId, HandleQuoteReply); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Started Listening for Loan Quote Replies."); Console.ResetColor(); ConsoleKeyInfo key; do { Console.WriteLine("Press: 'S' to send two test messages, ESC to exit application."); key = Console.ReadKey(true); if (key.Key != ConsoleKey.S) { continue; } Task.Factory.StartNew(() => { var loanQuoteRequest = new LoanQuoteRequest() { CprNr = 1909991111, LoanAmount = 10000, LoanTerm = 46, ReplyQueueId = CustomerAppId }; cts.Token.ThrowIfCancellationRequested(); _messageGateway.Send(loanQuoteRequest, "loan.broker.customer.request"); Console.WriteLine($"Loan Request Sent for {loanQuoteRequest.CprNr}"); }, cts.Token); Task.Factory.StartNew(() => { var loanQuoteRequest = new LoanQuoteRequest() { CprNr = 1909992222, LoanAmount = 5000, LoanTerm = 12, ReplyQueueId = CustomerAppId }; cts.Token.ThrowIfCancellationRequested(); _messageGateway.Send(loanQuoteRequest, "loan.broker.customer.request"); Console.WriteLine($"Loan Request Sent for {loanQuoteRequest.CprNr}"); }, cts.Token); } while (key.Key != ConsoleKey.Escape); cts.Cancel(); } catch (AggregateException e) { foreach (var ie in e.InnerExceptions) { PrintErrorToConsole($"{ie.GetType().Name}: {ie.Message}"); } } catch (Exception ex) { PrintErrorToConsole(ex.Message); } finally { cts.Cancel(); _messageGateway.Dispose(); } }
public IActionResult CreateLoanQuote(LoanQuoteRequest request) { LoanQuoteResponse loanQuoteResponse = _createQuote.Execute(request.Amount, request.CreditScore); return(Ok(loanQuoteResponse)); }