示例#1
0
    public void CalculateBets()
    {
        var players = PlayerRepository.GetAllPlayers();

        foreach (var player in players)
        {
            PlayerRepository.UpdateFixtureScores(player.Id);
            var bets = BetReposiory.GetBetsByPlayerId(player.Id);
            foreach (var bet in bets)
            {
                if (bet.FixtureId != null)
                {
                    CalculateSingleBetPoints(bet, player);
                    continue;
                }
                else if (bet.RoundTeamId != null)
                {
                    CalculateRoundBetPoints(bet, player);
                    continue;
                }
                else if (bet.WinnerTeamId != null)
                {
                    CalculateWinnerTeamBetPoints(bet, player);
                    continue;
                }
            }
            CalculateQualifTeamPoints(player);
        }
    }
示例#2
0
    private void CalculateSingleBetPoints(Bet bet, Player player)
    {
        var fixture = FixtureRepository.GetFixtureById(bet.FixtureId.Value);

        if (!fixture.Ended)
        {
            return;
        }
        BetReposiory.CheckBet(bet.Id);
    }
示例#3
0
    private void CalculateQualifTeamPoints(Player player)
    {
        var fixtures = FixtureRepository.GetFixtureByRoundId(1);

        if (fixtures.Where(x => !x.Ended).Count() > 0)
        {
            return;
        }

        var qualifiedTeams = TeamRepository.GetAllTeams().Where(x => x.CurrentRoundId == 2);
        var betTeams       = BetReposiory.GetQualifTeams(player.Id, false);

        if (betTeams.Count() != 16)
        {
            return;                       //Reset to 16
        }
        BetReposiory.CheckQualifTeams(player.Id);

        var crossTeams = qualifiedTeams.Where(x => betTeams.Contains(x.Id));
        var c          = crossTeams.Count();

        if (c < 2)
        {
            PlayerRepository.SetScore(-10, player.Id);
            return;
        }

        if (c < 5)
        {
            PlayerRepository.SetScore(-5, player.Id);
            return;
        }

        if (c < 8)
        {
            return;
        }

        if (c < 13)
        {
            PlayerRepository.SetScore(5, player.Id);
            return;
        }

        if (c < 16)
        {
            PlayerRepository.SetScore(8, player.Id);
            return;
        }

        PlayerRepository.SetScore(10, player.Id);
        return;
    }
示例#4
0
    private void CalculateRoundBetPoints(Bet bet, Player player)
    {
        var    team   = TeamRepository.GetTeamById(bet.RoundTeamId.Value);
        double points = 0;

        if (!team.Eleminated || bet.Checked)
        {
            return;
        }

        if (team.Eleminated && team.CurrentRoundId == bet.RoundTeamRoundId)
        {
            points = 10 * (1 + (team.Ranking / 25));
        }
        else if (team.Eleminated && team.CurrentRoundId != bet.RoundTeamRoundId)
        {
            points = -5 * (1 + (team.Ranking / 25));
        }
        int.TryParse(Math.Ceiling(points).ToString(), out var intPoints);

        PlayerRepository.SetScore(intPoints, player.Id);
        BetReposiory.CheckBet(bet.Id);
    }
示例#5
0
    private void CalculateWinnerTeamBetPoints(Bet bet, Player player)
    {
        var betDate  = bet.Date;
        var points   = 0;
        var betRound = GetBetRoundByDate(bet.Date);
        var team     = TeamRepository.GetTeamById(bet.WinnerTeamId.Value);

        if ((team.CurrentRoundId < 4 && !team.Eleminated) || bet.Checked)
        {
            return;
        }

        if (team.CurrentRoundId == 1)
        {
            points = -10;
        }

        if (team.CurrentRoundId == 2)
        {
            switch (betRound)
            {
            case 1:
                points = -3;
                break;

            case 2:
                points = -5;
                break;
            }
        }

        if (team.CurrentRoundId == 3)
        {
            switch (betRound)
            {
            case 1:
                points = 0;
                break;

            case 2:
                points = -3;
                break;

            case 3:
                points = -5;
                break;
            }
        }

        if (team.CurrentRoundId == 5)
        {
            var fixture = FixtureRepository.GetFixtureByRoundId(5).First();
            var won     = fixture.WinningTeamId == bet.WinnerTeamId;
            if (!fixture.Ended)
            {
                return;
            }
            switch (betRound)
            {
            case 1:
                if (won)
                {
                    points = 6;
                }
                else
                {
                    points = 4;
                }
                break;

            case 2:
                if (won)
                {
                    points = 3;
                }
                else
                {
                    points = 0;
                }
                break;

            case 3:
                if (won)
                {
                    points = 1;
                }
                else
                {
                    points = -2;
                }
                break;
            }
        }

        if (team.CurrentRoundId == 6)
        {
            var fixture = FixtureRepository.GetFixtureByRoundId(6).First();
            var won     = fixture.WinningTeamId == bet.WinnerTeamId;
            if (!fixture.Ended)
            {
                return;
            }
            switch (betRound)
            {
            case 1:
                if (won)
                {
                    points = 20;
                }
                else
                {
                    points = 10;
                }
                break;

            case 2:
                if (won)
                {
                    points = 13;
                }
                else
                {
                    points = 5;
                }
                break;

            case 3:
                if (won)
                {
                    points = 8;
                }
                else
                {
                    points = 3;
                }
                break;
            }
        }

        PlayerRepository.SetScore(points, player.Id);
        BetReposiory.CheckBet(bet.Id);
    }