private ConsolidatedResult CreateUniqueResult(string email, string connectionName)
        {
            var claimAttribute = new ClaimAttribute
            {
                ClaimEntityType = SPClaimEntityTypes.User,
                PeoplePickerAttributeDisplayName     = connectionName,
                PeoplePickerAttributeHierarchyNodeId = connectionName
            };

            var user = new Auth0.User
            {
                Email      = email,
                Name       = string.Empty,
                Picture    = string.Empty,
                Identities = new List <Identity>
                {
                    new Identity
                    {
                        Connection = connectionName,
                        IsSocial   = this.IsSocialConnection(connectionName)
                    }
                }
            };

            return(new ConsolidatedResult
            {
                Attribute = claimAttribute,
                Auth0User = user,
                PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
            });
        }
        protected virtual ICollection <ConsolidatedResult> ResolveInputBulk(string input, string selectedNode)
        {
            Auth0LoggingService.Write("ResolveInputBulk: input={0}, selectedNode={1}", input, selectedNode);

            if (string.IsNullOrEmpty(input))
            {
                return(null);
            }

            if (this.auth0Client == null)
            {
                Auth0LoggingService.WriteError("Auth0 client was not initialized.");
                return(null);
            }

            IEnumerable <Auth0.User> users = null;
            var consolidatedResults        = new Collection <ConsolidatedResult>();

            try
            {
                Auth0LoggingService.Write("ResolveInputBulk: Searching for social and enterprise users.");

                var socialUsers     = this.auth0Client.GetSocialUsers(input);
                var enterpriseUsers = this.auth0Client.GetEnterpriseUsers(input);

                // Distinct by user.Email
                users = socialUsers.Union(enterpriseUsers).DistinctBy(u => u.Email);

                // Log results.
                Auth0LoggingService.Write("ResolveInputBulk: Found {0}.", users != null ? users.Count() : 0);
            }
            catch (Exception ex)
            {
                Auth0LoggingService.WriteError(ex.ToString());
            }

            if (users != null)
            {
                foreach (var user in users)
                {
                    var claimAttribute = new ClaimAttribute
                    {
                        ClaimEntityType = SPClaimEntityTypes.User,
                        PeoplePickerAttributeDisplayName     = UsersNode,
                        PeoplePickerAttributeHierarchyNodeId = UsersNode
                    };

                    consolidatedResults.Add(new ConsolidatedResult
                    {
                        Attribute    = claimAttribute,
                        Auth0User    = user,
                        PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
                    });
                }
            }

            return(consolidatedResults);
        }
        protected virtual ICollection <ConsolidatedResult> ResolveInputBulk(string input, string selectedNode)
        {
            var consolidatedResults = new Collection <ConsolidatedResult>();

            if (string.IsNullOrEmpty(input))
            {
                return(null);
            }

            IEnumerable <Auth0.User> users = null;

            try
            {
                var socialUsers     = this.auth0Client.GetSocialUsers(input);
                var enterpriseUsers = this.auth0Client.GetEnterpriseUsers(input);

                // distinct by user.Email
                users = socialUsers.Union(enterpriseUsers).DistinctBy(u => u.Email);
            }
            catch (Exception ex)
            {
                Utils.LogToULS(ex.ToString(), TraceSeverity.Unexpected, EventSeverity.Error);
            }

            if (users != null)
            {
                foreach (var user in users)
                {
                    var claimAttribute = new ClaimAttribute
                    {
                        ClaimEntityType = SPClaimEntityTypes.User,
                        PeoplePickerAttributeDisplayName     = UsersNode,
                        PeoplePickerAttributeHierarchyNodeId = UsersNode
                    };

                    consolidatedResults.Add(new ConsolidatedResult
                    {
                        Attribute    = claimAttribute,
                        Auth0User    = user,
                        PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
                    });
                }
            }

            return(consolidatedResults);
        }
        private IEnumerable <ConsolidatedResult> CreateAllUsersResults(string selectedNode)
        {
            var results    = new List <ConsolidatedResult>();
            var identities = new List <Identity>();

            var connections = this.GetConnections(selectedNode);

            foreach (var connection in connections)
            {
                identities.Add(new Identity
                {
                    Connection = connection.Name,
                    IsSocial   = this.IsSocialConnection(connection.Name)
                });
            }

            foreach (var identity in identities)
            {
                var claimAttribute = new ClaimAttribute
                {
                    ClaimEntityType = SPClaimEntityTypes.FormsRole,
                    PeoplePickerAttributeDisplayName     = identity.Connection,
                    PeoplePickerAttributeHierarchyNodeId = identity.Connection
                };

                var user = new Auth0.User
                {
                    Identities = new List <Identity> {
                        identity
                    }
                };

                results.Add(new ConsolidatedResult
                {
                    Attribute    = claimAttribute,
                    Auth0User    = user,
                    PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole)
                });
            }

            return(results);
        }
        private IEnumerable<ConsolidatedResult> CreateAllUsersResults(string selectedNode)
        {
            var results = new List<ConsolidatedResult>();
            var identities = new List<Identity>();

            var connections = this.GetConnections(selectedNode);
            foreach (var connection in connections)
            {
                identities.Add(new Identity
                {
                    Connection = connection.Name,
                    IsSocial = this.IsSocialConnection(connection.Name)
                });
            }

            foreach (var identity in identities)
            {
                var claimAttribute = new ClaimAttribute
                {
                    ClaimEntityType = SPClaimEntityTypes.FormsRole,
                    PeoplePickerAttributeDisplayName = identity.Connection,
                    PeoplePickerAttributeHierarchyNodeId = identity.Connection
                };

                var user = new Auth0.User
                {
                    Identities = new List<Identity> { identity }
                };

                results.Add(new ConsolidatedResult
                {
                    Attribute = claimAttribute,
                    Auth0User = user,
                    PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole)
                });
            }

            return results;
        }
        private ConsolidatedResult CreateUniqueResult(string email, string connectionName)
        {
            var claimAttribute = new ClaimAttribute
            {
                ClaimEntityType = SPClaimEntityTypes.User,
                PeoplePickerAttributeDisplayName = connectionName,
                PeoplePickerAttributeHierarchyNodeId = connectionName
            };

            var user = new Auth0.User
            {
                Email = email,
                Name = string.Empty,
                Picture = string.Empty,
                Identities = new List<Identity> 
                { 
                    new Identity 
                    { 
                        Connection = connectionName, 
                        IsSocial = this.IsSocialConnection(connectionName)
                    }
                }
            };

            return new ConsolidatedResult
            {
                Attribute = claimAttribute,
                Auth0User = user,
                PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
            };
        }
        protected virtual ICollection<ConsolidatedResult> ResolveInputBulk(string input, string selectedNode)
        {
            Auth0LoggingService.Write("ResolveInputBulk: input={0}, selectedNode={1}", input, selectedNode);

            if (string.IsNullOrEmpty(input))
            {
                return null;
            }

            if (this.auth0Client == null)
            {
                Auth0LoggingService.WriteError("Auth0 client was not initialized.");
                return null;
            }

            IEnumerable<Auth0.User> users = null;
            var consolidatedResults = new Collection<ConsolidatedResult>();

            try
            {
                Auth0LoggingService.Write("ResolveInputBulk: Searching for social and enterprise users.");

                var socialUsers = this.auth0Client.GetSocialUsers(input);
                var enterpriseUsers = this.auth0Client.GetEnterpriseUsers(input);

                // Distinct by user.Email
                users = socialUsers.Union(enterpriseUsers).DistinctBy(u => u.Email);

                // Log results.
                Auth0LoggingService.Write("ResolveInputBulk: Found {0}.", users != null ? users.Count() : 0);
            }
            catch (Exception ex)
            {
                Auth0LoggingService.WriteError(ex.ToString());
            }

            if (users != null)
            {
                foreach (var user in users)
                {
                    var claimAttribute = new ClaimAttribute
                    {
                        ClaimEntityType = SPClaimEntityTypes.User,
                        PeoplePickerAttributeDisplayName = UsersNode,
                        PeoplePickerAttributeHierarchyNodeId = UsersNode
                    };

                    consolidatedResults.Add(new ConsolidatedResult
                    {
                        Attribute = claimAttribute,
                        Auth0User = user,
                        PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
                    });
                }
            }

            return consolidatedResults;
        }