internal static ActiveDirectoryGroup[] GetGroupsFromUser(string userName, string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName);
     
            List<ADGroup> list = ad.User_SearchGroupList(userName);
            ad.Dispose();
            if (list.Count != 0)
            {
                var activeDirectoryGroupList = from g in list select new ActiveDirectoryGroup(g);

                return activeDirectoryGroupList.ToArray<ActiveDirectoryGroup>();
            }
            else
                return null;
        }
        internal static ActiveDirectoryUser[] GetUsersFromGroup(string groupName, string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName);

            List<ADUser> list = ad.Users_SearchByGroupName(groupName);

            ad.Dispose();
            if (list.Count != 0)
            {
                var userList = from u in list select new ActiveDirectoryUser(u);

                return userList.ToArray<ActiveDirectoryUser>();
            }
            else
                return null;
        }
        internal static ActiveDirectoryGroup[] GetGroups(string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName, performCustomWindowsContextImpersonalization);
     
            List<ADGroup> list = ad.Groups_GetAll();

            ad.Dispose();

            if (list.Count != 0)
            {
                var userList = from u in list select new ActiveDirectoryGroup(u);

                return userList.ToArray<ActiveDirectoryGroup>();
            }
            else
                return null;
        }
        internal static bool UserExist(string userName, string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName, performCustomWindowsContextImpersonalization);

            bool exist= ad.User_Exists(userName);

            ad.Dispose();

            return exist;
        }
        internal static void User_Reset_Password(string userName, string newPassword, string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName, performCustomWindowsContextImpersonalization);

            ad.User_ResetPwd(userName, newPassword ,true);

            ad.Dispose();
        }
        internal static void User_SetActivation(string userName, bool disabled, string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName, performCustomWindowsContextImpersonalization);

             ad.User_SetActivation(userName, disabled);
             ad.Dispose();
        }
        internal static void User_Unlock(string userName, string domain)
        {
            ADHelper ad = new ADHelper(domain, ActiveDirectoryService.CnnStringName, performCustomWindowsContextImpersonalization);
            
            //ad.User_SetLockedStatus(userName, false);
            ad.User_Unlock(userName);

            ad.Dispose();
        }