public ActionResult EditRole(AdminEditRoleViewModel viewModel)
        {
            var role = MembershipService.GetRole(viewModel.Id, false);

            if (role == null)
            {
                return(RedirectToAction("Roles"));
            }

            if (ModelState.IsValid)
            {
                using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
                {
                    try
                    {
                        if (!role.Lock)
                        {
                            role.RoleName = viewModel.RoleName;
                            MembershipService.Update(role);
                        }

                        _permissionService.ClearPermissionsInRole(role);

                        if (viewModel.AllPermissions != null)
                        {
                            foreach (var it in viewModel.AllPermissions)
                            {
                                if (it.Check && it.Id != null)
                                {
                                    _permissionService.AddPermissionInRole((Guid)it.Id, role.Id);
                                }
                            }
                        }

                        unitOfWork.Commit();

                        TempData[AppConstants.MessageViewBagName] = new GenericMessageViewModel
                        {
                            Message     = "Sửa thông tin chức vụ thành công.",
                            MessageType = GenericMessages.success
                        };
                        //return RedirectToAction("Roles");
                    }
                    catch (Exception ex)
                    {
                        LoggingService.Error(ex.Message);
                        unitOfWork.Rollback();

                        TempData[AppConstants.MessageViewBagName] = new GenericMessageViewModel
                        {
                            Message     = "Có lỗi xảy ra khi sưa thông tin chức vụ!",
                            MessageType = GenericMessages.warning
                        };
                    }
                }
            }

            return(View(viewModel));
        }
        public ActionResult AddRole()
        {
            var viewModel = new AdminEditRoleViewModel
            {
                AllPermissions = GetListRolePermissions()
            };


            return(View(viewModel));
        }
        public ActionResult EditRole(Guid id)
        {
            var role = MembershipService.GetRole(id);

            if (role == null)
            {
                return(RedirectToAction("Roles"));
            }

            var model = new AdminEditRoleViewModel
            {
                Id             = role.Id,
                RoleName       = role.RoleName,
                Lock           = role.Lock,
                AllPermissions = GetListRolePermissions(role)
            };


            return(View(model));
        }