public async Task <IEnumerable <Staff> > GetAllStaffAsync(StaffResourceParameters staffResourceParameters) { var staffToReturn = _context.Staff as IQueryable <Staff>; if (staffResourceParameters.RoleId != 0) { var roleId = staffResourceParameters.RoleId; staffToReturn = _context.StaffRoles .Where(sr => sr.RoleId == roleId) .Include(sr => sr.Staff) .Select(sr => sr.Staff); } if (!String.IsNullOrWhiteSpace(staffResourceParameters.SearchQuery)) { var queryString = staffResourceParameters.SearchQuery.ToLower().Trim(); staffToReturn = staffToReturn.Where(s => s.FirstName.ToLower().Contains(queryString) || s.MiddleNames.ToLower().Contains(queryString) || s.LastName.ToLower().Contains(queryString)); } var pageSize = staffResourceParameters.PageSize; var pageNumber = staffResourceParameters.PageNumber; return(await staffToReturn.Skip((pageNumber - 1) *pageSize) .Take(pageSize).Include(s => s.StaffRoles) .ThenInclude(sr => sr.Role).ToListAsync()); }
public async Task <ActionResult <IEnumerable <StaffDto> > > GetStaff( [FromQuery] StaffResourceParameters staffResourceParameters) { var staffFromRepo = await _staffRepo.GetAllStaffAsync(staffResourceParameters); return(Ok(_mapper.Map <IEnumerable <StaffDto> >(staffFromRepo))); }