Пример #1
0
        private void SaveUsers(BaseCamp basecampManager)
        {
            var employees = basecampManager.People;
            var step = 100.0 / employees.Count();
            foreach (var person in employees.Where(x => _withClosed ? true : !x.Deleted))
            {
                try
                {

                    Status.UserProgress += step;
                    Guid userID = FindUserByEmail(person.EmailAddress);

                    if (userID.Equals(Guid.Empty))
                    {
                        UserInfo userInfo = new UserInfo()
                        {
                            Email = person.EmailAddress,
                            FirstName = person.FirstName,
                            LastName = person.LastName,
                            Title = person.Title,
                            Status = person.Deleted ? EmployeeStatus.Terminated : EmployeeStatus.Active,
                        };

                        if (!string.IsNullOrEmpty(person.PhoneNumberMobile))
                            userInfo.AddSocialContact(SocialContactsManager.ContactType_mobphone, person.PhoneNumberMobile);
                        if (!string.IsNullOrEmpty(person.PhoneNumberHome))
                            userInfo.AddSocialContact(SocialContactsManager.ContactType_phone, person.PhoneNumberHome);
                        if (!string.IsNullOrEmpty(person.PhoneNumberOffice))
                            userInfo.AddSocialContact(SocialContactsManager.ContactType_phone, person.PhoneNumberOffice);
                        if (!string.IsNullOrEmpty(person.PhoneNumberFax))
                            userInfo.AddSocialContact(SocialContactsManager.ContactType_phone, person.PhoneNumberFax);
                        if (!string.IsNullOrEmpty(person.ImHandle))
                            switch (person.ImService)
                            {
                                case "MSN":
                                    userInfo.AddSocialContact(SocialContactsManager.ContactType_msn, person.ImHandle);
                                    break;
                                case "ICQ":
                                    userInfo.AddSocialContact(SocialContactsManager.ContactType_icq, person.ImHandle);
                                    break;
                                case "Yahoo":
                                    userInfo.AddSocialContact(SocialContactsManager.ContactType_yahoo, person.ImHandle);
                                    break;
                                case "Jabber":
                                    userInfo.AddSocialContact(SocialContactsManager.ContactType_jabber, person.ImHandle);
                                    break;
                                case "Skype":
                                    userInfo.AddSocialContact(SocialContactsManager.ContactType_skype, person.ImHandle);
                                    break;
                                case "Google":
                                    userInfo.AddSocialContact(SocialContactsManager.ContactType_gmail, person.ImHandle);
                                    break;
                            }

                        var newUserInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(),false,!_disableNotifications);
                        if (person.Administrator)
                            CoreContext.UserManager.AddUserIntoGroup(newUserInfo.ID, ASC.Core.Users.Constants.GroupAdmin.ID);
                        NewUsersID.Add(new UserIDWrapper() { inBasecamp = person.ID, inProjects = newUserInfo.ID });

                        //save user avatar
                        const string emptyAvatar = "http://asset1.37img.com/global/missing/avatar.png?r=3";//TODO:?!!! Wtf??!!
                        if (person.AvatarUrl != emptyAvatar)
                            UserPhotoManager.SaveOrUpdatePhoto(newUserInfo.ID, StreamFile(person.AvatarUrl));
                    }
                    else
                    {
                        NewUsersID.Add(new UserIDWrapper() { inBasecamp = person.ID, inProjects = userID });
                    }
                }
                catch (Exception e)
                {
                    Status.LogError(string.Format(SettingsResource.FailedToSaveUser, person.EmailAddress), e);
                    LogError(string.Format("user '{0}' failed", person.EmailAddress), e);
                    NewUsersID.RemoveAll(x => x.inBasecamp == person.ID);
                }
            }
        }