public string CheckMergeAllowed(IResourceList contacts) { int entryIdCount = 0; foreach (IResource contact in contacts) { REGISTRY.ClearNeeded(contact); if (contact.HasProp(PROP.EntryID) && !contact.HasProp("UserCreated")) { ++entryIdCount; if (entryIdCount > 1) { return("Please select only one contact which is synchronized with Outlook"); } } } return(null); }
private IContact FindOrCreateRegularContact(string entryID) { IContact contactBO = null; IResource resource = Contact.FindByEntryID(entryID); if (resource != null) { contactBO = Core.ContactManager.GetContact(resource); UpdateFields(contactBO); contactBO.AddAccount(_emailAddress); } else { contactBO = TryGettingLastExportedContact(); if (contactBO != null) { UpdateFields(contactBO); contactBO.AddAccount(_emailAddress); return(contactBO); } IResourceList contacts = _namesExist ? Core.ContactManager.FindContactList(_namePrefix, _firstName, _middleName, _lastName, _suffix) : Core.ContactManager.FindContactList(_fullName); IResourceList contactsWithEmail = null; IResource accntRes = Core.ContactManager.FindOrCreateEmailAccount(_emailAddress); if (accntRes != null) { contactsWithEmail = accntRes.GetLinksOfType("Contact", "EmailAcct"); contacts = contacts.Intersect(contactsWithEmail, true); } IResource candidat = null; foreach (IResource res in contacts) { if (res.HasProp(PROP.EntryID)) { REGISTRY.ClearNeeded(res); } } foreach (IResource res in contacts) { if (!res.HasProp(PROP.EntryID)) { candidat = res; break; } } if (candidat != null) { contactBO = Core.ContactManager.GetContact(candidat); UpdateFields(contactBO); contactBO.AddAccount(_emailAddress); } else { IResource blankContact = null; if (contactsWithEmail != null) { foreach (IResource res in contactsWithEmail) { if (ContactManager.IsEmptyContact(res)) { blankContact = res; break; } } } bool updateContact = false; if (blankContact != null) { string strEntryID = blankContact.GetStringProp(PROP.EntryID); if (strEntryID == null || strEntryID == entryID) { updateContact = true; } } if (updateContact) { contactBO = Core.ContactManager.GetContact(blankContact); UpdateFields(contactBO); contactBO.AddAccount(_emailAddress); } else { contactBO = CreateContact( ); contactBO.AddAccount(_emailAddress); } } } return(contactBO); }