Ejemplo n.º 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 void JoinPlayer(JoinPlayerRequest request, int id)
        {
            var player = _context.Players
                         .Where(p => p.FirstName == request.firstName)
                         .Where(p => p.LastName == request.lastName)
                         .Where(p => p.DateOfBirth == request.birthDate)
                         .SingleOrDefault();

            //czy gracz istnieje
            if (player == null)
            {
                throw new PlayerDoesNotExistException("Gracz nie istnieje");
            }

            //czy gracz przypisany do drużyny
            var playerTeamExist = _context.PlayerTeams
                                  .Any(pt => pt.IdPlayer == player.IdPlayer &&
                                       pt.IdTeam == id);

            if (playerTeamExist)
            {
                throw new PlayerTeamAlreadyExistException("Gracz jest już przypisany do drużyny");
            }

            var team = _context.Teams.Where(t => t.IdTeam == id).SingleOrDefault();

            //czy spelnia kryterium wieku
            var playerAge = (DateTime.Now.Year - request.birthDate.Year);

            if (playerAge > team.MaxAge)
            {
                throw new PlayerTooOldException("Gracz zbyt zaawansowany wiekowo");
            }

            PlayerTeam pt = new PlayerTeam {
                // IdPlayer = player.IdPlayer,
                // IdTeam = id,
                NumOnShirt = request.numOnShirt,
                Comment    = request.comment,
                Player     = player,
                Team       = team
            };

            _context.PlayerTeams.Add(pt);
            _context.SaveChanges();
        }
Ejemplo n.º 3
0
        public void AddPlayerToTeam(int teamId, AddPlayerRequest request)
        {
            var maxAge = _context.Teams
                         .Single(x => x.IdTeam.Equals(teamId))
                         .MaxAge;
            var playerAge = DateTime.Now.Year - request.BirthDate.Year;

            if (playerAge > maxAge)
            {
                throw new PlayerIsToOldException($"The player ({playerAge}) is too old ({maxAge})!");
            }


            var playerExists = _context.Players
                               .Any(x => x.FirstName.Equals(request.FirstName) && x.LastName.Equals(request.LastName));

            if (!playerExists)
            {
                throw new PlayerDoesntExistException($"No such player {request.FirstName} {request.LastName}found");
            }

            var playerId = _context.Players
                           .Single(x => x.FirstName.Equals(request.FirstName) && x.LastName.Equals(request.LastName))
                           .IdPlayer;

            var playerAlreadyInTheTeam = _context.PlayerTeams
                                         .Any(x => x.IdPlayer.Equals(playerId) && x.IdTeam.Equals(teamId));

            if (playerAlreadyInTheTeam)
            {
                throw new PlayerAlreadyInTheTeamException($"The player {playerId} is already in the team {teamId}");
            }

            _context.PlayerTeams.Add(new PlayerTeam
            {
                IdTeam     = teamId,
                IdPlayer   = playerId,
                NumOnShirt = request.NumOnShirt,
                Comment    = request.Comment
            }
                                     );
            _context.SaveChanges();
        }