Exemplo n.º 1
0
        /// <summary>
        /// Add new contact or update existing contact, and save to file
        /// </summary>
        public void AddOrUpdate(ContactItemModel contact, bool userNameInStandardFormat)
        {
            var catName = userNameInStandardFormat
                ? contact.LastName[0].ToString().ToUpper() : contact.FirstName[0].ToString().ToUpper();

            if (contact.ID == -1)
            {
                // Update contact
                var id = SqLiteManager.AddOrUpdateContact(contact);
                contact.ID       = id;
                contact.Category = GetCategory(catName);
                Items.Add(contact);

                RaiseCollectionChange(
                    contact,
                    new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
            }
            else
            {
                foreach (var item in Items)
                {
                    if (item.ID == contact.ID)
                    {
                        var newCatName = userNameInStandardFormat
                            ? contact.LastName[0].ToString().ToUpper() : contact.FirstName[0].ToString().ToUpper();

                        item.EmailAddress  = contact.EmailAddress;
                        item.EmailAddress2 = contact.EmailAddress2;
                        item.FirstName     = contact.FirstName;
                        item.LastName      = contact.LastName;
                        item.PhoneNumber   = contact.PhoneNumber;
                        item.PhoneNumber2  = contact.PhoneNumber2;
                        item.Category      = GetCategory(newCatName);
                        item.ImagePath     = contact.ImagePath;

                        RaiseCollectionChange(
                            contact,
                            new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
                        SqLiteManager.AddOrUpdateContact(contact);

                        return;
                    }
                }

                throw new IndexOutOfRangeException($"Contact ID {contact.ID} not found");
            }
        }