public string GetPermissions(CompanyRoleVm role)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat(@"<select class='permissions' multiple='multiple' style='width:100%' id='{0}'>", role.Id);
            foreach (var item in role.Permissions)
            {
                var selected = item.Selected ? "selected" : "";
                sb.AppendFormat(@"<option value = '{0}' {1} > {2} </option>", item.Value, selected, item.Text);
            }
            sb.AppendFormat(@"</select>");
            return(sb.ToString());
        }
 public ActionResult EditRole(Guid?id)
 {
     try
     {
         var role  = RoleManager.Roles.ToList().FirstOrDefault(x => x.Id == id.ToSafeString());
         var model = new CompanyRoleVm()
         {
             Id          = role.Id,
             Name        = role.Name,
             Description = role.Description,
             IsDeletable = role.IsDeletable,
             IsEditable  = role.IsEditable
         };
         return(PartialView("~/Views/Company/RoleAdd.cshtml", model));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, JsonRequestBehavior.AllowGet));
     }
 }
 public ActionResult ChangeRolePermission(CompanyRoleVm model)
 {
     try
     {
         var mgr = new AspNetRoleClaimsManager();
         if (model.Action == "add")
         {
             mgr.Insert(new AspNetRoleClaims()
             {
                 Id        = Guid.NewGuid(),
                 RoleID    = model.Id,
                 ClaimID   = Guid.Parse(model.PermissionId),
                 CreatedAt = DateTime.Now
             });
         }
         else if (model.Action == "remove")
         {
             var roleClaim = mgr.GetAll().FirstOrDefault(x => x.RoleID == model.Id && x.ClaimID.ToString() == model.PermissionId);
             if (roleClaim != null)
             {
                 mgr.Delete(roleClaim);
             }
         }
         mgr.SaveChanges();
         return(Json(new JsonResponse()
         {
             IsSucess = true
         }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, JsonRequestBehavior.AllowGet));
     }
 }
 public ActionResult SaveRole(CompanyRoleVm role)
 {
     try
     {
         //var mgr = new RoleManager<WFPRole>(new RoleStore<WFPRole>(CurrentContextFromOwin));
         var roleToUpdate = RoleManager.FindById(role.Id);
         if (roleToUpdate == null)
         {
             roleToUpdate             = new WFPRole();
             roleToUpdate.Id          = Guid.NewGuid().ToString();
             roleToUpdate.Name        = role.Name;
             roleToUpdate.Description = role.Description;
             roleToUpdate.IsDeletable = true;
             roleToUpdate.IsEditable  = true;
             RoleManager.Create(roleToUpdate);
         }
         else
         {
             roleToUpdate.Name        = role.Name;
             roleToUpdate.Description = role.Description;
             RoleManager.Update(roleToUpdate);
         }
         Db.SaveChanges();
         return(Json(new JsonResponse()
         {
             IsSucess = true
         }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, 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));
        }