Пример #1
0
        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();
            }
        }
Пример #2
0
        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();
            }
        }