Example #1
0
        public Result <QueryRolePermissionResult> QueryRolePermission(QueryRolePermissionCriteria criteria)
        {
            HandlePaginationAndDirectionValidation(criteria);

            if (!RolePermissionRepository.SortableFields.Contains(criteria.OrderBy, StringComparer.OrdinalIgnoreCase))
            {
                criteria.OrderBy = string.Empty;
            }

            var result = rolePermissionRepository.QueryRolePermission(criteria);

            return(new Result <QueryRolePermissionResult>(result));
        }
Example #2
0
        public QueryRolePermissionResult QueryRolePermission(QueryRolePermissionCriteria criteria)
        {
            if (criteria.Page == null || criteria.PageSize == null)
            {
                return(null);
            }

            var pageSize  = criteria.PageSize.Value;
            var pageValue = criteria.Page.Value;

            IQueryable <RolePermissionEntity> queryable = this.context.RolePermissions;

            if (!string.IsNullOrEmpty(criteria.RoleId))
            {
                queryable = queryable.Where(our => our.RoleId.Equals(criteria.RoleId));
            }

            if (!string.IsNullOrEmpty(criteria.RoleName))
            {
                queryable = queryable.Where(our => our.RoleName.Equals(criteria.RoleName));
            }

            if (criteria.OrganizationId.HasValue)
            {
                queryable = queryable.Where(our => our.OrganizationId.Equals(criteria.OrganizationId));
            }

            if (!string.IsNullOrWhiteSpace(criteria.OrderBy))
            {
                var descending   = criteria.Direction.ToUpper() == "DESC";
                var orderByField = criteria.OrderBy.ToLowerInvariant();

                switch (orderByField)
                {
                case SortIsDefault:
                    queryable = queryable.OrderBy(r => !r.IsDefault, descending);
                    break;

                case SortDisplayName:
                    queryable = queryable.OrderBy(r => r.DisplayName, descending);
                    break;

                default:
                    queryable = queryable.OrderBy(r => r.DisplayName, false);
                    break;
                }
            }

            var count = queryable.Count();

            var page = (pageValue - 1) * pageSize;

            var views = queryable
                        .Skip(page)
                        .Take(pageSize)
                        .ToList();

            var results = views.Select(p => this.mapper.Map <RolePermissionListView>(p))
                          .ToList();


            return(new QueryRolePermissionResult
            {
                Pagination = new PaginationModel(count, pageValue, pageSize),
                Result = results
            });
        }