public async Task <IActionResult> GetClubPlayers([FromRoute] int clubId, [FromQuery] PlayerFilterCriteria filterCriteria) { filterCriteria.ClubId = clubId; var players = await _membersService.GetPlayers(filterCriteria); return(Json(players)); }
private bool Filter(Member p, PlayerFilterCriteria filterCriteria, DateTime now) { var years = p.DateOfBirth.HasValue ? (DateTime.MinValue + (now - p.DateOfBirth.Value)).Year - 1 : 0; return(p.Height >= filterCriteria.MinHeight && p.Height <= filterCriteria.MaxHeight && p.Weight >= filterCriteria.MinWeight && p.Weight <= filterCriteria.MaxWeight && years >= filterCriteria.MinAge && years <= filterCriteria.MaxAge); }
public async Task <IEnumerable <PlayerFilterResult> > GetPlayersByCriteria(PlayerFilterCriteria filterCriteria) { IdentityRole playerRole = await GetMemberRole(r => r.Name == Role.Player.ToString()); IQueryable <Member> players = _dbContext .Members .Include(m => m.IdentityUser) .ThenInclude(u => u.Roles) .Include(m => m.MemberPositions); players = players.Where(m => m.IdentityUser.Roles.Any(r => r.RoleId == playerRole.Id)); if (filterCriteria.ClubId.HasValue) { players = players.Include(p => p.Club).Where(p => p.Club.Id == filterCriteria.ClubId.Value); } else { players = players.Include(p => p.Club).Where(p => p.Club == null); } if (!string.IsNullOrWhiteSpace(filterCriteria.Name)) { players = players.Where(p => p.FirstName.StartsWith(filterCriteria.Name, StringComparison.OrdinalIgnoreCase) || p.LastName.StartsWith(filterCriteria.Name, StringComparison.OrdinalIgnoreCase)); } var now = DateTime.Now; players = players.Where(p => Filter(p, filterCriteria, now)); if (filterCriteria.Position != 0) { players = players.Where(p => p.MemberPositions.Any(mp => mp.Position.Name == filterCriteria.Position.ToString())); } return(players.Select(p => new PlayerFilterResult { Id = p.Id, ClubId = filterCriteria.ClubId, FirstName = p.FirstName, Height = p.Height, LastName = p.LastName, Weight = p.Weight, PositionId = p.MemberPositions.First().PostitionId, Thumbnail = p.PhotoThumbnailPath, DateOfBirth = p.DateOfBirth })); }
public async Task <IEnumerable <PlayerFilterResult> > GetPlayers(PlayerFilterCriteria filterCriteria) { var players = (await _membersRepository.GetPlayersByCriteria(filterCriteria)).ToList(); if (players.Any()) { foreach (var player in players) { var positionName = _membersRepository.GetPositionById(player.PositionId).Name; var position = (PlayerPosition?)Enum.Parse(typeof(PlayerPosition), positionName, true); player.PreferedPosition = position; byte[] imageArray = File.ReadAllBytes(player.Thumbnail); string base64ImageRepresentation = Convert.ToBase64String(imageArray); player.Thumbnail = base64ImageRepresentation; } } return(players); }
public async Task <IActionResult> GetPlayers([FromQuery] PlayerFilterCriteria filterCriteria) { IEnumerable <PlayerFilterResult> players = await _membersService.GetPlayers(filterCriteria); return(Json(players)); }