public async Task <ActionResult> Index(Processo processo) { if (ModelState.IsValid) { var service = new MateriasService(); var materia = await service.RecuperarMateriaPeloCodigo(processo); return(View(materia)); } return(View("Index", "Home")); }
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(); } }
public async Task <ActionResult> CadastrarProcesso(Processo processo) { if (ModelState.IsValid) { using (var contexto = new ProcessoContext()) using (var servico = new MateriasService()) { Materia materia = await servico.RecuperarMateriaPeloCodigo(processo); processo.Sigla = processo.Sigla.ToUpper(); processo.Emenda = materia.DadosBasicos.Ementa; processo.Codigo = materia.Identificacao.Codigo; processo.Origem = OrigemProcesso.Senado; processo.DataUltimaAtualizacao = materia.Tramitacoes .OrderByDescending(t => t.Identificacao.Data) .Select(t => t.Identificacao.Data) .First(); contexto.Processos.Add(processo); contexto.SaveChanges(); return(RedirectToAction("Index")); } } return(View("Index", new HomeViewModel())); }