Example #1
0
        public ActionResult AcompanharProcesso(int processoId, string nome, string email)
        {
            using (var contexto = new ProcessoContext())
            {
                //verificar se o interesse já foi registrado
                var processo = contexto.Processos
                               .Where(p => p.Id == processoId)
                               .Include(p => p.Interesses)
                               .ThenInclude(i => i.Interessado)
                               .Single();

                if (processo.Interesses.Where(i => i.Interessado.Email == email).Count() > 0)
                {
                    ViewBag.MensagemDeAcompanhamentoJaRealizado = "Você já está acompanhando esse processo.";
                    var model = new HomeViewModel(processoId);
                    return(View("Index", model));
                }

                var interessado = contexto
                                  .Interessados
                                  .Where(i => i.Email == email)
                                  .FirstOrDefault();
                if (interessado == null)
                {
                    interessado = new Interessado {
                        Nome = nome, Email = email
                    };
                }
                interessado.RegistraInteresse(processo);
                contexto.SaveChanges();
                return(RedirectToAction("Index"));
            }
        }
Example #2
0
 public static void CriarBancoDeDados()
 {
     using (var context = new ProcessoContext())
     {
         context.Database.EnsureCreated();
         context.SaveChanges();
     }
 }
 public static void ArmazenarProcesso(Processo newProcessDB)
 {
     using (var context = new ProcessoContext())
     {
         context.Add(newProcessDB);
         context.SaveChanges();
     }
 }
Example #4
0
 public ActionResult ExcluirProcesso(int id)
 {
     using (var contexto = new ProcessoContext())
     {
         var processo = contexto.Processos.Find(id);
         contexto.Processos.Remove(processo);
         contexto.SaveChanges();
         return(RedirectToAction("Index"));
     }
 }
Example #5
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.");
            }
        }
Example #6
0
        public ActionResult AtualizaDataDoProcesso(int id)
        {
            var novaData = new DateTime(2000, 1, 1);

            Trace.TraceInformation($"Atrasando data do processo {id}...");
            using (var ctx = new ProcessoContext())
            {
                var processo = ctx.Processos.Find(id);
                if (processo != null)
                {
                    processo.DataUltimaAtualizacao = novaData;
                    ctx.Processos.Update(processo);
                    ctx.SaveChanges();
                }
            }
            return(RedirectToAction("Index"));
        }
Example #7
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();
            }
        }
Example #8
0
        /// <summary>
        /// Apenas para testes
        /// </summary>
        private static void CadastrarInteressados()
        {
            using (var contexto = new ProcessoContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(new MyFilteredLoggerProvider());

                var processosMonitorados = contexto.Processos;
                var daniel = new Interessado()
                {
                    Nome = "Daniel Portugal", Email = "*****@*****.**"
                };
                var marcia = new Interessado()
                {
                    Nome = "Marcia Garcia", Email = "*****@*****.**"
                };

                daniel.RegistraInteresse(processosMonitorados);
                marcia.RegistraInteresse(processosMonitorados);

                contexto.SaveChanges();
            }
        }
Example #9
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()));
        }