///<summary>Pass in the user and all of the userGroups that the user should be attached to.
        ///Detaches the userCur from any usergroups that are not in the given list.
        ///Returns a count of how many user group attaches were affected.</summary>
        public static long SyncForUser(Userod userCur, List <long> listUserGroupNums)
        {
            if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
            {
                return(Meth.GetLong(MethodBase.GetCurrentMethod(), userCur, listUserGroupNums));
            }
            long rowsChanged = 0;

            foreach (long userGroupNum in listUserGroupNums)
            {
                if (!userCur.IsInUserGroup(userGroupNum))
                {
                    UserGroupAttach userGroupAttach = new UserGroupAttach();
                    userGroupAttach.UserGroupNum = userGroupNum;
                    userGroupAttach.UserNum      = userCur.UserNum;
                    Crud.UserGroupAttachCrud.Insert(userGroupAttach);
                    rowsChanged++;
                }
            }
            foreach (UserGroupAttach userGroupAttach in UserGroupAttaches.GetForUser(userCur.UserNum))
            {
                if (!listUserGroupNums.Contains(userGroupAttach.UserGroupNum))
                {
                    Crud.UserGroupAttachCrud.Delete(userGroupAttach.UserGroupAttachNum);
                    rowsChanged++;
                }
            }
            return(rowsChanged);
        }
 ///<summary>Does not add a new usergroupattach if the passed-in userCur is already attached to userGroup.</summary>
 public static void AddForUser(Userod userCur, long userGroupNum)
 {
     if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
     {
         Meth.GetVoid(MethodBase.GetCurrentMethod(), userCur, userGroupNum);
         return;
     }
     if (!userCur.IsInUserGroup(userGroupNum))
     {
         UserGroupAttach userGroupAttach = new UserGroupAttach();
         userGroupAttach.UserGroupNum = userGroupNum;
         userGroupAttach.UserNum      = userCur.UserNum;
         Crud.UserGroupAttachCrud.Insert(userGroupAttach);
     }
 }
        ///<summary>Determines whether an individual user has a specific permission.</summary>
        public static bool HasPermission(Userod user, Permissions permType, long fKey)
        {
            //No need to check RemotingRole; no call to db.
            GroupPermission groupPermission = GetFirstOrDefault(x => x.PermType == permType && x.FKey == fKey && user.IsInUserGroup(x.UserGroupNum));

            return(groupPermission != null);
        }