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)); }
public ActionResult InitializeUsers([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel) { List <CompanyUsersVm> users = new List <CompanyUsersVm>(); List <WFPUser> usersList = UserManager.Users.ToList(); List <SelectItemPair> roles = RoleManager.Roles.Select(x => new SelectItemPair() { Text = x.Name, Value = x.Id }).ToList(); foreach (var user in usersList) { var u = new CompanyUsersVm() { Id = Guid.Parse(user.Id), Name = user.UserName, FirstName = user.FirstName, LastName = user.LastName, Status = ((UserStatusEnum)user.Status).ToString(), }; UserManager.GetRoles(user.Id); List <SelectItemPair> rolesThisUser = new List <SelectItemPair>(); foreach (var role in roles) { SelectItemPair roleThisUser = new SelectItemPair() { Text = role.Text, Value = role.Value }; if (user.Roles.Select(x => x.RoleId).Contains(role.Value)) { roleThisUser.Selected = true; } rolesThisUser.Add(roleThisUser); } u.Roles = rolesThisUser; users.Add(u); } var totalCount = users.Count(); #region Filtering // Apply filters for searching if (requestModel.Search.Value != string.Empty) { var value = requestModel.Search.Value.Trim(); users = users.Where(p => p.Name.Contains(value)).ToList(); } var filteredCount = users.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") { users = column.SortDirection.ToString() == "Ascendant" ? users.OrderBy(x => x.Name).ToList() : users.OrderByDescending(x => x.Name).ToList(); } if (column.Data == "FirstName") { users = column.SortDirection.ToString() == "Ascendant" ? users.OrderBy(x => x.FirstName).ToList() : users.OrderByDescending(x => x.FirstName).ToList(); } if (column.Data == "LastName") { users = column.SortDirection.ToString() == "Ascendant" ? users.OrderBy(x => x.LastName).ToList() : users.OrderByDescending(x => x.LastName).ToList(); } } orderByString = "Ordered"; } if (orderByString == string.Empty) { users = users.OrderBy(x => x.Name).ToList(); } #endregion Sorting // Paging if (requestModel.Length != -1) { users = users.Skip(requestModel.Start).Take(requestModel.Length).ToList(); } var result = users. ToList() .Select(x => new { Id = x.Id.ToString(), Name = x.Name, FirstName = x.FirstName, LastName = x.LastName, Status = x.Status, Roles = GetRoles(x), Actions = GetActionsUsers(x), }); return(Json(new DataTablesResponse (requestModel.Draw, result, filteredCount, totalCount), JsonRequestBehavior.AllowGet)); }