public List <Pessoa> ObterPessoasRelacionadas(Requerimento requerimento, BancoDeDados bancoCredenciado) { List <Pessoa> pessoasRelacionadas = new List <Pessoa>(); List <string> cpfCnpj = requerimento.Responsaveis.Where(x => x.Representantes != null) .SelectMany(x => x.Representantes) .ToList() .Select(x => x.CPFCNPJ) .ToList(); pessoasRelacionadas.AddRange( requerimento.Pessoas.Where(x => cpfCnpj.Exists(y => x.IsFisica && y == x.CPFCNPJ))); pessoasRelacionadas.Add( requerimento.Pessoas.Where(x => x.CPFCNPJ == requerimento.Interessado.CPFCNPJ).FirstOrDefault()); requerimento.Responsaveis.ForEach(r => { pessoasRelacionadas.Add(requerimento.Pessoas.Where(x => x.CPFCNPJ == r.CpfCnpj).FirstOrDefault()); }); if (requerimento.Empreendimento.SelecaoTipo == (int)eExecutorTipo.Credenciado && requerimento.Empreendimento.Id > 0) { EmpreendimentoCredenciadoBus empreendimentoCredenciadoBus = new EmpreendimentoCredenciadoBus(); pessoasRelacionadas.AddRange( empreendimentoCredenciadoBus.ObterResponsaveis(requerimento.Empreendimento.Id, bancoCredenciado)); } //Conjuge foreach (var item in requerimento.Pessoas.Where(x => x.Fisica.ConjugeId > 0).ToList()) { if (item.SelecaoTipo == (int)eExecutorTipo.Credenciado) { pessoasRelacionadas.Add(requerimento.Pessoas.FirstOrDefault(x => x.CPFCNPJ == item.Fisica.ConjugeCPF)); } } //Agrupando pessoasRelacionadas = pessoasRelacionadas.Where(x => x != null).GroupBy(x => x.CPFCNPJ).Select(y => new Pessoa { Id = y.First().Id, Tipo = y.First().Tipo, InternoId = y.First().InternoId, NomeRazaoSocial = y.First().NomeRazaoSocial, CPFCNPJ = y.First().CPFCNPJ, Fisica = y.First().Fisica, }).ToList(); return(pessoasRelacionadas); }
public Requerimento Importar(Requerimento requerimento, BancoDeDados bancoInterno, BancoDeDados bancoCredenciado) { int id = requerimento.Empreendimento.Id; EmpreendimentoCredenciadoBus bus = new EmpreendimentoCredenciadoBus(); Empreendimento empCredenciado = bus.Obter(requerimento.Empreendimento.Id, bancoCredenciado); //Busca o empreendimento no banco do credenciado Empreendimento empInterno = null; empCredenciado.SelecaoTipo = requerimento.Empreendimento.SelecaoTipo; #region Empreendimento Cadastrado no Interno empCredenciado.Id = 0; if (empCredenciado.InternoId.GetValueOrDefault() > 0) { empInterno = Obter(empCredenciado.InternoId.GetValueOrDefault(), bancoInterno); if (empInterno != null && empInterno.Id > 0) { empCredenciado.Id = empInterno.Id; empCredenciado.Coordenada.Id = empInterno.Coordenada.Id; } } if (!string.IsNullOrEmpty(empCredenciado.CNPJ) && empCredenciado.Id <= 0) { empCredenciado.Id = _da.ObterId(empCredenciado.CNPJ, bancoInterno); } #endregion Empreendimento Cadastrado no Interno #region Responsáveis empCredenciado.Responsaveis.ForEach(r => { r.Id = requerimento.Pessoas.Where(x => x.Id == r.Id).SingleOrDefault().InternoId.GetValueOrDefault(); }); ConfigurarResponsaveis(empCredenciado, bancoInterno, empInterno); #endregion Responsáveis #region Apagar ID's empCredenciado.Responsaveis.ForEach(r => { r.IdRelacionamento = 0; }); empCredenciado.Enderecos.ForEach(r => { r.Id = 0; }); empCredenciado.MeiosContatos.ForEach(r => { r.Id = 0; }); empCredenciado.Coordenada.Datum.Sigla = ((_da.ObterDatuns().FirstOrDefault(x => x.Id == empCredenciado.Coordenada.Datum.Id)) ?? new Datum()).Texto; #endregion Apagar ID's if (empCredenciado.Id == 0) { _da.Criar(empCredenciado, bancoInterno); } else { _da.Editar(empCredenciado, bancoInterno); } empCredenciado.InternoId = empCredenciado.Id; requerimento.Empreendimento = empCredenciado; bus.SalvarInternoId( new Empreendimento() { Id = id, InternoId = empCredenciado.Id, InternoTid = empCredenciado.Tid, Codigo = empCredenciado.Codigo }, bancoCredenciado); return(requerimento); }