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)); } }
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(); }
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); } }