private void CreateGroupMatches(int groupNo, CompetitionPlayerList groupPlayers)
        {
            int[] plrs = new int[groupPlayers.Count];                                               // Список игроков для рассеивания

            SeedPair[] new_mtchs = new SeedPair[(groupPlayers.Count - 1) * groupPlayers.Count / 2]; // Список новых матчей
            int        index     = 0;

            foreach (CompetitionPlayerInfo player in groupPlayers.Values)
            {
                plrs[index++] = player.Id;
            }
            // формируем пары для следующего раунда
            if (!RobinSeeder.Seed(plrs, new_mtchs))
            {
                throw new Exception("Draw error");
            }

            // Создаем матчи и добавляем их в список матчей
            int pc = groupPlayers.Count;

            for (int round = 0; round < pc - 1; round++)              // Кол-во туров равно Кол-во игроков - 1
            {
                for (int match_no = 0; match_no < pc / 2; match_no++) // Кол-во матчей в туре равно Кол-во игрков деленное на два
                {
                    SeedPair  pair  = new_mtchs[round * pc / 2 + match_no];
                    MatchInfo match = RobinController.CreateMatch(Competition, pair);
                    match.Label.Division = groupNo;
                    match.Label.Round    = round + 1;
                    match.Label.MatchNo  = match_no + 1;
                    TA.DB.Manager.DatabaseManager.CurrentDb.CreateMatch(Competition.Info.Id, match);
                    Competition.Matches.Add(match.Id, match);
                }
            }
        }
        /// <summary>
        /// Рассеивает игроков по швейцарской системе
        /// </summary>
        /// <returns></returns>
        public virtual bool SeedPlayers()
        {
            // Список игрков для матчей
            List <CompetitionPlayerInfo> players = GetPlayersToSeed();

            int[] plrs = new int[players.Count];                                          // Список игроков для рассеивания

            SeedPair[] new_mtchs = new SeedPair[(players.Count - 1) * players.Count / 2]; // Список новых матчей
            int        index     = 0;

            foreach (CompetitionPlayerInfo player in players)
            {
                plrs[index++] = player.Id;
            }


            // формируем пары для следующего раунда
            if (!RobinSeeder.Seed(plrs, new_mtchs))
            {
                throw new Exception("Draw Error");
            }

            // Создаем матчи и добавляем их в список матчей
            int pc = players.Count;

            for (int round = 0; round < pc - 1; round++)              // Кол-во туров равно Кол-во игроков - 1
            {
                for (int match_no = 0; match_no < pc / 2; match_no++) // Кол-во матчей в туре равно Кол-во игрков деленное на два
                {
                    SeedPair  pair  = new_mtchs[round * pc / 2 + match_no];
                    MatchInfo match = CreateMatch(Competition, pair);
                    match.Label.Division = 1;
                    match.Label.Round    = round + 1;
                    match.Label.MatchNo  = match_no + 1;
                    TA.DB.Manager.DatabaseManager.CurrentDb.CreateMatch(Competition.Info.Id, match);
                    Competition.Matches.Add(match.Id, match);
                }
            }
            return(true);
        }