예제 #1
0
        private void Init()
        {
            _log.Info("Início do processo: SharepointSyncJob");
            var listItemListaTelefonicaProperties = new List <ItemListaTelefonicaProperties>();

            using (ClientContext tenantContext = new ClientContext(_configuration.TenantUrl))
            {
                SecureString passWord = new SecureString();
                foreach (char c in _configuration.Password.ToCharArray())
                {
                    passWord.AppendChar(c);
                }
                tenantContext.Credentials = new SharePointOnlineCredentials(_configuration.EmailAccount, passWord);
                PeopleManager peopleManager = new PeopleManager(tenantContext);

                UserCollection users = tenantContext.Web.SiteUsers;
                tenantContext.Load(users);
                tenantContext.ExecuteQuery();
                StringBuilder items = new StringBuilder();
                string[]      userProfileProperties =
                {
                    UserProfileProperties.FirstName,
                    UserProfileProperties.LastName,
                    UserProfileProperties.PreferredName,
                    UserProfileProperties.WorkEmail,
                    UserProfileProperties.Pager,
                    UserProfileProperties.Department,
                    UserProfileProperties.CellPhone,
                    UserProfileProperties.PictureURL,
                    UserProfileProperties.Office,
                    UserProfileProperties.IpPhone,
                    UserProfileProperties.WorkPhone,
                    UserProfileProperties.IpPhone,
                    UserProfileProperties.AboutMe,
                    UserProfileProperties.StreetAddress,
                    UserProfileProperties.CityAddress,
                    UserProfileProperties.StateAddress,
                    UserProfileProperties.ZIPAddress,
                    UserProfileProperties.CountryAddress,
                    UserProfileProperties.SPS_Location,
                    UserProfileProperties.Title,
                    UserProfileProperties.Fax,
                    UserProfileProperties.AccountName,
                };

                foreach (string propertyKey in userProfileProperties)
                {
                    items.Append(propertyKey);
                    items.Append(",");
                }
                items.AppendLine();
                _log.Info("A ler os Users profile: SharepointSyncJob");
                foreach (User user in users)
                {
                    try
                    {
                        if (user.PrincipalType != Microsoft.SharePoint.Client.Utilities.PrincipalType.User)
                        {
                            continue;
                        }

                        UserProfilePropertiesForUser userProfilePropertiesForUser = new UserProfilePropertiesForUser(tenantContext, user.LoginName, userProfileProperties);
                        var profileProperties = peopleManager.GetUserProfilePropertiesFor(userProfilePropertiesForUser);
                        tenantContext.Load(userProfilePropertiesForUser);
                        tenantContext.ExecuteQuery();
                        var listProfileProperties = profileProperties.ToList();
                        if (listProfileProperties.Any())
                        {
                            ItemListaTelefonicaProperties itemListaTelefonicaProperties = new ItemListaTelefonicaProperties();

                            itemListaTelefonicaProperties.FirstName     = listProfileProperties[0];
                            itemListaTelefonicaProperties.LastName      = listProfileProperties[1];
                            itemListaTelefonicaProperties.PreferredName = listProfileProperties[2];
                            itemListaTelefonicaProperties.Email         = user.Email;
                            itemListaTelefonicaProperties.Pager         = listProfileProperties[4];
                            itemListaTelefonicaProperties.Department    = listProfileProperties[5];
                            itemListaTelefonicaProperties.CellPhone     = listProfileProperties[6];
                            itemListaTelefonicaProperties.Office        = listProfileProperties[8];
                            itemListaTelefonicaProperties.WorkFax       = listProfileProperties[9];
                            itemListaTelefonicaProperties.WorkPhone     = listProfileProperties[10];
                            itemListaTelefonicaProperties.IpPhone       = listProfileProperties[11];
                            itemListaTelefonicaProperties.AboutMe       = listProfileProperties[12];
                            itemListaTelefonicaProperties.WorkAddress   = listProfileProperties[13];
                            itemListaTelefonicaProperties.WorkCity      = listProfileProperties[14];
                            itemListaTelefonicaProperties.WorkState     = listProfileProperties[15];
                            itemListaTelefonicaProperties.WorkZip       = listProfileProperties[16];
                            itemListaTelefonicaProperties.WorkCountry   = listProfileProperties[17];
                            itemListaTelefonicaProperties.Company       = listProfileProperties[18];
                            itemListaTelefonicaProperties.JobTitle      = listProfileProperties[19];
                            itemListaTelefonicaProperties.WorkFax       = listProfileProperties[20];
                            itemListaTelefonicaProperties.PictureURL    = $"{this._configuration.TenantUrl}{PICTURE_URL}{ user.Email}";

                            listItemListaTelefonicaProperties.Add(itemListaTelefonicaProperties);
                        }
                    }
                    catch (Exception ex)
                    {
                        _log.Error($"-> users no processo: SharepointSyncJob: {ex}", ex);
                    }
                }

                InsertOrUpdateContactoToListContactos(listItemListaTelefonicaProperties);
            }
            _log.Info("Fim do processo: SharepointSyncJob");
        }