コード例 #1
0
        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"));
        }
コード例 #2
0
        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.");
            }
        }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
        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()));
        }