public async Task <PagedList <Entity> > GetUserPermissions(UserPermissionQueryParameters userPermissionParameters)
        {
            var userPermissions = FindByCondition(x => x.IsDeleted == false && x.Role.Name != "Agent");

            var filteredAgents = FilterUserPermissions(userPermissions, userPermissionParameters)
                                 .Include(x => x.Role);

            var sortedAgents = SortHelper.ApplySort(filteredAgents, userPermissionParameters.OrderBy);

            var pagedAgents = sortedAgents;

            if (!userPermissionParameters.SkipPageSize)
            {
                pagedAgents = sortedAgents
                              .Skip((userPermissionParameters.PageNumber - 1) * userPermissionParameters.PageSize)
                              .Take(userPermissionParameters.PageSize)
                              .Include(x => x.Role);
            }

            var mappedAgents = pagedAgents
                               .ProjectTo <UserPermissionDTO>(_mapper.ConfigurationProvider);

            var shapedAgents = DataShaper.ShapeData(mappedAgents, userPermissionParameters.Fields);

            return(await PagedList <Entity>
                   .ToPagedList(shapedAgents, filteredAgents.Count(), userPermissionParameters.PageNumber, userPermissionParameters.PageSize));
        }
        /// <summary>
        /// Gets the userPermissions.
        /// </summary>
        /// <param name="userPermissionParameters">The userPermission parameters.</param>
        /// <returns></returns>
        public async Task <CSSResponse> GetUserPermissions(UserPermissionQueryParameters userPermissionParameters)
        {
            var userPermissions = await _repository.UserPermissions.GetUserPermissions(userPermissionParameters);

            _httpContextAccessor.HttpContext.Response.Headers.Add("X-Pagination", PagedList <Entity> .ToJson(userPermissions));

            return(new CSSResponse(userPermissions, HttpStatusCode.OK));
        }
        private IQueryable <UserPermission> FilterUserPermissions(IQueryable <UserPermission> userPermissions, UserPermissionQueryParameters userPermissionQueryParameters)
        {
            if (!userPermissions.Any() || string.IsNullOrWhiteSpace(userPermissionQueryParameters.SearchKeyword))
            {
                return(userPermissions);
            }

            if (!string.IsNullOrWhiteSpace(userPermissionQueryParameters.SearchKeyword))
            {
                userPermissions = userPermissions.Where(o =>
                                                        (o.EmployeeId.ToLower().Contains(userPermissionQueryParameters.SearchKeyword.Trim().ToLower())) ||
                                                        (o.Firstname.ToLower().Contains(userPermissionQueryParameters.SearchKeyword.Trim().ToLower())) ||
                                                        (o.Lastname.ToLower().Contains(userPermissionQueryParameters.SearchKeyword.Trim().ToLower()))
                                                        );
            }

            return(userPermissions);
        }
        public async Task <IActionResult> GetAgents([FromQuery] UserPermissionQueryParameters agentParameters)
        {
            var result = await _agentService.GetUserPermissions(agentParameters);

            return(StatusCode((int)result.Code, result.Value));
        }