예제 #1
0
        public async Task <IEnumerable <PoliticoMandatoModel> > Handle(ListPoliticoMandatoQuery request, CancellationToken cancellationToken)
        {
            var palavrasSubstitutas = await _deOlhoDbContext.Set <PalavraSubstituta>()
                                      .ToDictionaryAsync(_ => _.Palavra.ToUpper(), _ => _.Substituta, cancellationToken);

            var palavrasTermoPesquisa = request.TermoPesquisa.Split(' ');

            for (var i = 0; i < palavrasTermoPesquisa.Length; i++)
            {
                var palavra = palavrasTermoPesquisa[i];
                if (palavrasSubstitutas.ContainsKey(palavra.ToUpper()))
                {
                    palavra = palavrasSubstitutas[palavra];
                }
            }

            var termoPesquisa = string.Join(' ', palavrasTermoPesquisa);


            var query = $"SELECT * from PoliticoMandato WHERE MATCH(TermoPesquisa) AGAINST('{termoPesquisa}')";


            return(await _deOlhoDbContext.Set <PoliticoMandato>()
                   .FromSql(query)
                   .Take(10)
                   .Select(_ => new PoliticoMandatoModel
            {
                CPF = _.CPF,
                Nome = _.Nome,
                Apelido = _.Apelido,
                Ano = _.Ano,
                Partido = _.Partido,
                Cargo = _.Cargo,
                Abrangencia = _.Abrangencia,
                Eleito = _.Eleito
            })
                   .ToListAsync(cancellationToken));
        }
        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);
        }
예제 #3
0
 public Repository(
     DeOlhoDbContext deOlhoDbContext)
 {
     _deOlhoDbContext = deOlhoDbContext;
     _query           = _deOlhoDbContext.Set <T>();
 }
예제 #4
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);
        }