public void ResolveBets(Game game) { if (!game.IsBetResolved(dateTimeProvider.UTCNow)) { throw new ArgumentException(string.Format("Game {0} is not resolved yet", game.GameId)); } var bets = betsRepository.GetGameBets(game.GameId); foreach (Bet bet in bets) { var points = 0; if (bet.Mark() == game.Mark(dateTimeProvider.UTCNow)) { points += 3; bet.GameMarkWin = true; } if ((bet.HomeScore == game.HomeScore) && (bet.AwayScore == game.AwayScore)) { points += 2; bet.ResultWin = true; } if (game.CardsMark == bet.CardsMark) { points += 1; bet.CardsWin = true; } if (game.CornersMark == bet.CornersMark) { points += 1; bet.CornersWin = true; } bet.Points = points; betsRepository.UpdateBet(bet); Trace.TraceInformation("{0} of {1} got {2} points", bet, game, points); AddLog(ActionType.UPDATE, String.Format("Resolved bet {0} with points {1}", bet, points)); } if (bets.Count() > 0) { betsRepository.Save(); } }
public void ResolveBets(Game game) { if (!game.IsBetResolved(dateTimeProvider.UTCNow)) { throw new ArgumentException(string.Format("Game {0} is not resolved yet", game.GameId)); } var bets = betsRepository.GetGameBets(game.GameId); foreach (Bet bet in bets) { bet.CornersWin = false; bet.CardsWin = false; bet.ResultWin = (bet.HomeScore == game.HomeScore) && (bet.AwayScore == game.AwayScore); var points = 0.0m; if (bet.Mark() == game.Mark(dateTimeProvider.UTCNow)) { if (bet.HomeScore > bet.AwayScore) { points += game.HomeRatio; } if (bet.HomeScore == bet.AwayScore) { points += game.TieRatio; } if (bet.HomeScore < bet.AwayScore) { points += game.AwayRatio; } points *= game.RatioWeight; if (bet.ResultWin) { var totalGoals = game.AwayScore + game.HomeScore; if (totalGoals < 2) { points *= 1.1m; } else if (totalGoals < 4) { points *= 1.2m; } else { points *= 1.3m; } } bet.GameMarkWin = true; } else { bet.GameMarkWin = false; } bet.Points = points; betsRepository.UpdateBet(bet); Trace.TraceInformation("{0} of {1} got {2} points", bet, game, points); AddLog(ActionType.UPDATE, String.Format("Resolved bet {0} with points {1}", bet, points)); } if (bets.Count() > 0) { betsRepository.Save(); } }