private async Task VerificaAtualizacoes() { Trace.TraceInformation("Iniciando a verificação de novas tramitações."); EnviarEmailAdministrativo("Iniciando a verificação de novas tramitações."); var processosAtualizados = new List <Processo>(); using (var servico = new MateriasService()) { foreach (var processo in servico.ProcessosMonitorados) { EnviarEmailAdministrativo($"Verificando atualizações para o processo {processo}..."); //consulta o web service para recuperar as tramitações da matéria: var movimentacao = await servico.TramitacoesDaMateria(processo.Codigo); //recupera a data mais recente de tramitação: var dataUltimaTramitacao = movimentacao.Materia.Tramitacoes .OrderByDescending(t => t.Identificacao.Data) .Select(t => t.Identificacao.Data) .First(); if (dataUltimaTramitacao.CompareTo(processo.DataUltimaAtualizacao) > 0) { string mensagem = $"Processo {processo} teve atualizações!"; Trace.TraceInformation(mensagem); EnviarEmailAdministrativo(mensagem); processo.DataUltimaAtualizacao = dataUltimaTramitacao; processosAtualizados.Add(processo); } } } if (processosAtualizados.Count > 0) { using (var contexto = new ProcessoContext()) { try { contexto.Processos.UpdateRange(processosAtualizados); contexto.SaveChanges(); EnviarEmailAtualizacao(processosAtualizados.Select(p => p.Id)); } catch (Exception e) { EnviarEmailAdministrativo($"Ocorreu um erro: {e.Message}\r\nInner Exception: {e.InnerException.Message}\r\n{e.StackTrace}"); } } } else { EnviarEmailAdministrativo("Não houveram novas tramitações para os processos monitorados."); } }
private async Task VerificaAtualizacoes() { var processosAtualizados = new List <Processo>(); using (var servico = new MateriasService()) { foreach (var processo in servico.ProcessosMonitorados) { //consulta o web service para recuperar as tramitações da matéria: var movimentacao = await servico.TramitacoesDaMateria(processo.Codigo); //recupera a data mais recente de tramitação: var dataUltimaTramitacao = movimentacao.Materia.Tramitacoes .OrderByDescending(t => t.Identificacao.Data) .Select(t => t.Identificacao.Data) .First(); if (dataUltimaTramitacao.CompareTo(processo.DataUltimaAtualizacao) > 0) { Trace.TraceInformation($"Processo {processo} teve atualizações."); processo.DataUltimaAtualizacao = dataUltimaTramitacao; processosAtualizados.Add(processo); } } } if (processosAtualizados.Count > 0) { using (var contexto = new ProcessoContext()) { Trace.TraceInformation("Persistindo processos atualizados."); contexto.Processos.AddRange(processosAtualizados); contexto.SaveChanges(); } EnviarEmailAtualizacao(processosAtualizados.Select(p => p.Id)); } else { EnviarEmailAdministrativo(); } }