public static string ExportCSV(TeamSetting teamlist)
 {
     return ExportCSV(teamlist.Teams.ToList());
 }
        // GET: Games/Create
        public async Task<ActionResult> CreateNG(CreateGameModel model)
        {
            if (model.SelectedPlayers == null) return null;
            //CreateGameModel model = JsonConvert.DeserializeObject<CreateGameModel>(res);
            var user = GetUser();
            List<Player> players = new List<Player>();
            List<Team> teams = new List<Team>();
            if (model.SelectedPlayers != null)
            {
                players = await GetPlayersAsync(model.GetSelectedPlayersIDs());
                TeamFactory teamFactory = new TeamFactory(players);
                teamFactory.PlayersPerTeam = model.TeamSize;
                if (model.ScrambledTeams) teamFactory.ScramblePlayers();
                teams = teamFactory.CreateTeams();
            }
            var club = user.Club;
            List<Lane> lanes = await GetLanesAsync(model.GetSelectedLanesIDs());
            if (model.SelectedTeams != null)
            {
                teams.AddRange(await CopyTeams(model.SelectedTeams));
            }

            var counter = 1;
            if (teams.Count < 3) return RedirectToAction("Create");
            foreach (var item in teams)
            {
                item.AltName = counter.ToString();
                counter++;
            }
            if (model.SaveToMemory)
            {
                var setting = new TeamSetting(teams);
                setting.SetCreated(user);
                setting.ClubID = club.ID;
                setting.SetName(model.MemoryName);
                db.SavedTeams.Add(setting);
            }

            if (model.GameName == "") model.GameName = "Namnlös";
            int[] teamSize = GetGroupSize(model.Groups, teams.Count);
            //Beräkna banor
            int lanesPerGroup = GetLanesPerGroup(model.Groups, lanes.Count);
            Game g = null;
            for (int i = 0; i < model.Groups; i++)
            {
                g = new Game();
                g.Club = club;
                g.Deleted = false;
                g.Ended = null;
                g.Name = model.GameName;
                g.IsGroup = model.Groups > 0;
                g.IsScramble = model.ScrambledTeams;
                g.PlayersPerTeam = model.TeamSize;
                g.Started = DateTime.Now;
                if (model.Groups > 1)
                {
                    g.Group = i + 1;

                }
                else
                {
                    g.Group = 0;
                }
                List<Lane> gameLanes = lanes.Skip(i * lanesPerGroup).Take(lanesPerGroup).ToList();
                g.Lanes = gameLanes;

                List<Team> gameTeams = teams.Skip(toSkip(i, teamSize)).Take(teamSize[i]).ToList();
                foreach (var item in gameTeams)
                {
                    item.SetGame(g);

                }
                g.Rounds = Utilities.GetRounds(gameTeams, gameLanes).OrderBy(r=> r.PlayOrder).ToList();
                g.Teams = gameTeams;
                db.Games.Add(g);
                await db.SaveChangesAsync();
                foreach (var item in g.Rounds)
                {
                    var _teams = item.Teams.ToArray();
                    item.Team1ID = _teams[0].ID;
                    item.Team2ID = _teams[1].ID;
                }
                g.Rounds = Utilities.FixEqualLaneAmount(g.Rounds, g.Lanes);
                await db.SaveChangesAsync();
            }

            return RedirectToAction("Index");
        }
 public async Task<TeamSetting> GenerateTeamSettingAsync(ApplicationDbContext db, ApplicationUser user)
 {
     if (user == null) return null;
     var result = new TeamSetting();
     result.Active = true;
     result.ClubID = user.Club.ID;
     result.SetCreated(user);
     result.Name = Name;
     if (Teams == null) Teams = new List<JSONTeam>();
     var teams = await Teams.GetTeamsAsync(db);
     if (Players == null) Players = new List<JSONPlayer>();
     var players = await Players.GetPlayersAsync(db);
     if (players.Count > 0)
     {
         TeamFactory factory = new TeamFactory(players);
         factory.PlayersPerTeam = TeamSize;
         teams.AddRange(factory.CreateTeams());
     }
     result.Teams = teams;
     var counter = 1;
     foreach (var item in result.Teams)
     {
         item.AltName = counter.ToString();
         counter++;
     }
     return result;
 }
 public PlayerList(TeamSetting model)
 {
     this.Name = model.Name;
     this.ClubID = model.ClubID;
     this.Players = model.GetPlayers();
 }
 public JSONTeamSetting(TeamSetting model)
 {
     this.ID = model.ID;
     this.Teams = model.Teams.ToList().GetJSON();
     this.Name = model.Name;
     this.Deleted = model.Deleted;
 }