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(); } }
public async Task IncreaseUserBalanceByUsernameAsync(string username, decimal amount) { var user = this.context.Users.Where(u => u.UserName == username).FirstOrDefault(); user.Balance += amount; context.SaveChanges(); }
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(); }
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(); }