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());
        }
示例#2
0
        public async Task <ActionResult <IEnumerable <StaffDto> > > GetStaff(
            [FromQuery] StaffResourceParameters staffResourceParameters)
        {
            var staffFromRepo = await _staffRepo.GetAllStaffAsync(staffResourceParameters);

            return(Ok(_mapper.Map <IEnumerable <StaffDto> >(staffFromRepo)));
        }