public void AddUserToGroups(List <UserOrganizationItem> organizations, string userId, AllGroupResult groups, string groupId = "", string groupName = "")
        {
            foreach (var org in organizations)
            {
                var orgName = org.Organization.OrganizationName;

                if (orgName.Length > 75)
                {
                    orgName = orgName.Substring(0, 75);
                }

                var group = groups.Groups.SingleOrDefault(x => x.Group_id == org.Organization.DocumentLibraryGroupId) ??
                            groups.Groups.SingleOrDefault(x => x.Name == orgName);

                if (group == null)
                {
                    if (org.Organization.DocumentLibraryGroupId == null)
                    {
                        continue;
                    }

                    GroupFullResult groupResult = null;

                    groupResult = this.GetGroupByName(!string.IsNullOrEmpty(groupName) ? groupName : orgName);

                    if (groupResult == null)
                    {
                        throw new Exception($"Cannot find group {orgName} in True Vault");
                    }

                    group = groupResult.Group;
                }

                groupId   = group.Group_id;
                groupName = group.Name;


                try
                {
                    this.UpdateGroup(groupId, groupName, userId);
                }
                catch
                {
                    //Ignore Exception user already exists
                }
            }
        }
        public string CreateUser(List <UserOrganizationItem> organizations, string userName, string userId, AllGroupResult groups = null)
        {
            if (userName.Length > 75)
            {
                userName = userName.Substring(0, 75);
            }

            if (groups == null)
            {
                groups = this.GetAllGroups();
            }

            if (groups.Result != Success)
            {
                throw new Exception($"Cannot create user in True Vault - GroupResult: {groups.Result}");
            }

            if (string.IsNullOrWhiteSpace(userId))
            {
                var password = EncryptionHelper.GetRandomString(20);

                var userResult = this.CreateUser(userName, password);

                if (userResult.Result != Success)
                {
                    throw new Exception($"Cannot create user in True Vault - UserResult: {userResult.Result}");
                }

                userId = userResult.User.Id;
            }

            this.AddUserToGroups(organizations, userId, groups);

            return(userId);
        }