示例#1
0
 private Score AddPoint(EJoueurs joueur, Score score)
 {
     if (score.PointLevel == null)
     {
         score.PointLevel = new List <Dictionary <EJoueurs, int> >()
         {
             InitDict()
         };
         score.PointLevel[currentPosition][joueur] += 1;
     }
     else if (score.PointLevel.Count() <= currentPosition)
     {
         score.PointLevel.Add(InitDict());
         score.PointLevel[currentPosition][joueur] += 1;
     }
     else if (!score.PointLevel[currentPosition].ContainsKey(joueur))
     {
         score.PointLevel[currentPosition].Add(joueur, 1);
     }
     else
     {
         score.PointLevel[currentPosition][joueur] += 1;
     }
     return(score);
 }
示例#2
0
 private Score RemiseAZeroManche(EJoueurs joueur, Score score)
 {
     foreach (EJoueurs joueurE in Enum.GetValues(typeof(EJoueurs)))
     {
         if (score.PointLevel[currentPosition].ContainsKey(joueurE))
         {
             score.PointLevel[currentPosition][joueurE] = 0;
         }
     }
     return(score);
 }
示例#3
0
        private bool IsPointEcart(EJoueurs joueur, Score score)
        {
            bool isUnPointEcart = true;

            foreach (EJoueurs joueurE in Enum.GetValues(typeof(EJoueurs)))
            {
                if (joueurE != joueur &&
                    score.PointLevel[currentPosition][joueur] - score.PointLevel[currentPosition][joueurE] < POINT_ECART_MANCHE)
                {
                    isUnPointEcart = false;
                }
            }
            return(isUnPointEcart);
        }
示例#4
0
        private Score CalculPoint(EJoueurs joueur, Score score)
        {
            score = AddPoint(joueur, score);
            int newPointJoueur = score.PointLevel[currentPosition][joueur];
            int pointMaxManche = score.PointLevel[currentPosition].Max(p => p.Value);

            if (newPointJoueur >= POINT_PAR_MANCHE && newPointJoueur == pointMaxManche)
            {
                if (IsPointEcart(joueur, score))
                {
                    //score = AddSet(joueur, score);
                    currentPosition++;
                }
            }
            return(score);
        }
示例#5
0
        private Score AddSet(EJoueurs joueur, Score score)
        {
            if (score.PointLevel.Count() < 2)
            {
                score.PointLevel.Add(InitDict());
                score.PointLevel[1][joueur] += 1;
            }
            else if (!score.PointLevel[1].ContainsKey(joueur))
            {
                score.PointLevel[1].Add(joueur, 1);
            }
            else
            {
                score.PointLevel[1][joueur] += 1;
            }

            return(score);
        }
示例#6
0
        public async Task <IActionResult> DeletePoint(long idMatch, EJoueurs joueur)
        {
            List <Error> errors      = new List <Error>();
            Account      currentUser = await GetCurrentUserAsync();

            var matchs = _context.Tournaments
                         .SelectMany(t => t.Matches)
                         .Where(t => t.Id == idMatch && t.Arbitre == currentUser)
                         .Include(m => m.Score);

            if (matchs.Count() > 0)
            {
                Match match = matchs.Single();

                if (match.Score != null && match.Score.Count() > 0)
                {
                    Point lastPoint = match.Score.OrderByDescending(p => p.Order).Where(p => p.Joueur == joueur).FirstOrDefault();
                    match.Score.Remove(lastPoint);
                    _context.SaveChanges();
                    Score score = new CalculPointPingPong().Calcul(match.Score);

                    return(Ok(score));
                }
                else
                {
                    errors.Add(new Error()
                    {
                        Code        = "NothingToDelete",
                        Description = "impossible de supprimer un point"
                    });
                    return(BadRequest(errors));
                }
            }
            else
            {
                errors.Add(new Error()
                {
                    Code        = "MatchUnknowOrUnAuhthorize",
                    Description = "Le match n'as pas été trouver ou vous n'avez pas acces au match"
                });
                return(BadRequest(errors));
            }
        }