public void BlueWon_WithWazaariAwasetteIppon()
        {
            ContestSheetData data = new ContestSheetData
            {
                WazaariBlue = 2,
            };

            Assert.False(data.WhiteWon());
        }
        public void WhiteWon_WithWazaari()
        {
            ContestSheetData data = new ContestSheetData
            {
                WazaariWhite = 1,
            };

            Assert.True(data.WhiteWon());
        }
        public void BlueWon_WithIppon()
        {
            ContestSheetData data = new ContestSheetData
            {
                IponBlue = 1,
            };

            Assert.False(data.WhiteWon());
        }
        public void WhiteWon_WithWazaariAwasetteIppon()
        {
            ContestSheetData data = new ContestSheetData
            {
                WazaariWhite = 2,
            };

            Assert.True(data.WhiteWon());
        }
        public void WhiteWon_WithIppon()
        {
            ContestSheetData data = new ContestSheetData
            {
                IponWhite = 1,
            };

            Assert.True(data.WhiteWon());
        }
        public void WhiteWon_WithIpponAgainstWazaari()
        {
            ContestSheetData data = new ContestSheetData
            {
                IponWhite   = 1,
                WazaariBlue = 1,
            };

            Assert.True(data.WhiteWon());
        }
Exemple #7
0
 public static int ScoreBlue(this ContestSheetData contest)
 {
     if (contest.IponBlue == 1 || contest.WazaariBlue == 2)
     {
         return(10);
     }
     if (contest.WazaariBlue == 1)
     {
         return(7);
     }
     return(0);
 }
Exemple #8
0
 public static ContestSheetDataDto ToDTO(this ContestSheetData contest)
 {
     return(new ContestSheetDataDto
     {
         Contest = contest.Contest,
         CompetitorWhite = contest.CompeditorWhite,
         CompetitorBlue = contest.CompeditorBlue,
         IponWhite = contest.IponWhite,
         WazaariWhite = contest.WazaariWhite,
         IponBlue = contest.IponBlue,
         WazaariBlue = contest.WazaariBlue,
     });
 }
Exemple #9
0
 private async Task updateClients(ContestType type, ContestSheetData contest, Category category)
 {
     if (type == ContestType.RoundRobin)
     {
         var rrDto = contest.ToRoundRobinDto(category);
         await _hub.Clients.Group($"t{contest.TournamentID}c{contest.CategoryID}").SendAsync("updateSheet", rrDto);
     }
     else
     {
         var dto = contest.ToDTO();
         await _hub.Clients.Group($"t{contest.TournamentID}c{contest.CategoryID}").SendAsync("updateSheet", dto);
     }
 }
Exemple #10
0
 public static bool WhiteWon(this ContestSheetData contest)
 {
     if (contest.IponWhite == 1)
     {
         return(true);
     }
     if (contest.WazaariWhite == 2)
     {
         return(true);
     }
     if (contest.WazaariWhite == 1 && contest.IponBlue == 0 && contest.WazaariBlue == 0)
     {
         return(true);
     }
     return(false);
 }
Exemple #11
0
        public async Task <IActionResult> PostContestSheetData([FromBody, Required] ContestSheetData contestData)
        {
            if (ModelState.IsValid)
            {
                Console.WriteLine($"{contestData.TournamentID}\t{contestData.CategoryID}\t{contestData.Contest}\t{contestData.CompeditorWhite}");
                ContestSheetData existingContest = await _db.ContestSheetData.Where(o => o.TournamentID == contestData.TournamentID && o.CategoryID == contestData.CategoryID && o.Contest == contestData.Contest).FirstOrDefaultAsync();

                Category category = await _db.Categories.Include(o => o.SheetData).Where(c => c.ID == contestData.CategoryID && c.TournamentID == contestData.TournamentID).FirstOrDefaultAsync();

                if (existingContest == null)
                {
                    try
                    {
                        await _db.ContestSheetData.AddAsync(contestData);

                        await _db.SaveChangesAsync();

                        await updateClients(category.GetContestType(), contestData, category);
                    }
                    catch (Exception e)
                    {
                        return(BadRequest(e.ToString()));
                    }
                    return(Ok());
                }
                else
                {
                    Console.WriteLine($"{existingContest.ID}");
                    existingContest.UpdateFromQuery(contestData);
                    try
                    {
                        await _db.SaveChangesAsync();
                    }
                    catch (Exception e)
                    {
                        return(BadRequest(e.ToString()));
                    }

                    await updateClients(category.GetContestType(), contestData, category);
                }
                return(Ok());
            }
            return(BadRequest());
        }
Exemple #12
0
 public static string GroupName(this ContestSheetData contest)
 {
     return($"t{contest.TournamentID}c{contest.CategoryID}");
 }
Exemple #13
0
        public static RoundRobinSheetDataDto ToRoundRobinDto(this ContestSheetData contest, Category category)
        {
            List <CompetitorDto> competitors = new List <CompetitorDto>();
            EventResult          result1;
            EventResult          result2;
            EventResult          result3;
            EventResult          result4;
            EventResult          result5;
            EventResult          result6;

            ContestSheetData finalContest;

            switch (category.SheetSize)
            {
            case 3:
                result1 = category.CalculateRR3Result(1);
                category.TryGet(1, out ContestSheetData contest1);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorWhite,
                    Score = result1.Points,
                    Won   = result1.Won,
                });

                result2 = category.CalculateRR3Result(2);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorBlue,
                    Score = result2.Points,
                    Won   = result2.Won,
                });

                result3 = category.CalculateRR3Result(3);
                category.TryGet(2, out ContestSheetData contest2);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest2.CompeditorBlue,
                    Score = result3.Points,
                    Won   = result3.Won,
                });

                if (category.TryGet(3, out finalContest))
                {
                    RankCompetitors();
                }
                break;

            case 4:
                result1 = category.CalculateRR4Result(1);
                category.TryGet(1, out contest1);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorWhite,
                    Score = result1.Points,
                    Won   = result1.Won,
                });

                result2 = category.CalculateRR4Result(2);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorBlue,
                    Score = result2.Points,
                    Won   = result2.Won,
                });

                result3 = category.CalculateRR4Result(3);
                if (category.TryGet(2, out contest2))
                {
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest2.CompeditorWhite,
                        Score = result3.Points,
                        Won   = result3.Won,
                    });

                    result4 = category.CalculateRR4Result(4);
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest2.CompeditorBlue,
                        Score = result4.Points,
                        Won   = result4.Won,
                    });
                }

                if (category.TryGet(6, out finalContest))
                {
                    RankCompetitors();
                }
                break;

            case 5:
                result1 = category.CalculateRR5Result(1);
                category.TryGet(1, out contest1);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorWhite,
                    Score = result1.Points,
                    Won   = result1.Won,
                });

                result2 = category.CalculateRR5Result(2);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorBlue,
                    Score = result2.Points,
                    Won   = result2.Won,
                });

                result3 = category.CalculateRR5Result(3);
                if (category.TryGet(2, out contest2))
                {
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest2.CompeditorWhite,
                        Score = result3.Points,
                        Won   = result3.Won,
                    });

                    result4 = category.CalculateRR5Result(4);
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest2.CompeditorBlue,
                        Score = result4.Points,
                        Won   = result4.Won,
                    });
                }

                if (category.TryGet(3, out var contest3))
                {
                    result5 = category.CalculateRR5Result(5);
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest3.CompeditorBlue,
                        Score = result5.Points,
                        Won   = result5.Won,
                    });
                }

                if (category.TryGet(10, out finalContest))
                {
                    RankCompetitors();
                }
                else
                {
                }
                break;

            case 6:
                result1 = category.CalculateRR6Result(1);
                category.TryGet(1, out contest1);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorWhite,
                    Score = result1.Points,
                    Won   = result1.Won,
                });

                result2 = category.CalculateRR6Result(2);
                competitors.Add(new CompetitorDto
                {
                    Name  = contest1.CompeditorBlue,
                    Score = result2.Points,
                    Won   = result2.Won,
                });

                result3 = category.CalculateRR6Result(3);
                if (category.TryGet(2, out contest2))
                {
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest2.CompeditorWhite,
                        Score = result3.Points,
                        Won   = result3.Won,
                    });

                    result4 = category.CalculateRR6Result(4);
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest2.CompeditorBlue,
                        Score = result4.Points,
                        Won   = result4.Won,
                    });
                }

                if (category.TryGet(3, out contest3))
                {
                    result5 = category.CalculateRR6Result(5);
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest3.CompeditorWhite,
                        Score = result5.Points,
                        Won   = result5.Won,
                    });

                    result6 = category.CalculateRR6Result(6);
                    competitors.Add(new CompetitorDto
                    {
                        Name  = contest3.CompeditorBlue,
                        Score = result6.Points,
                        Won   = result6.Won,
                    });
                }

                if (category.TryGet(15, out finalContest))
                {
                    RankCompetitors();
                }
                else
                {
                }
                break;
            }

            return(new RoundRobinSheetDataDto
            {
                Contest = contest.Contest,
                CompetitorWhite = contest.CompeditorWhite,
                CompetitorBlue = contest.CompeditorBlue,
                IponWhite = contest.IponWhite,
                WazaariWhite = contest.WazaariWhite,
                IponBlue = contest.IponBlue,
                WazaariBlue = contest.WazaariBlue,
                Competitors = competitors,
            });

            void RankCompetitors()
            {
                // Rank the competitors by won contests, then by points. Then assing the ranking.
                var ranked = competitors.OrderByDescending(c => c.Won).ThenByDescending(c => c.Score);

                for (int i = 1; i < ranked.Count() + 1; i++)
                {
                    competitors.Where(c => c.Name == ranked.ElementAt(i - 1).Name).First().Position = i;
                }
            }
        }
Exemple #14
0
        public async Task UpdateSheet(ContestSheetData contestData)
        {
            //await Clients.All.SendAsync("updateSheet", contestData);

            await Clients.Group(contestData.GroupName()).SendAsync("updateSheet", contestData);
        }