Ejemplo n.º 1
0
 public CreditBureauRequest FilterMessage(LoanQuoteRequest loanQuoteRequest)
 {
     return(new CreditBureauRequest
     {
         CprNr = loanQuoteRequest.CprNr
     });
 }
Ejemplo n.º 2
0
 public LoanQuoteReply EnrichMessage(BankQuoteReply bestBankQuoteReply, LoanQuoteRequest loanRequest)
 {
     return(new LoanQuoteReply
     {
         CprNr = bestBankQuoteReply.CprNr,
         InterestRate = bestBankQuoteReply.InterestRate,
         LoanAmount = loanRequest.LoanAmount,
         QuoteId = bestBankQuoteReply.QuoteId
     });
 }
Ejemplo n.º 3
0
 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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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!");
        }
Ejemplo n.º 8
0
        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();
            }
        }
Ejemplo n.º 9
0
        public IActionResult CreateLoanQuote(LoanQuoteRequest request)
        {
            LoanQuoteResponse loanQuoteResponse = _createQuote.Execute(request.Amount, request.CreditScore);

            return(Ok(loanQuoteResponse));
        }