public async Task <IActionResult> AddPlayerToSquad(int squadId,
                                                           [FromBody] SquadPlayerAddDto squadPlayerAddDto)
        {
            var squad = await _squadService.GetDetailByIdAsync(squadId);

            if (squad == null)
            {
                return(NotFound());
            }

            var player = await _playerService.GetDetailByIdAsync(squadPlayerAddDto.PlayerId);

            if (player == null)
            {
                return(NotFound());
            }

            if (player.SquadPlayers.Any(sp => sp.Squad.SeasonId == squad.SeasonId))
            {
                return(BadRequest());
            }

            if (squad.SquadPlayers.Any(sp => sp.Number == squadPlayerAddDto.Number))
            {
                return(BadRequest());
            }

            if (squadPlayerAddDto.StartDate < player.Birthdate)
            {
                return(BadRequest());
            }

            if (squadPlayerAddDto.EndDate.HasValue && squadPlayerAddDto.EndDate.Value < squadPlayerAddDto.StartDate)
            {
                return(BadRequest());
            }

            squad.SquadPlayers.Add(new SquadPlayer
            {
                Squad     = squad,
                Player    = player,
                Number    = squadPlayerAddDto.Number,
                StartDate = squadPlayerAddDto.StartDate,
                EndDate   = squadPlayerAddDto.EndDate
            });

            await _squadService.UpdateAsync(squad);

            return(Ok());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> UpdateSquad(int id, [FromBody] SquadUpdateDto squadUpdateDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var squad = await _squadService.GetByIdAsync(id);

            if (squad == null)
            {
                return(NotFound());
            }

            var existSquad = await _squadService
                             .GetDetailBySeasonIdAndClubIdAsync(squadUpdateDto.SeasonId, squadUpdateDto.ClubId);

            if (existSquad != null && (existSquad.Id != squad.Id))
            {
                return(BadRequest());
            }

            _mapper.Map(squadUpdateDto, squad);
            await _squadService.UpdateAsync(squad);

            var updatedSquad = await _squadService.GetByIdAsync(id);

            var returnSquad = _mapper.Map <SquadDetailDto>(updatedSquad);

            return(Ok(returnSquad));
        }
Ejemplo n.º 3
0
        public async Task <Models.Squad> Update(Models.Squad squad)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; //TODO move to currentUserContext

            return(await _squadService.UpdateAsync(squad, userId));
        }