Пример #1
0
        public async Task Seed()
        {
            var matchesNotFinished = context.Matches.Where(m => m.Finished == false).Count() < 5;

            if (context.Matches.Where(m => m.Finished == false).Count() < 5)
            {
                Team[] teams      = context.Teams.ToArray();
                Random randomOdds = new Random();

                List <Match> matchesToAdd = new List <Match>();
                for (int i = 0; i < 5 - context.Matches.Where(m => m.Finished == false).Count(); i++)
                {
                    Match match = new Match()
                    {
                        Finished            = false,
                        StartingTime        = DateTime.UtcNow.AddHours(1),
                        League              = teams[i].League,
                        FirstTeamToWinOdds  = randomOdds.NextDouble() * (maxOddsRange - minOddsRange) + minOddsRange,
                        SecondTeamToWinOdds = randomOdds.NextDouble() * (maxOddsRange - minOddsRange) + minOddsRange,
                        DrawOdds            = randomOdds.NextDouble() * (maxOddsRange - minOddsRange) + minOddsRange
                    };

                    matchesToAdd.Add(match);
                }

                context.Matches.AddRange(matchesToAdd);
                context.SaveChanges();

                await MappingTeamsToMatchesAsync();
            }
        }
Пример #2
0
        public async Task IncreaseUserBalanceByUsernameAsync(string username, decimal amount)
        {
            var user = this.context.Users.Where(u => u.UserName == username).FirstOrDefault();

            user.Balance += amount;
            context.SaveChanges();
        }
Пример #3
0
        public async Task CheckAndPayoutBetsAsync(string userId)
        {
            var userBets = context
                           .Bets
                           .Where(b => b.BettorId == userId && b.Match.Finished && !b.Won)
                           .Include(b => b.Bettor)
                           .Include(b => b.Match)
                           .ToList();

            var user = context.Users.Where(u => u.Id == userId).FirstOrDefault();

            foreach (var bet in userBets)
            {
                int[] score = bet.Match.Result.Split(" - ").Select(n => int.Parse(n.ToString())).ToArray();
                switch (bet.BetType.ToString())
                {
                case "One":
                    if (score[0] > score[1])
                    {
                        bet.Won             = true;
                        bet.Bettor.Balance += (decimal)bet.Odds * bet.MoneyBet;
                    }
                    break;

                case "X":
                    if (score[0] == score[1])
                    {
                        bet.Won             = true;
                        bet.Bettor.Balance += (decimal)bet.Odds * bet.MoneyBet;
                    }
                    break;

                case "Two":
                    if (score[0] < score[1])
                    {
                        bet.Won             = true;
                        bet.Bettor.Balance += (decimal)bet.Odds * bet.MoneyBet;
                    }
                    break;

                default:
                    break;
                }
            }

            context.SaveChanges();
        }
Пример #4
0
        public async Task CheckAndGiveResultsToMatchesAsync()
        {
            var matches = context.Matches.ToList();

            foreach (var match in matches)
            {
                if (match.StartingTime.AddMinutes(90) < DateTime.UtcNow)
                {
                    if (!match.Finished)
                    {
                        match.Result = await GiveRandomResultAsync();

                        match.Finished = true;
                    }
                }
                else
                {
                    match.Result = "Not finished";
                }
            }
            context.SaveChanges();
        }