Пример #1
0
        /// <summary>
        /// Merges two contacts into single contact.
        /// </summary>
        /// <param name="firstContact">The first contact.</param>
        /// <param name="secondContact">The second contact.</param>
        /// <returns>the merged contact.</returns>
        public static Contact Merge(Contact firstContact, Contact secondContact)
        {
            Check.NotNull(firstContact, "firstContact");
            Check.NotNull(secondContact, "secondContact");

            if (firstContact.FullName != secondContact.FullName)
                throw new InvalidOperationException("Cannot merge contacts from different users!");

            Contact mergedContact = firstContact.Copy();
            mergedContact.Accounts = firstContact.Accounts | secondContact.Accounts;

            return mergedContact;
        }
Пример #2
0
        /// <summary>
        /// Separates contacts.
        /// </summary>
        /// <param name="contact">The contact</param>
        /// <returns>a list with contacts.</returns>
        public static IEnumerable<Contact> Separate(Contact contact)
        {
            var accounts = EnumHelper.GetFlags(contact.Accounts);
            if (accounts.Count() == 1)
                throw new InvalidOperationException("The contact has only one account");

            foreach (var account in accounts)
            {
                Contact newContact = contact.Copy();
                newContact.Accounts = (Accounts)account;

                yield return newContact;
            }
        }