public async Task <IActionResult> GetPlayersInSquad(int squadId, [FromQuery] SquadPlayerQuery squadPlayerQuery) { squadPlayerQuery.SquadId = squadId; if (squadPlayerQuery.SeasonId.HasValue && squadPlayerQuery.ClubId.HasValue) { var squad = await _squadService .GetDetailBySeasonIdAndClubIdAsync(squadPlayerQuery.SeasonId.Value, squadPlayerQuery.ClubId.Value); squadPlayerQuery.SquadId = squad.Id; } var players = await _squadService.GetPlayersInSquadAsync(squadPlayerQuery); var returnPlayers = _mapper.Map <PaginatedList <SquadPlayerListDto> >(players); return(Ok(returnPlayers)); }
public async Task <PaginatedList <SquadPlayer> > GetAsync(SquadPlayerQuery squadPlayerQuery) { var query = Context.SquadPlayers .Include(sp => sp.Squad) .Include(sp => sp.Player) .Where(sp => sp.SquadId == squadPlayerQuery.SquadId) .AsQueryable(); if (squadPlayerQuery.IsActive) { query = query.Where(sp => sp.EndDate == null || sp.EndDate > DateTime.Now); } if (squadPlayerQuery.Name != null) { query = query.Where(sp => sp.Player.Name.Contains(squadPlayerQuery.Name)); } if (squadPlayerQuery.PositionType.HasValue) { query = query.Where(sp => sp.Player.PositionType == squadPlayerQuery.PositionType); } var columnsMap = new Dictionary <string, Expression <Func <SquadPlayer, object> > >() { ["id"] = sp => sp.Player.Id, ["name"] = sp => sp.Player.Name, ["positionType"] = sp => sp.Player.PositionType, ["nationality"] = sp => sp.Player.Nationality, ["birthdate"] = sp => sp.Player.Birthdate, ["height"] = sp => sp.Player.Height, ["weight"] = sp => sp.Player.Weight, ["number"] = sp => sp.Number, ["startDate"] = sp => sp.StartDate, ["endDate"] = sp => sp.EndDate }; query = query.Sort(squadPlayerQuery, columnsMap); return(await PaginatedList <SquadPlayer> .CreateAsync(query, squadPlayerQuery.PageNumber, squadPlayerQuery.PageSize)); }
public async Task <PaginatedList <SquadPlayer> > GetPlayersInSquadAsync(SquadPlayerQuery squadPlayerQuery) { return(await _squadPlayerRepository.GetAsync(squadPlayerQuery)); }