public void SettleDraw(DateTime drawDate, int[] numbers) { var draw = draws[drawDate]; var payoutPool = new PayoutPool(draw.TotalPoolSize * operatorDeductionFactor); var ticketCategories = draw.SplitTicketsIntoCategories(numbers); for (var matches = 0; matches <= numbers.Length; matches++) { var prizePool = payoutPool.PrizePool(matches); var totalInCategory = ticketCategories[matches].Sum(ticket => ticket.Amount); foreach (var ticket in ticketCategories[matches]) { var winnings = ticket.Amount*prizePool/totalInCategory; players[ticket.PlayerId].AdjustBalance(winnings); ticket.Settle(winnings); } } }
public void SettleDraw(DateTime drawDate, int[] numbers) { var draw = draws[drawDate]; var payoutPool = new PayoutPool(draw.TotalPoolSize * operatorDeductionFactor); var ticketCategories = draw.SplitTicketsIntoCategories(numbers); for (var matches = 0; matches <= numbers.Length; matches++) { var prizePool = payoutPool.PrizePool(matches); var totalInCategory = ticketCategories[matches].Sum(ticket => ticket.Amount); foreach (var ticket in ticketCategories[matches]) { var winnings = ticket.Amount * prizePool / totalInCategory; players[ticket.PlayerId].AdjustBalance(winnings); ticket.Settle(winnings); } } }