internal List <Team> GenerateRandomTeams(int gamesInstanceId) { GamesInstance gamesInstance = _dbContext.GamesInstances.Find(gamesInstanceId); List <Person> activePeople = _dbContext.Persons.Where(p => p.IsActive).ToList(); activePeople = Shuffle <Person>(activePeople); List <Team> teams = Enumerable .Range(0, (int)Math.Ceiling(activePeople.Count / (double)gamesInstance.PersonTeamSize)) .Select(t => new Team { GamesInstance = gamesInstance }).ToList(); _dbContext.Teams.AddRange(teams); //I had to use an old school for loop here to have access to i, it pains me for (int i = 0; i < activePeople.Count; i++) { _dbContext.PersonTeams.Add(new PersonTeam { Team = teams[i % teams.Count], Person = activePeople[i] }); } _dbContext.SaveChanges(); return(teams); }
internal void CreateGamesInstance(GamesInstance gamesInstance) { List <GamesInstance> ActiveInstances = _dbContext.GamesInstances.Where(g => g.IsActive).ToList(); ActiveInstances.ForEach(a => a.IsActive = false); _dbContext.Add(gamesInstance); _dbContext.SaveChanges(); }
public IActionResult CreateGamesInstance(GamesInstance gamesInstance) { _gamesInstanceService.CreateGamesInstance(gamesInstance); return(RedirectToAction("GamesInstanceIndex")); }