public List <UserPermStatus> CheckUserPermissions()
        {
            var results = new List <UserPermStatus>();

            try
            {
                var userPermissions = this.SharePointRepository.GetWebUserPermissions(SourceClientContext);
                foreach (var userPermission in userPermissions)
                {
                    string newUpn = string.Empty;
                    if (UserMapping != null)
                    {
                        newUpn = UserMapping.FindNewUpn(userPermission.Key);
                    }

                    if (!String.IsNullOrEmpty(newUpn))
                    {
                        var targetUserPermission = this.SharePointRepository.CheckUserPermissions(TargetClientContext, newUpn);
                        //Report mismatch perms b/w source & target
                        if (userPermission.Value != targetUserPermission)
                        {
                            results.Add(new UserPermStatus
                            {
                                CurrentPermissions  = targetUserPermission,
                                ExpectedPermissions = userPermission.Value,
                                UserStatus          = UserStatus.PresentInUserMapping,
                                LoginName           = newUpn
                            });
                        }
                    }
                    else
                    {
                        //User not in the mapping file
                        results.Add(new UserPermStatus
                        {
                            CurrentPermissions  = UserPermissions.None,
                            ExpectedPermissions = userPermission.Value,
                            UserStatus          = UserStatus.NotPresentInUserMapping,
                            LoginName           = userPermission.Key
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, ex);
            }
            return(results);
        }
        public List <UserGroupStatus> MissingUsersInGroups()
        {
            var results = new List <UserGroupStatus>();

            try
            {
                IDictionary <string, List <string> > usersGroups = null;
                if (SourceSiteCreds.SiteType == SiteType.WSS)
                {
                    //TODO: Get
                    usersGroups = this.SharePointRepository2007.GetWebUserGroups();
                }
                else
                {
                    usersGroups = this.SharePointRepository.GetSiteUserGroups(SourceClientContext);
                }

                foreach (var userGroup in usersGroups)
                {
                    if (!this.SharePointRepository.GroupExists(TargetClientContext, userGroup.Key))
                    {
                        continue;
                    }

                    foreach (var user in userGroup.Value)
                    {
                        string newUpn = user;
                        if (UserMapping != null && UserMapping.GetUserMappingList().Count > 0)
                        {
                            newUpn = UserMapping.FindNewUpn(user);
                        }

                        if (newUpn == string.Empty)
                        {
                            //Missing in the users mapping
                            results.Add(new UserGroupStatus
                            {
                                LoginName         = user,
                                GroupName         = userGroup.Key,
                                UserInGroupStatus = UserStatus.NotPresentInUserMapping
                            });
                            continue;
                        }
                        if (!this.SharePointRepository.UserExistsInGroup(TargetClientContext, userGroup.Key, newUpn))
                        {
                            //misisng in the group
                            results.Add(new UserGroupStatus
                            {
                                LoginName         = newUpn,
                                GroupName         = userGroup.Key,
                                UserInGroupStatus = UserStatus.NotPresentInSharePointGroup
                            });
                            continue;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, ex);
            }
            return(results);
        }