Ejemplo n.º 1
0
        public async Task Execute(PoliticoChangeMessage message)
        {
            var politico = _dbContext.Politicos.FirstOrDefault(_ =>
                                                               _.CPF == message.CPF);

            if (politico == null)
            {
                politico = new Politico(
                    message.CPF,
                    message.Nome,
                    message.Apelido,
                    message.Nascimento,
                    message.NascimentoUF,
                    message.NascimentoMunicipio)
                {
                    EscolaridadeId = message.Escolaridade,
                    Falecimento    = message.Falecimento,
                    SituacaoId     = message.Situacao,
                    SexoId         = message.Sexo
                };
                politico.SetIntegration(
                    message.Timestamp,
                    message.Origin,
                    message.Id);
                message.Contatos.ForEach(_ => politico.AddContato(_.Tipo, _.Valor));
                await _dbContext.Politicos.AddAsync(politico);
            }
            else
            {
                politico.Nome           = message.Nome;
                politico.Apelido        = message.Apelido;
                politico.EscolaridadeId = message.Escolaridade;
                politico.Falecimento    = message.Falecimento;
                politico.SituacaoId     = message.Situacao;
                politico.SexoId         = message.Sexo;
                politico.SetIntegration(
                    message.Timestamp,
                    message.Origin,
                    message.Id);
                message.Contatos.ForEach(_ => {
                    var contato = politico.Contatos.FirstOrDefault(_1 => (int)_1.Tipo == _.Tipo);
                    if (contato == null)
                    {
                        politico.AddContato(_.Tipo, _.Valor);
                    }
                    else
                    {
                        if (contato.Contato != _.Valor)
                        {
                            contato.Contato = _.Valor;
                        }
                    }
                });
                _dbContext.Politicos.Update(politico);
            }

            await _dbContext.SaveChangesAsync();
        }
        public async override Task <Unit> Handle(PoliticoChangedMessage message, CancellationToken cancellationToken)
        {
            var listaSexo = await _deOlhoDbContext.Set <Sexo>().ToListAsync(cancellationToken);

            var listaGrauInstrucao = await _deOlhoDbContext.Set <GrauInstrucao>().ToListAsync(cancellationToken);

            var listaOcupacao = await _deOlhoDbContext.Set <Ocupacao>().ToListAsync(cancellationToken);

            var listaTipoEleicao = await _deOlhoDbContext.Set <TipoEleicao>().ToListAsync(cancellationToken);

            var listaEleicao = await _deOlhoDbContext.Set <Eleicao>().ToListAsync(cancellationToken);

            var listaMandatoSituacao = await _deOlhoDbContext.Set <MandatoSituacao>().ToListAsync(cancellationToken);

            var listaPartido = await _deOlhoDbContext.Set <Partido>().ToListAsync(cancellationToken);

            var listaCargo = await _deOlhoDbContext.Set <Cargo>().ToListAsync(cancellationToken);

            var politicoRepository = _deOlhoDbContext.Set <Domain.Politico>();

            foreach (var messagePolitico in message.Politicos)
            {
                var politico = await politicoRepository
                               .Include(_ => _.Sexo)
                               .Include(_ => _.GrauInstrucao)
                               .Include(_ => _.Ocupacao)
                               .Include(_ => _.Mandatos)
                               .ThenInclude(_ => _.Eleicao.Tipo)
                               .Include(_ => _.Mandatos)
                               .ThenInclude(_ => _.Partido)
                               .Include(_ => _.Mandatos)
                               .ThenInclude(_ => _.Cargo)
                               .Include(_ => _.Mandatos)
                               .ThenInclude(_ => _.Situacao)
                               .SingleOrDefaultAsync(_ =>
                                                     _.CPF == messagePolitico.NR_CPF_CANDIDATO,
                                                     cancellationToken)
                               ?? new Domain.Politico();

                var sexo = listaSexo.FirstOrDefault(_ => _.Id == messagePolitico.CD_GENERO);
                if (sexo == null)
                {
                    sexo = new  Sexo {
                        Id = messagePolitico.CD_GENERO, Descricao = messagePolitico.DS_GENERO
                    };
                    listaSexo.Add(sexo);
                }

                var grauInstrucao = listaGrauInstrucao.FirstOrDefault(_ => _.Id == messagePolitico.CD_GRAU_INSTRUCAO);
                if (grauInstrucao == null)
                {
                    grauInstrucao = new GrauInstrucao {
                        Id = messagePolitico.CD_GRAU_INSTRUCAO, Descricao = messagePolitico.DS_GRAU_INSTRUCAO
                    };
                    listaGrauInstrucao.Add(grauInstrucao);
                }


                var ocupacao = listaOcupacao.FirstOrDefault(_ => _.Id == messagePolitico.CD_OCUPACAO);
                if (ocupacao == null)
                {
                    ocupacao = new Ocupacao {
                        Id = messagePolitico.CD_OCUPACAO, Descricao = messagePolitico.DS_OCUPACAO
                    };
                    listaOcupacao.Add(ocupacao);
                }


                var tipoEleicao = listaTipoEleicao.FirstOrDefault(_ => _.Id == messagePolitico.CD_TIPO_ELEICAO);
                if (tipoEleicao == null)
                {
                    tipoEleicao = new TipoEleicao {
                        Id = messagePolitico.CD_TIPO_ELEICAO, Descricao = messagePolitico.NM_TIPO_ELEICAO
                    };
                    listaTipoEleicao.Add(tipoEleicao);
                }


                var eleicao = listaEleicao.FirstOrDefault(_ => _.Id == messagePolitico.CD_ELEICAO);
                if (eleicao == null)
                {
                    eleicao = new Eleicao {
                        Id        = messagePolitico.CD_ELEICAO,
                        Ano       = messagePolitico.ANO_ELEICAO,
                        Descricao = messagePolitico.DS_ELEICAO,
                        Data      = messagePolitico.DT_ELEICAO,
                        Tipo      = tipoEleicao,
                    };
                    listaEleicao.Add(eleicao);
                }

                var situacao = listaMandatoSituacao.FirstOrDefault(_ => _.Id == messagePolitico.CD_SIT_TOT_TURNO);
                if (situacao == null)
                {
                    situacao = new MandatoSituacao {
                        Id = messagePolitico.CD_SIT_TOT_TURNO, Descricao = messagePolitico.DS_SIT_TOT_TURNO
                    };
                    listaMandatoSituacao.Add(situacao);
                }


                var partido = listaPartido.FirstOrDefault(_ => _.Id == messagePolitico.NR_PARTIDO);
                if (partido == null)
                {
                    partido = new Partido {
                        Id = messagePolitico.NR_PARTIDO, Sigla = messagePolitico.SG_PARTIDO, Nome = messagePolitico.NM_PARTIDO
                    };
                    listaPartido.Add(partido);
                }


                var cargo = listaCargo.FirstOrDefault(_ => _.Id == messagePolitico.CD_CARGO);
                if (cargo == null)
                {
                    cargo = new Cargo {
                        Id = messagePolitico.CD_CARGO, Nome = messagePolitico.DS_CARGO
                    };
                    listaCargo.Add(cargo);
                }

                politico.CPF              = messagePolitico.NR_CPF_CANDIDATO;
                politico.Nome             = messagePolitico.NM_CANDIDATO;
                politico.Apelido          = messagePolitico.NM_URNA_CANDIDATO;
                politico.DataNascimento   = messagePolitico.DT_NASCIMENTO;
                politico.CidadeNascimento = messagePolitico.NM_MUNICIPIO_NASCIMENTO;
                politico.UFNascimento     = messagePolitico.SG_UF_NASCIMENTO;
                politico.Sexo             = sexo;
                politico.GrauInstrucao    = grauInstrucao;
                politico.Ocupacao         = ocupacao;
                politico.DataInformacao   = new DateTime(messagePolitico.ANO_ELEICAO, 1, 1);

                var mandato = politico.Mandatos.SingleOrDefault(_ => _.Eleicao.Ano == messagePolitico.ANO_ELEICAO) ?? new Mandato();;

                mandato.Eleicao     = eleicao;
                mandato.Cargo       = cargo;
                mandato.Partido     = partido;
                mandato.Situacao    = situacao;
                mandato.Abrangencia = messagePolitico.NM_UE;

                if (mandato.Id == 0)
                {
                    politico.Mandatos.Add(mandato);
                }

                if (politico.Id == 0)
                {
                    await politicoRepository.AddAsync(politico, cancellationToken);
                }
            }

            await _deOlhoDbContext.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
Ejemplo n.º 3
0
        public async override Task <Unit> Handle(PoliticoChangedMessage message, CancellationToken cancellationToken)
        {
            var politicoMandatoRepository   = _deOlhoDbContext.Set <Domain.PoliticoMandato>();
            var palavraSubstitutaRepository = _deOlhoDbContext.Set <Domain.PalavraSubstituta>();
            var palavrasSubstitutas         = await palavraSubstitutaRepository.ToListAsync(cancellationToken);

            foreach (var messagePolitico in message.Politicos)
            {
                var politicoMandato = (await politicoMandatoRepository.SingleOrDefaultAsync(_ =>
                                                                                            _.CPF == messagePolitico.NR_CPF_CANDIDATO && _.Ano == messagePolitico.ANO_ELEICAO, cancellationToken))
                                      ?? new PoliticoMandato();

                politicoMandato.CPF           = messagePolitico.NR_CPF_CANDIDATO;
                politicoMandato.Nome          = messagePolitico.NM_CANDIDATO;
                politicoMandato.Apelido       = messagePolitico.NM_URNA_CANDIDATO;
                politicoMandato.Ano           = messagePolitico.ANO_ELEICAO;
                politicoMandato.Partido       = messagePolitico.NM_PARTIDO;
                politicoMandato.Cargo         = messagePolitico.DS_CARGO;
                politicoMandato.Abrangencia   = messagePolitico.NM_UE;
                politicoMandato.Eleito        = messagePolitico.DS_SIT_TOT_TURNO.StartsWith("ELEITO");
                politicoMandato.TermoPesquisa = string.Join(' ', new string[]
                {
                    politicoMandato.Nome,
                    politicoMandato.Apelido,
                    politicoMandato.Ano.ToString(),
                    politicoMandato.Partido,
                    politicoMandato.Cargo,
                    politicoMandato.Abrangencia
                });

                if (politicoMandato.Id == 0)
                {
                    await politicoMandatoRepository.AddAsync(politicoMandato, cancellationToken);
                }

                if (!palavrasSubstitutas.Any(_ => _.Palavra.ToUpper() == messagePolitico.SG_PARTIDO.ToUpper()))
                {
                    var palavraSubstituta = new PalavraSubstituta
                    {
                        Palavra    = messagePolitico.SG_PARTIDO,
                        Substituta = messagePolitico.NM_PARTIDO
                    };
                    palavrasSubstitutas.Add(palavraSubstituta);
                    await palavraSubstitutaRepository.AddAsync(palavraSubstituta, cancellationToken);
                }

                if (!palavrasSubstitutas.Any(_ => _.Palavra.ToUpper() == messagePolitico.NR_PARTIDO.ToString()))
                {
                    var palavraSubstituta = new PalavraSubstituta
                    {
                        Palavra    = messagePolitico.NR_PARTIDO.ToString(),
                        Substituta = messagePolitico.NM_PARTIDO
                    };
                    palavrasSubstitutas.Add(palavraSubstituta);
                    await palavraSubstitutaRepository.AddAsync(palavraSubstituta, cancellationToken);
                }

                if (!palavrasSubstitutas.Any(_ => _.Palavra.ToUpper() == messagePolitico.SG_UF.ToUpper()))
                {
                    var palavraSubstituta = new PalavraSubstituta
                    {
                        Palavra    = messagePolitico.SG_UF.ToUpper(),
                        Substituta = messagePolitico.NM_UE
                    };
                    palavrasSubstitutas.Add(palavraSubstituta);
                    await palavraSubstitutaRepository.AddAsync(palavraSubstituta, cancellationToken);
                }
            }

            await _deOlhoDbContext.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }