Exemple #1
0
        private void ProcessMessage(BankQuoteRequest bankQuoteRequest)
        {
            var bankQuoteReply = ComputeBankReply(bankQuoteRequest);

            SynchronizedWriteLine(
                "Received request for Cpr.Nr " +
                $"{bankQuoteRequest.CprNr} " +
                $"for {bankQuoteRequest.LoanAmount:c} " +
                $"/ {bankQuoteRequest.LoanTerm} months");

            Thread.Sleep(_random.Next(10) * 100);

            SynchronizedWriteLine("Quote: " +
                                  $"{bankQuoteReply.ErrorCode} " +
                                  $"{bankQuoteReply.InterestRate} " +
                                  $"{bankQuoteReply.QuoteId}");

            if (bankQuoteReply.ErrorCode != 0)
            {
                return;
            }

            SendBankQuoteReply(bankQuoteReply);
            SynchronizedWriteLine("Replied to Loan broker " +
                                  $"regarding Cpr.Nr {bankQuoteRequest.CprNr}");
        }
Exemple #2
0
        private BankQuoteReply ComputeBankReply(BankQuoteRequest requestStruct)
        {
            var replyStruct = new BankQuoteReply
            {
                CprNr = requestStruct.CprNr
            };

            if (requestStruct.LoanTerm <= _maxLoanTerm)
            {
                replyStruct.InterestRate = _primeRate + _ratePremium
                                           + (double)requestStruct.LoanTerm / 12 / 10
                                           + (double)_random.Next(10) / 10;
                replyStruct.ErrorCode = 0;
            }
            else
            {
                replyStruct.InterestRate = 0.0;
                replyStruct.ErrorCode    = 1;
            }
            replyStruct.QuoteId = $"{_bankName}-{_quoteCounter:00000}";
            _quoteCounter++;
            return(replyStruct);
        }