/// <summary>
        /// Loads currently selected parent users.
        /// </summary>
        /// <param name="forceReload">Forces reload of selected values</param>
        private void LoadParentData(bool forceReload = false)
        {
            // Get the active child users
            DataSet ds = UserHierarchyInfoProvider.GetUserHierarchies(_currentSiteId).WhereEquals("ChildUserId", _currentUserId);

            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                _selectedParents = TextHelper.Join(selParent.ValuesSeparator.ToString(), DataHelper.GetStringValues(ds.Tables[0], "ParentUserId"));
                if (!URLHelper.IsPostback() || forceReload)
                {
                    selParent.Value = _selectedParents;
                }
            }
            else
            {
                if (forceReload)
                {
                    selParent.Value = string.Empty;
                }
            }

            // Filtering data on control for child users.
            selChild.WhereCondition = _currentSiteUsersFilter
                                      + (string.IsNullOrWhiteSpace(_selectedParents)
                    ? string.Empty
                    : $" and UserId not in ({_selectedParents})");
        }
Пример #2
0
        public void UserWithOneLevelChilds()
        {
            var childs = UserHierarchyInfoProvider.GetAllChilds(1, 12).ToList();

            Assert.AreEqual(3, childs.Count());
            Assert.Contains(14, childs);
            Assert.Contains(15, childs);
            Assert.Contains(16, childs);
        }
Пример #3
0
        public void UserWithMultipleLevelChilds()
        {
            var childs = UserHierarchyInfoProvider.GetAllChilds(1, 7).ToList();

            Assert.AreEqual(11, childs.Count());
            Assert.Contains(11, childs);
            Assert.Contains(12, childs);
            Assert.Contains(13, childs);
            Assert.Contains(14, childs);
            Assert.Contains(15, childs);
            Assert.Contains(16, childs);
            Assert.Contains(2, childs);
            Assert.Contains(4, childs);
            Assert.Contains(5, childs);
            Assert.Contains(9, childs);
            Assert.Contains(10, childs);
        }
Пример #4
0
 private void Delete_After(object sender, ObjectEventArgs e)
 {
     if (e.Object.TypeInfo.Equals(UserInfo.TYPEINFO))
     {
         var userId = e.Object.GetIntegerValue("UserID", 0);
         if (userId != 0)
         {
             var userHierarchies = UserHierarchyInfoProvider.GetUserHierarchies()
                                   .WhereEquals("ParentUserId", userId)
                                   .Or()
                                   .WhereEquals("ChildUserId", userId);
             foreach (var uh in userHierarchies)
             {
                 uh.Delete();
             }
         }
     }
 }
Пример #5
0
        public void UserWithCycledChilds()
        {
            var childs = UserHierarchyInfoProvider.GetAllChilds(1, 5).ToList();

            Assert.AreEqual(4, childs.Count());
            if (childs.Count() > 0)
            {
                var grouped = childs.GroupBy(v => v, v => v).Where(s => s.Count() > 1);
                Assert.AreEqual(0, grouped.Count());
            }
            else
            {
                Assert.Fail();
            }
            Assert.Contains(9, childs);
            Assert.Contains(10, childs);
            Assert.Contains(2, childs);
            Assert.Contains(4, childs);
        }
        private void SelChild_OnSelectionChanged(object sender, EventArgs e)
        {
            bool reloadSecond = false;

            // Remove old items
            string newValues = ValidationHelper.GetString(selChild.Value, null);
            string items     = DataHelper.GetNewItemsInList(newValues, _selectedChilds);

            if (!string.IsNullOrEmpty(items))
            {
                var newItems = items.Split(new[] { selChild.ValuesSeparator }, StringSplitOptions.RemoveEmptyEntries);
                // Add all new items to site
                foreach (string item in newItems)
                {
                    int childId = ValidationHelper.GetInteger(item, 0);
                    UserHierarchyInfoProvider.DeleteUserHierarchyInfo(new UserHierarchyInfo
                    {
                        ParentUserId = _currentUserId,
                        ChildUserId  = childId,
                        SiteId       = _currentSiteId
                    });

                    if (_currentUserId == childId)
                    {
                        reloadSecond = true;
                    }
                }
            }

            // Add new items
            items = DataHelper.GetNewItemsInList(_selectedChilds, newValues);
            if (!string.IsNullOrEmpty(items))
            {
                var newItems = items.Split(new[] { selChild.ValuesSeparator }, StringSplitOptions.RemoveEmptyEntries);
                // Add all new items to site
                foreach (string item in newItems)
                {
                    int childId = ValidationHelper.GetInteger(item, 0);
                    UserHierarchyInfoProvider.SetUserHierarchyInfo(new UserHierarchyInfo
                    {
                        ParentUserId = _currentUserId,
                        ChildUserId  = childId,
                        SiteId       = _currentSiteId
                    });

                    if (_currentUserId == childId)
                    {
                        reloadSecond = true;
                    }
                }
            }

            // Reload second selector
            if (reloadSecond)
            {
                LoadParentData(true);
                selParent.Reload(true);
            }

            ShowChangesSaved();
        }
Пример #7
0
        public void UserWithoutChilds()
        {
            var childs = UserHierarchyInfoProvider.GetAllChilds(1, 8);

            Assert.IsEmpty(childs);
        }
Пример #8
0
        public void NonNullResult()
        {
            var childs = UserHierarchyInfoProvider.GetAllChilds(2, 1);

            Assert.IsNotNull(childs);
        }