public virtual ActionResult ChangeAsChild(string tabId, int parentId, int id, int?userId, int?groupId)
        {
            var permission = ChildContentService.Read(parentId, id, userId, groupId) ?? ChildEntityPermission.Create(ChildContentService, parentId, userId, groupId);
            var model      = ChildEntityPermissionViewModel.Create(permission, tabId, parentId, ChangeAction, ControllerName, "ChangeAsChild", ChildContentService, userId, groupId, new[] { id });

            return(JsonHtml("ChildEntityPermissionProperties", model));
        }
        private ActionResult SaveAsChild(string tabId, int parentId, Action <ChildEntityPermissionViewModel> action)
        {
            try
            {
                var permission = ChildEntityPermission.Create(ChildContentService, parentId);
                var model      = ChildEntityPermissionViewModel.Create(permission, tabId, parentId, SaveChildPermissionAction, ControllerName, null, ChildContentService, isPostBack: true);
                TryUpdateModel(model);
                try
                {
                    action(model);
                }
                catch (ActionNotAllowedException nae)
                {
                    ModelState.AddModelError("OperationIsNotAllowedForAggregated", nae.Message);
                    return(JsonHtml("ChildEntityPermissionProperties", model));
                }

                TempData[GetChildEntityPermissionModelKey(tabId, parentId)] = model;
                return(Redirect("SaveAsChild", new { tabId, parentId }));
            }
            catch
            {
                TempData.Remove(GetChildEntityPermissionModelKey(tabId, parentId));
                throw;
            }
        }
        public virtual ActionResult MultipleChangeAsChild(string tabId, int parentId, int[] IDs, int?userId, int?groupId)
        {
            var permission = ChildEntityPermission.Create(ChildContentService, parentId, userId, groupId);
            var model      = ChildEntityPermissionViewModel.Create(permission, tabId, parentId, MultipleChangeAction, ControllerName, "SaveMultipleChangeAsChild", ChildContentService, userId, groupId, IDs);

            return(JsonHtml("ChildEntityPermissionProperties", model));
        }
        public virtual async Task <ActionResult> MultipleChangeAsChild(string tabId, int parentId, [FromBody] SelectedItemsViewModel idsModel, int?userId, int?groupId)
        {
            var permission = ChildEntityPermission.Create(ChildContentService, parentId, userId, groupId);
            var model      = ChildEntityPermissionViewModel.Create(permission, tabId, parentId, MultipleChangeAction, ControllerName, "SaveMultipleChangeAsChild", ChildContentService, userId, groupId, idsModel.Ids);

            return(await JsonHtml("ChildEntityPermissionProperties", model));
        }
        public virtual ActionResult AllChangeAsChild(string tabId, int parentId, int?userId, int?groupId)
        {
            if (!userId.HasValue && !groupId.HasValue)
            {
                return(new JsonNetResult <object>(new { success = false, message = EntityPermissionStrings.UserOrGroupAreNotSelected }));
            }

            var permission = ChildEntityPermission.Create(ChildContentService, parentId, userId, groupId);
            var model      = ChildEntityPermissionViewModel.Create(permission, tabId, parentId, AllChangeAction, ControllerName, "AllChangeAsChild", ChildContentService, userId, groupId);

            return(JsonHtml("ChildEntityPermissionProperties", model));
        }