Exemple #1
0
        public void AddPlayerToTeam(AddPlayerToTeamRequest req, int teamId)
        {
            var player = _context.Players.FirstOrDefault(p => p.FirstName == req.FirstName && p.LastName == req.LastName);

            if (player == null)
            {
                throw new PlayerNotFoundException($"There is no player {req.FirstName} {req.LastName}");
            }
            var team = _context.Teams.FirstOrDefault(t => t.IdTeam == teamId);

            if (team == null)
            {
                throw new TeamsNotFoundException($"There is no team with id: {teamId}");
            }

            if (team.MaxAge < (DateTime.Today.Year - player.DateOfBirth.Year))
            {
                throw new TooOldPlayerForThisTeamException($"Player id:{player.IdPlayer} is too old for team id {teamId}");
            }

            var newPlayerToTeam = new PlayerTeam
            {
                IdPlayer   = player.IdPlayer,
                IdTeam     = team.IdTeam,
                NumOnShirt = req.NumOnShirt,
                Comment    = req.Comment,
            }
            _context.PlayerTeams.Add(newPlayerToTeam);

            _context.SaveChanges();
        }
 public IActionResult AddPlayerToTeam(int id, AddPlayerToTeamRequest req)
 {
     try {
         _service.AddPlayerToTeam(req, id);
         return(Ok());
     }catch (PlayerNotFoundException ex)
     {
         return(NotFound(ex.Message));
     }catch (TeamsNotFoundException ex)
     {
         return(NotFound(ex.Message));
     }catch (TooOldPlayerForThisTeamException ex)
     {
         return(BadRequest(ex.Message));
     }
 }
Exemple #3
0
 public IActionResult SetPlayerIntoTeam(AddPlayerToTeamRequest request, int id)
 {
     try
     {
         _context.AddPlayerToTeams(request, id);
         return(NoContent());
     }catch (PlayerIsAlreadyInTeamException exc)
     {
         return(BadRequest(exc.Message));
     }catch (PlayerIsToOldException exc)
     {
         return(BadRequest(exc.Message));
     }
     catch (PlayerNotexistsException exc)
     {
         return(NotFound(exc.Message));
     }
 }
        public void AddPlayerToTeams(AddPlayerToTeamRequest request, int id)
        {
            var yearPlayer   = DateTime.Now.Year - request.BirthDate.Year;
            var maxAgeOfTeam = _context.Teams.Where(m => m.IdTeam == id).Select(m => m.MaxAge).FirstOrDefault();

            if (yearPlayer > maxAgeOfTeam)
            {
                throw new PlayerIsToOldException("Player is too old for this team");
            }

            var player = _context.Players.Where(m => m.FirstName == request.FirstName && m.LastName == request.LastName &&
                                                m.DateOfBirth == request.BirthDate).FirstOrDefault();

            if (player == null)
            {
                throw new PlayerNotexistsException("Player not exitst");
            }

            var isPlayerInTeam = _context.PlayerTeams.Count(m => m.IdPlayer == player.IdPlayer);

            if (isPlayerInTeam != 0)
            {
                throw new PlayerIsAlreadyInTeamException("Player is already in team");
            }

            var teamPlayer = new PlayerTeam
            {
                IdPlayer   = player.IdPlayer,
                IdTeam     = id,
                NumOnShirt = request.NumOnShirt,
                Comment    = request.Comment
            };


            _context.Attach(teamPlayer);
            _context.Add(teamPlayer);
            _context.SaveChangesAsync();
        }
Exemple #5
0
        public IActionResult GetChampionshipTeams(AddPlayerToTeamRequest request)
        {
            return(Ok(_service.AddPlayerToTeam(request)));

            //Stara wersja:

            /*var playerTeam = new PlayerTeam();
             * playerTeam.IdPlayer = request.idTeam;
             * playerTeam.IdTeam = request.idTeam;
             * playerTeam.NumOnShirt = request.numOnShirt;
             * playerTeam.Comment = request.comment;
             *
             * using (var con = new SqlConnection("Data Source=db-mssql;Initial Catalog=s17470;Integrated Security=True"))
             * using (var com = new SqlCommand())
             * {
             *  com.Connection = con;
             *  con.Open();
             *  var tran = con.BeginTransaction();
             *
             *  try
             *  {
             *      //1. Sprawdzamy czy wiek jest odpowiedni:
             *      com.CommandText = "SELECT MaxAge FROM Team WHERE IdTeam=@idteam";
             *      com.Parameters.AddWithValue("idteam", playerTeam.IdTeam);
             *      com.Transaction = tran;
             *      var dr = com.ExecuteReader();
             *
             *      //1.1 Sprawdzamy czy druzyna istnieje:
             *      if (!dr.Read()) //jesli zapytanie NIC nie zwrocilo..
             *      {
             *          dr.Close();
             *          tran.Rollback(); //wycofujemy transakcje
             *          return BadRequest("Drużyna nie istnieje.");  //musimy zwrocic blad
             *      }
             *
             *      int maxAge = (int)dr["MaxAge"];
             *      if (Int32.Parse(request.age) > maxAge)
             *      {
             *          dr.Close();
             *          tran.Rollback(); //wycofujemy transakcje
             *          return BadRequest("Zawodnik jest za stary do tej drużyny.");  //musimy zwrocic blad
             *      }
             *      dr.Close();
             *
             *      //2. Sprawdzamy czy podany gracz istnieje w bazie
             *      com.CommandText = "SELECT IdPlayer FROM Player WHERE IdPlayer=@idplayer";
             *      com.Parameters.AddWithValue("idplayer", playerTeam.IdPlayer);
             *      dr = com.ExecuteReader();
             *      if (!dr.Read()) //jesli zapytanie NIC nie zwrocilo..
             *      {
             *          dr.Close();
             *          tran.Rollback(); //wycofujemy transakcje
             *          return BadRequest("Gracz nie istnieje.");  //musimy zwrocic blad
             *      }
             *      dr.Close();
             *
             *      //3. Sprawdzamy czy podany gracz jest juz moze przypisany do druzyny (jakiejkolwiek)
             *      com.CommandText = "SELECT IdPlayer FROM Player_Team WHERE IdPlayer=@idplayer";
             *      com.Parameters.AddWithValue("idplayer", playerTeam.IdPlayer);
             *      dr = com.ExecuteReader();
             *
             *      if (dr.Read()) //jesli zapytanie COŚ zwrocilo..
             *      {
             *          dr.Close();
             *          tran.Rollback(); //wycofujemy transakcje
             *          return BadRequest("Gracz już jest przypisany do druzyny!");  //musimy zwrocic blad
             *      }
             *      dr.Close();
             *
             *      //4. Przypisujemy gracza do druzyny
             *      com.CommandText = "INSERT INTO Player_Team (IdPlayer,IdTeam,NumOnShirt,Comment) VALUES (@idplayer,@idteam,@numonshirt,@comment)";
             *      com.Parameters.AddWithValue("idplayer", playerTeam.IdPlayer);
             *      com.Parameters.AddWithValue("idteam", playerTeam.IdTeam);
             *      com.Parameters.AddWithValue("numonshirt", playerTeam.NumOnShirt);
             *      com.Parameters.AddWithValue("comment", playerTeam.Comment);
             *
             *      com.ExecuteNonQuery();
             *      tran.Commit();
             *      dr.Close();
             *  }catch (SqlException exc)
             *  {
             *      tran.Rollback();
             *      return BadRequest("Powazny blad podczas przetwarzania.");
             *  }
             *
             *  return Ok("Gracz dodany do druzyny.");
             * }*/
        }
        public PlayerTeam AddPlayerToTeam(AddPlayerToTeamRequest request)
        {
            var playerTeam = new PlayerTeam();

            playerTeam.IdPlayer   = request.idTeam;
            playerTeam.IdTeam     = request.idTeam;
            playerTeam.NumOnShirt = request.numOnShirt;
            playerTeam.Comment    = request.comment;

            using (var con = new SqlConnection("Data Source=db-mssql;Initial Catalog=s17470;Integrated Security=True"))
                using (var com = new SqlCommand())
                {
                    com.Connection = con;
                    con.Open();
                    var tran = con.BeginTransaction();

                    try
                    {
                        //1. Sprawdzamy czy wiek jest odpowiedni:
                        com.CommandText = "SELECT MaxAge FROM Team WHERE IdTeam=@idteam";
                        com.Parameters.AddWithValue("idteam", playerTeam.IdTeam);
                        com.Transaction = tran;
                        var dr = com.ExecuteReader();

                        //1.1 Sprawdzamy czy druzyna istnieje:
                        if (!dr.Read()) //jesli zapytanie NIC nie zwrocilo..
                        {
                            dr.Close();
                            tran.Rollback();                              //wycofujemy transakcje
                            throw new Exception("Drużyna nie istnieje."); //musimy zwrocic blad
                        }

                        int maxAge = (int)dr["MaxAge"];
                        if (Int32.Parse(request.age) > maxAge)
                        {
                            dr.Close();
                            tran.Rollback();                                               //wycofujemy transakcje
                            throw new Exception("Zawodnik jest za stary do tej drużyny."); //musimy zwrocic blad
                        }
                        dr.Close();

                        //2. Sprawdzamy czy podany gracz istnieje w bazie
                        com.CommandText = "SELECT IdPlayer FROM Player WHERE IdPlayer=@idplayer";
                        com.Parameters.AddWithValue("idplayer", playerTeam.IdPlayer);
                        dr = com.ExecuteReader();
                        if (!dr.Read()) //jesli zapytanie NIC nie zwrocilo..
                        {
                            dr.Close();
                            tran.Rollback();                            //wycofujemy transakcje
                            throw new Exception("Gracz nie istnieje."); //musimy zwrocic blad
                        }
                        dr.Close();

                        //3. Sprawdzamy czy podany gracz jest juz moze przypisany do druzyny (jakiejkolwiek)
                        com.CommandText = "SELECT IdPlayer FROM Player_Team WHERE IdPlayer=@idplayer";
                        com.Parameters.AddWithValue("idplayer", playerTeam.IdPlayer);
                        dr = com.ExecuteReader();

                        if (dr.Read()) //jesli zapytanie COŚ zwrocilo..
                        {
                            dr.Close();
                            tran.Rollback();                                              //wycofujemy transakcje
                            throw new Exception("Gracz już jest przypisany do druzyny!"); //musimy zwrocic blad
                        }
                        dr.Close();

                        //4. Przypisujemy gracza do druzyny
                        com.CommandText = "INSERT INTO Player_Team (IdPlayer,IdTeam,NumOnShirt,Comment) VALUES (@idplayer,@idteam,@numonshirt,@comment)";
                        com.Parameters.AddWithValue("idplayer", playerTeam.IdPlayer);
                        com.Parameters.AddWithValue("idteam", playerTeam.IdTeam);
                        com.Parameters.AddWithValue("numonshirt", playerTeam.NumOnShirt);
                        com.Parameters.AddWithValue("comment", playerTeam.Comment);

                        com.ExecuteNonQuery();
                        tran.Commit();
                        dr.Close();
                    }
                    catch (SqlException exc)
                    {
                        tran.Rollback();
                        throw new Exception("Powazny blad podczas przetwarzania.");
                    }

                    return(playerTeam);
                }
        }