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}"); }
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); }