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)); }
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)); }