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 Task Handle(PoliticoCreatedDomainEvent notification, CancellationToken cancellationToken) { var message = new PoliticoChangeMessage { Apelido = notification.Politico.NM_URNA_CANDIDATO, CPF = notification.Politico.NR_CPF_CANDIDATO.ToString(), Escolaridade = 1, Falecimento = null, MandatoFim = notification.Politico.DT_ELEICAO.AddYears(4), MandatoInicio = notification.Politico.DT_ELEICAO, MandatoSituacao = 1, Nascimento = notification.Politico.DT_NASCIMENTO, MandatoTipo = 1, NascimentoMunicipio = notification.Politico.NM_MUNICIPIO_NASCIMENTO, NascimentoUF = notification.Politico.SG_UF_NASCIMENTO, Nome = notification.Politico.NM_CANDIDATO, Partido = notification.Politico.SG_PARTIDO, Sexo = 1 }; await _busClient.PublishAsync(message); }