public PartialLotteryResult GetPartialLotteryResult(PartialLotteryResult partialResult) { int populatedBalls = 0; var valuesToExclude = new List <int>(); if (partialResult.Ball1.HasValue) { populatedBalls++; valuesToExclude.Add(partialResult.Ball1.Value); } if (partialResult.Ball2.HasValue) { populatedBalls++; valuesToExclude.Add(partialResult.Ball2.Value); } if (partialResult.Ball3.HasValue) { populatedBalls++; valuesToExclude.Add(partialResult.Ball3.Value); } if (partialResult.Ball4.HasValue) { populatedBalls++; valuesToExclude.Add(partialResult.Ball4.Value); } if (partialResult.Ball5.HasValue) { populatedBalls++; valuesToExclude.Add(partialResult.Ball5.Value); } if (partialResult.Ball6.HasValue) { populatedBalls++; valuesToExclude.Add(partialResult.Ball6.Value); } if (populatedBalls > 5) { partialResult.IsFull = true; return(partialResult); } int nextBall = _numberGenerator.GenerateNextNumber(1, 49, valuesToExclude); switch (populatedBalls) { case 0: partialResult.Ball1 = nextBall; return(partialResult); case 1: partialResult.Ball2 = nextBall; return(partialResult); case 2: partialResult.Ball3 = nextBall; return(partialResult); case 3: partialResult.Ball4 = nextBall; return(partialResult); case 4: partialResult.Ball5 = nextBall; return(partialResult); case 5: partialResult.Ball6 = nextBall; partialResult.IsFull = true; return(partialResult); default: return(partialResult); } }