예제 #1
0
        public async Task <BracketData> FillInBracketWithDataAsync(BracketData data, List <Match> matches)
        {
            return(await Task.Run(() =>
            {
                int[] eachRoundMatchQty = ComputeMatchQtyForTournamentRounds(data.Rounds.Count, data.NumberOfTeams);

                int[] eachRoundMaxIndex = ComputeRoundMaxIndex(eachRoundMatchQty, data.NumberOfTeams);

                data.Rounds.ForEach(r => r.Matches = new List <MatchResponse>());

                for (int i = 1; i <= data.NumberOfTeams; i++)
                {
                    foreach (var t in eachRoundMaxIndex)
                    {
                        if (i > t)
                        {
                            continue;
                        }

                        var match = matches.FirstOrDefault(m => m.BracketIndex == i);

                        if (match == null)
                        {
                            data.Rounds[eachRoundMaxIndex.IndexOf(t)].Matches.Add(new MatchResponse());
                            break;
                        }

                        data.Rounds[eachRoundMaxIndex.IndexOf(t)].Matches.Add(mapper.Map <MatchResponse>(match));
                        break;
                    }
                }

                return data;
            }));
        }
예제 #2
0
        public async Task <BracketData> FillInBracketWithBlankDataAsync(BracketData data)
        {
            return(await Task.Run(() =>
            {
                for (int i = 1; i <= data.Rounds.Count; i++)
                {
                    var numOfIterationDivide = (int)Math.Pow(2, i);
                    var iterationQty = data.NumberOfTeams / numOfIterationDivide;
                    data.Rounds[i - 1].Matches = new List <MatchResponse>();
                    Parallel.For(0, iterationQty,
                                 (index) => { data.Rounds[i - 1].Matches.Add(new MatchResponse()); });
                }

                return data;
            }));
        }
        public static async Task <BracketData> CreateBracketTemplate(int numberOfTeams)
        {
            return(await Task.Run(() =>
            {
                var bracketData = new BracketData
                {
                    NumberOfTeams = numberOfTeams
                };
                bracketData.Rounds = new List <BracketRound>();

                int numOfRounds = (int)Math.Log(numberOfTeams, 2);

                for (int i = 0; i < numOfRounds; i++)
                {
                    bracketData.Rounds.Add(new BracketRound
                    {
                        RoundIndex = i + 1
                    });
                }

                return bracketData;
            }));
        }