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); } } }