-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathLoanApplicationFlow1.cs
More file actions
25 lines (20 loc) · 931 Bytes
/
Copy pathLoanApplicationFlow1.cs
File metadata and controls
25 lines (20 loc) · 931 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using Cleipnir.Flows.Sample.Presentation.Solutions.D_LoanApplication.Other;
namespace Cleipnir.Flows.Sample.Presentation.Solutions.D_LoanApplication;
public class LoanApplicationFlow1 : Flow<LoanApplication>
{
public override async Task Run(LoanApplication loanApplication)
{
await MessageBroker.Send(new PerformCreditCheck(loanApplication.Id, loanApplication.CustomerId, loanApplication.Amount));
var outcomes = new List<CreditCheckOutcome>();
for (var i = 0; i < 3; i++)
{
var outcome = await Message<CreditCheckOutcome>(TimeSpan.FromMinutes(15));
if (outcome == null) break;
outcomes.Add(outcome);
}
CommandAndEvents decision = outcomes.All(o => o.Approved)
? new LoanApplicationApproved(loanApplication)
: new LoanApplicationRejected(loanApplication);
await MessageBroker.Send(decision);
}
}