示例#1
0
        public DataSourceResult SearchUsers(SearchUsersQuery request)
        {
            if (request == null)
            {
                throw new System.ArgumentNullException(nameof(request));
            }

            var query = _context.UserProfiles.Include(x => x.User).AsQueryable();

            if (!string.IsNullOrEmpty(request.Username))
            {
                query = query.Where(x => x.User.Username.Contains(request.Username.ToLower()));
            }

            if (!string.IsNullOrEmpty(request.FirstName))
            {
                query = query.Where(x => x.FirstName.ToLower().Contains(request.FirstName.ToLower()));
            }

            if (!string.IsNullOrEmpty(request.LastName))
            {
                query = query.Where(x => x.LastName.ToLower().Contains(request.LastName.ToLower()));
            }

            query = query.OrderByDescending(x => x.CreatedOn);

            var result = new PagedResult <UserProfile>(query, request.PageIndex, request.PageSize);

            var response = new DataSourceResult
            {
                Data            = result.AsQueryable().ProjectTo <UserDto>(_mapper.ConfigurationProvider),
                HasPreviousPage = result.HasPreviousPage,
                HasNextPage     = result.HasNextPage,
                PageIndex       = result.PageIndex,
                PageSize        = result.PageSize,
                RecordsFiltered = result.Count,
                RecordsTotal    = result.TotalCount,
                TotalPages      = result.TotalPages
            };

            return(response);
        }