Exemplo n.º 1
0
        public ActionResult InitializePermissions([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            var mgr = new AspNetClaimsManager();
            IEnumerable <CompanyPermissionVm> permissions = mgr.GetAll("RoleClaims").Select(x => new CompanyPermissionVm()
            {
                Id          = x.Id.ToString(),
                ClaimType   = x.ClaimType,
                ClaimValue  = x.ClaimValue,
                RolesCount  = x.RoleClaims.Count.ToString(),
                IsEditable  = !SecurityConstants.ClaimsAll.Contains(x.ClaimValue),
                IsDeletable = !SecurityConstants.ClaimsAll.Contains(x.ClaimValue)
            }).ToList();

            var totalCount = permissions.Count();

            #region Filtering
            // Apply filters for searching
            if (requestModel.Search.Value != string.Empty)
            {
                var value = requestModel.Search.Value.Trim();
                permissions = permissions.AsEnumerable().
                              Where(p => p.ClaimValue.Contains(value)
                                    );
            }

            var filteredCount = permissions.Count();

            #endregion Filtering

            #region Sorting
            // Sorting
            var sortedColumns = requestModel.Columns.GetSortedColumns();
            var orderByString = String.Empty;

            if (sortedColumns.Count() > 0)
            {
                foreach (var column in sortedColumns)
                {
                    if (column.Data == "ClaimValue")
                    {
                        permissions = column.SortDirection.ToString() == "Ascendant" ?
                                      permissions.OrderBy(x => x.ClaimValue) :
                                      permissions.OrderByDescending(x => x.ClaimValue);
                    }

                    if (column.Data == "ClaimType")
                    {
                        permissions = column.SortDirection.ToString() == "Ascendant" ?
                                      permissions.OrderBy(x => x.ClaimType) :
                                      permissions.OrderByDescending(x => x.ClaimType);
                    }

                    if (column.Data == "RolesCount")
                    {
                        permissions = column.SortDirection.ToString() == "Ascendant" ?
                                      permissions.OrderBy(x => x.RolesCount) :
                                      permissions.OrderByDescending(x => x.RolesCount);
                    }
                }
                orderByString = "Ordered";
            }

            if (orderByString == string.Empty)
            {
                permissions = permissions.OrderBy(x => x.ClaimType);
            }
            #endregion Sorting

            // Paging
            if (requestModel.Length != -1)
            {
                permissions = permissions.Skip(requestModel.Start).Take(requestModel.Length);
            }

            var result = permissions.
                         ToList()
                         .Select(x => new
            {
                Id         = x.Id.ToString(),
                ClaimType  = x.ClaimType,
                ClaimValue = x.ClaimValue,
                RolesCount = x.RolesCount.ToString(),
                Actions    = GetActionsPermissions(x.Id),
            });

            return(Json(new DataTablesResponse
                            (requestModel.Draw, result, filteredCount, totalCount),
                        JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
        public ActionResult InitializeRoles([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            var mgr = new AspNetClaimsManager();

            List <CompanyRoleVm> roles = new List <CompanyRoleVm>();

            foreach (var role in RoleManager.Roles)
            {
                var roleVm = new CompanyRoleVm()
                {
                    Id          = role.Id,
                    Name        = role.Name,
                    Description = role.Description,
                    IsDeletable = role.IsDeletable,
                    IsEditable  = role.IsEditable
                };

                List <SelectItemPair> permissions = new List <SelectItemPair>();
                foreach (var claim in mgr.GetAll("RoleClaims").ToList())
                {
                    var permission = new SelectItemPair()
                    {
                        Text = claim.ClaimValue, Value = claim.Id.ToString()
                    };
                    var roleClaimRoleIds = claim.RoleClaims.Select(x => x.RoleID); // ctx.RoleClaims.Where(x => x.RoleID == roleVm.Id).Select(x => x.ClaimID);
                    if (roleClaimRoleIds.Contains(roleVm.Id))
                    {
                        permission.Selected = true;
                    }
                    permissions.Add(permission);
                }
                roleVm.Permissions = permissions;
                roles.Add(roleVm);
            }

            var totalCount = roles.Count();

            #region Filtering
            // Apply filters for searching
            if (requestModel.Search.Value != string.Empty)
            {
                var value = requestModel.Search.Value.Trim();
                roles = roles.Where(p => p.Name.Contains(value)).ToList();
            }

            var filteredCount = roles.Count();

            #endregion Filtering

            #region Sorting
            // Sorting
            var sortedColumns = requestModel.Columns.GetSortedColumns();
            var orderByString = String.Empty;

            if (sortedColumns.Count() > 0)
            {
                foreach (var column in sortedColumns)
                {
                    if (column.Data == "Name")
                    {
                        roles = column.SortDirection.ToString() == "Ascendant" ?
                                roles.OrderBy(x => x.Name).ToList() :
                                roles.OrderByDescending(x => x.Name).ToList();
                    }

                    if (column.Data == "Description")
                    {
                        roles = column.SortDirection.ToString() == "Ascendant" ?
                                roles.OrderBy(x => x.Description).ToList() :
                                roles.OrderByDescending(x => x.Description).ToList();
                    }
                }
                orderByString = "Ordered";
            }

            if (orderByString == string.Empty)
            {
                roles = roles.OrderBy(x => x.Name).ToList();
            }
            #endregion Sorting

            // Paging
            if (requestModel.Length != -1)
            {
                roles = roles.Skip(requestModel.Start).Take(requestModel.Length).ToList();
            }

            var result = roles.
                         ToList()
                         .Select(x => new
            {
                Id          = x.Id.ToString(),
                Name        = x.Name,
                Description = x.Description,
                Permissions = GetPermissions(x),
                Actions     = GetActionsRoles(x.Id),
            });

            return(Json(new DataTablesResponse
                            (requestModel.Draw, result, filteredCount, totalCount),
                        JsonRequestBehavior.AllowGet));
        }