private static Purchase CreatePurchase(CallScenario scenario, CallResolution correctResolution) { var policies = CurrentGameState.State.ActivePolicies; Purchase purchase; int numAttempts = 0; while (true) { numAttempts++; purchase = Purchase.Create(DateWithinDays(90), scenario.Product); var call = new ResolvedCall(new Optional <Purchase>(purchase), correctResolution, correctResolution); var violations = policies.GetViolations(correctResolution, call); if (!violations.Any() || correctResolution == CallResolution.Reject) { break; } } scenario.Target = new Optional <Purchase>(purchase); Debug.WriteLine($"Created target purchase in {numAttempts} attempts"); return(purchase); }
public bool MeetsPolicy(CallResolution resolution, ResolvedCall call) { return(!Applies(resolution) || _condition(call)); }
public List <Policy> GetViolations(CallResolution resolution, ResolvedCall call) { return(_policies.Where(x => !x.MeetsPolicy(resolution, call)).ToList()); }