Пример #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;
                }
                else
                {
                    bet.GameMarkWin = false;
                }
                if ((bet.HomeScore == game.HomeScore) && (bet.AwayScore == game.AwayScore))
                {
                    points       += 2;
                    bet.ResultWin = true;
                }
                else
                {
                    bet.ResultWin = false;
                }
                if (game.CardsMark == bet.CardsMark)
                {
                    points      += 1;
                    bet.CardsWin = true;
                }
                else
                {
                    bet.CardsWin = false;
                }
                if (game.CornersMark == bet.CornersMark)
                {
                    points        += 1;
                    bet.CornersWin = true;
                }
                else
                {
                    bet.CornersWin = 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();
            }
        }
Пример #2
0
        public NewBetModel UpdateBet(int id, UpdateBetModel bet)
        {
            var betToUpdate = new Bet();

            betToUpdate.BetId       = id;
            betToUpdate.HomeScore   = bet.HomeScore;
            betToUpdate.AwayScore   = bet.AwayScore;
            betToUpdate.CornersMark = bet.CornersMark;
            betToUpdate.CardsMark   = bet.CardsMark;
            betToUpdate.GameId      = bet.GameId;
            betToUpdate.UserId      = userProivider.UserId;
            betValidator.ValidateUpdateBet(betToUpdate);
            betsRepository.UpdateBet(betToUpdate);
            betsRepository.Save();
            Trace.TraceInformation("Updating Bet: {0}", betToUpdate);
            AddLog(ActionType.UPDATE, string.Format("Updating Bet: {0}", betToUpdate));
            return(new NewBetModel(id, bet));
        }
Пример #3
0
        public NewBetModel UpdateBet(int id, UpdateBetModel bet)
        {
            var betToUpdate = new Bet();

            betToUpdate.BetId       = id;
            betToUpdate.HomeScore   = bet.HomeScore;
            betToUpdate.AwayScore   = bet.AwayScore;
            betToUpdate.CornersMark = "X";
            betToUpdate.CardsMark   = "X";
            betToUpdate.GameId      = bet.GameId;
            betToUpdate.UserId      = userProivider.UserId;
            betValidator.ValidateUpdateBet(betToUpdate);
            betsRepository.UpdateBet(betToUpdate);
            betsRepository.Save();
            Trace.TraceInformation("Updating Bet: {0}", betToUpdate);
            AddLog(ActionType.UPDATE, string.Format("Updating Bet: {0}", betToUpdate));
            if (ShouldSendMail())
            {
                MundialitoUser user = userManager.FindById(userProivider.UserId);
                Game           game = gamesRepository.GetGame(bet.GameId);
                SendBetMail(betToUpdate);
            }
            return(new NewBetModel(id, bet));
        }
Пример #4
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();
            }
        }