Пример #1
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));
        }
Пример #2
0
        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));
        }