Example #1
0
        public void Update(Contact obj)
        {
            using (var session = _context.OpenSession())
            {
                var contact = session.Get <Contact>(obj.Id);

                if (contact != null)
                {
                    using (var transaction = session.BeginTransaction())
                    {
                        //Contact
                        contact.Name    = obj.Name;
                        contact.Company = obj.Company;
                        contact.Address = obj.Address;

                        session.Save(contact);

                        //Add Telephones
                        foreach (var item in obj.Telephones)
                        {
                            if (!contact.Telephones.Any(x => x.Number == item.Number))
                            {
                                _telephoneRepository.Save(item);
                            }
                        }

                        //Delete Telephones
                        foreach (var item in contact.Telephones)
                        {
                            if (!obj.Telephones.Any(x => x.Number == item.Number))
                            {
                                _telephoneRepository.Delete(item.Id);
                            }
                        }

                        //Add Emails
                        foreach (var item in obj.Emails)
                        {
                            if (!contact.Emails.Any(x => x.EmailAddress == item.EmailAddress))
                            {
                                _emailRepository.Save(item);
                            }
                        }

                        //Delete Emails
                        foreach (var item in contact.Emails)
                        {
                            if (!obj.Emails.Any(x => x.EmailAddress == item.EmailAddress))
                            {
                                _emailRepository.Delete(item.Id);
                            }
                        }

                        transaction.Commit();
                    }
                }
            }
        }