public ContatoRepresentada Adicionar(ContatoRepresentada contatoRepresentada) { if (!contatoRepresentada.EhValido()) { return(contatoRepresentada); } return(_contatoRepresentadaRepositorio.Adicionar(contatoRepresentada)); }
public override Representada Atualizar(Representada representada) { Representada existingRepresentada = Db.Representadas. Include("CondicoesPagamento").Include("ContatosRepresentada") .Where(r => r.RepresentadaId == representada.RepresentadaId).FirstOrDefault <Representada>(); List <CondicaoPagamento> deletedCondicoesPagamento = existingRepresentada.CondicoesPagamento.Except(representada.CondicoesPagamento, c => c.CondicaoPagamentoId).ToList <CondicaoPagamento>(); List <ContatoRepresentada> deletedContatos = existingRepresentada.ContatosRepresentada.Except(representada.ContatosRepresentada, c => c.ContatoRepresentadaId).ToList <ContatoRepresentada>(); List <CondicaoPagamento> addedCondicoesPagamento = representada.CondicoesPagamento.Except(existingRepresentada.CondicoesPagamento, c => c.CondicaoPagamentoId).ToList <CondicaoPagamento>(); List <ContatoRepresentada> addedContatos = representada.ContatosRepresentada.Except(existingRepresentada.ContatosRepresentada, c => c.ContatoRepresentadaId).ToList <ContatoRepresentada>(); if (deletedCondicoesPagamento.Count() > 0 || deletedContatos.Count() > 0) { deletedCondicoesPagamento.ForEach(c => { existingRepresentada.CondicoesPagamento.Remove(c); _condicaoPagamentoRepositorio.Remover(c.CondicaoPagamentoId); }); deletedContatos.ForEach(c => { existingRepresentada.ContatosRepresentada.Remove(c); _contatoRepresentadaRepositorio.Remover(c.ContatoRepresentadaId); }); } if (addedCondicoesPagamento.Count() > 0 || addedContatos.Count() > 0) { foreach (ContatoRepresentada c in addedContatos) { c.RepresentadaId = representada.RepresentadaId; if (Db.Entry(c).State == System.Data.Entity.EntityState.Detached) { Db.ContatosRepresentada.Attach(c); } _contatoRepresentadaRepositorio.Adicionar(c); } foreach (CondicaoPagamento c in addedCondicoesPagamento) { c.RepresentadaId = representada.RepresentadaId; if (Db.Entry(c).State == System.Data.Entity.EntityState.Detached) { Db.CondicoesPagamento.Attach(c); } _condicaoPagamentoRepositorio.Adicionar(c); } } Db.Set <Representada>().AddOrUpdate(representada); List <ContatoRepresentada> modifiedContatos = representada.ContatosRepresentada.Except(addedContatos, c => c.ContatoRepresentadaId).ToList <ContatoRepresentada>(); List <CondicaoPagamento> modifiedCondicoesPagamento = representada.CondicoesPagamento.Except(addedCondicoesPagamento, c => c.CondicaoPagamentoId).ToList <CondicaoPagamento>(); foreach (var item in modifiedContatos) { item.RepresentadaId = representada.RepresentadaId; Db.Set <ContatoRepresentada>().AddOrUpdate(item); } foreach (var item in modifiedCondicoesPagamento) { item.RepresentadaId = representada.RepresentadaId; Db.Set <CondicaoPagamento>().AddOrUpdate(item); } return(existingRepresentada); }