public override PessoaJuridica Atualizar(PessoaJuridica pessoaJuridica) { PessoaJuridica existingPessoaJuridica = Db.PessoasJuridicas.Include("ContatosCliente") .Include("EnderecosCliente") .Where(e => e.ClienteId == pessoaJuridica.ClienteId).FirstOrDefault <PessoaJuridica>(); List <EnderecoCliente> deletedEnderecos = existingPessoaJuridica.EnderecosCliente.Except(pessoaJuridica.EnderecosCliente, e => e.EnderecoClienteId).ToList <EnderecoCliente>(); List <ContatoCliente> deletedContatos = existingPessoaJuridica.ContatosCliente.Except(pessoaJuridica.ContatosCliente, c => c.ContatoClienteId).ToList <ContatoCliente>(); List <EnderecoCliente> addedEnderecos = pessoaJuridica.EnderecosCliente.Except(existingPessoaJuridica.EnderecosCliente, e => e.EnderecoClienteId).ToList <EnderecoCliente>(); List <ContatoCliente> addedContatos = pessoaJuridica.ContatosCliente.Except(existingPessoaJuridica.ContatosCliente, c => c.ContatoClienteId).ToList <ContatoCliente>(); if (deletedEnderecos.Count() > 0 || deletedContatos.Count() > 0) { deletedEnderecos.ForEach(e => { existingPessoaJuridica.EnderecosCliente.Remove(e); _enderecoClienteRepositorio.Remover(e.EnderecoClienteId); }); deletedContatos.ForEach(c => { existingPessoaJuridica.ContatosCliente.Remove(c); _contatoClienteRepositorio.Remover(c.ContatoClienteId); }); } if (addedContatos.Count() > 0 || addedEnderecos.Count() > 0) { foreach (ContatoCliente c in addedContatos) { c.ClienteId = pessoaJuridica.ClienteId; if (Db.Entry(c).State == System.Data.Entity.EntityState.Detached) { Db.ContatosClientes.Attach(c); } _contatoClienteRepositorio.Adicionar(c); } foreach (EnderecoCliente e in addedEnderecos) { e.ClienteId = pessoaJuridica.ClienteId; if (Db.Entry(e).State == System.Data.Entity.EntityState.Detached) { Db.EnderecosClientes.Attach(e); } _enderecoClienteRepositorio.Adicionar(e); } } Db.Set <PessoaJuridica>().AddOrUpdate(pessoaJuridica); List <EnderecoCliente> modifiedEnderecos = pessoaJuridica.EnderecosCliente.Except(addedEnderecos, e => e.EnderecoClienteId).ToList <EnderecoCliente>(); List <ContatoCliente> modifiedContatos = pessoaJuridica.ContatosCliente.Except(addedContatos, c => c.ContatoClienteId).ToList <ContatoCliente>(); foreach (var item in modifiedEnderecos) { Db.Set <EnderecoCliente>().AddOrUpdate(item); } foreach (var item in modifiedContatos) { Db.Set <ContatoCliente>().AddOrUpdate(item); } return(existingPessoaJuridica); }
public EnderecoCliente Adicionar(EnderecoCliente enderecoCliente) { return(_enderecoClienteRepositorio.Adicionar(enderecoCliente)); }