();
+
+ int idQuestionario = questionarioDao.salvarQuestionario(path,
+ questionario);
+
+
+ if (idQuestionario > -1) {
+ orgao.setIdQuestionario(idQuestionario);
+
+ if(orgaoDao.atualizarQuestionarioOrgao(path, orgao))
+ {
+
+
+
+ StringBuffer mensagem = new StringBuffer();
+
+ mensagem.append("Prezado(a),");
+ mensagem.append("Senhor(a) " + nomeResponsavel + ", "
+ + cargoResponsavel + ", do(a) "
+ + orgao.getNomeOrgao()
+ + ", conforme solicitado, o acesso ");
+ mensagem.append("ao FAD para o preenchimento de informações sobre a atual situação da ");
+ mensagem.append("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser ");
+ mensagem.append("realizado pelo endereço " + ""
+ + prop.getProperty("enderecoFad") + ""
+ + " utilizando o código de ");
+ mensagem.append("acesso: " + hashAutenticacao + " .
");
+
+ mensagem.append("A guarda do código de acesso, bem como as informações prestadas são de sua ");
+ mensagem.append("inteira responsabilidade.
");
+
+ mensagem.append("O FAD poderá ser preenchido no período "
+ + DateUtil.dataHoraFormatadaDiaMesAno(prop
+ .getProperty("dataInicio"))
+ + " a 02/01/2017, data limite ");
+ mensagem.append("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de ");
+ mensagem.append("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e ");
+ mensagem.append("publicado no sítio ou portal eletrônico do órgão ou entidade.
");
+
+ mensagem.append("Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal ");
+ mensagem.append(""
+ + prop.getProperty("enderecoContato") + ".
");
+
+ mensagem.append("Respeitosamente,
");
+
+ mensagem.append("Ministério do Planejamento, Desenvolvimento e Gestão ");
+ mensagem.append("Secretaria de Tecnologia da Informação ");
+ mensagem.append("Departamento de Governo Digital ");
+ mensagem.append("Coordenação-Geral de Padrões de Governo Digital ");
+ mensagem.append(prop.getProperty("emailContato") + "");
+
+ String[] telefoneContato = prop.getProperty(
+ "telefoneContato").split(",");
+
+ for (String numeroTelefone : telefoneContato) {
+ mensagem.append(numeroTelefone + "");
+ }
+ mensagem.append("
");
+
+ Contato contato = new Contato();
+ contato.setEmail(emailDestinoOrgao);
+ contato.setAssunto("Formulário Eletrônico de Acessibilidade Digital (FAD) – Concessão de Acesso");
+ contato.setMensagem(mensagem.toString());
+ contato.setNome(nomeResponsavel);
+
+ if (enviarHashPorEmail(contato)) {
+ if (questionarioDao.atualizarDataRespostaQuestionario(
+ path, idQuestionario)) {
+ mensagemEnvio = "Questionário salvo e enviado por email com suceso!";
+ } else {
+ mensagemEnvio = "Questionário salvo e enviado por email, mas, não foi possível atualizar a data de resposta!";
+ }
+
+ } else {
+ mensagemEnvio = "Questionário salvo, mas não foi possível enviar email!";
+ }
+ result.include("mensagemEnvio", mensagemEnvio);
+ this.validator.add(new ValidationMessage("", ""));
+ this.validator.onErrorUsePageOf(
+ QuestionarioController.class).confirmacaoHash();
+ } else {
+ mensagemEnvio = "Não foi possível salvar o questionário!";
+ result.include("mensagemEnvio", mensagemEnvio);
+ this.validator.add(new ValidationMessage("", ""));
+ this.validator.onErrorUsePageOf(
+ QuestionarioController.class).confirmacaoHash();
+ }
+ }
+ else
+ {
+ mensagemEnvio = "Não foi possível atualizar o id do questionário na tabela dos órgãos!";
+ result.include("mensagemEnvio", mensagemEnvio);
+ this.validator.add(new ValidationMessage("", ""));
+ this.validator.onErrorUsePageOf(
+ QuestionarioController.class).confirmacaoHash();
+ }
+ } else {
+ mensagemEnvio = "É preciso autorização para gerar código Hash!";
+ result.include("mensagemEnvio", mensagemEnvio);
+ this.validator.add(new ValidationMessage("", ""));
+ this.validator.onErrorUsePageOf(QuestionarioController.class)
+ .confirmacaoHash();
+ }
+ }
+ else
+ {
+ mensagemEnvio = "Não foi possível identificar o Órgao!";
+ result.include("mensagemEnvio", mensagemEnvio);
+ this.validator.add(new ValidationMessage("", ""));
+ this.validator.onErrorUsePageOf(QuestionarioController.class)
+ .confirmacaoHash();
+ }
+
+ }
+
+ private boolean enviarHashPorEmail(Contato contato) {
+
+ boolean emailEnviado = false;
+
+ String respSendEmail;
+
+ Email email = new Email(this.application.getRealPath("")
+ + "/WEB-INF/mail.properties");
+
+ EnvioEmailSemAutenticacao envioEmailSemAutenticacao = new EnvioEmailSemAutenticacao(
+ email.getHost(), Integer.toString(email.getPort()));
+
+ respSendEmail = envioEmailSemAutenticacao.sendMailComCopia(
+ email.getFrom(), contato.getEmail(), contato.getAssunto(),
+ contato.getMensagem(), email.getAuth(), email.getAuthUser(),
+ email.getAuthPass(), email.getCopiaEmailTo());
+
+ /*
+ * String respSendEmail =
+ * email.sendEmail("Contato","govbr@planejamento.gov.br",
+ * contato.getNome
+ * (),contato.getEmail(),StringHelper.convertFromUTF8(contato
+ * .getAssunto()), StringHelper.convertFromUTF8(contato.getMensagem()),
+ * true);
+ */
+
+ if (respSendEmail.equals("")) {
+ result.include("mensagem", "Mensagem enviada com Sucesso");
+ result.include("status", "success");
+ emailEnviado = true;
+
+ } else {
+ result.include("mensagem",
+ "Não foi possível enviar a mensagem! Ocorreu o problema: "
+ + respSendEmail);
+ result.include("status", "error");
+ }
+
+ return emailEnviado;
+
+ }
}
diff --git a/src/br/com/dao/OrgaoDao.java b/src/br/com/dao/OrgaoDao.java
new file mode 100644
index 0000000..d001090
--- /dev/null
+++ b/src/br/com/dao/OrgaoDao.java
@@ -0,0 +1,122 @@
+package br.com.dao;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import br.com.model.entity.Orgao;
+
+public class OrgaoDao {
+
+ public ResultSet retornarOrgaos(String path) {
+
+ StringBuffer sql = new StringBuffer();
+ Connection con = Conexao.conecta(path);
+ Statement estado;
+ ResultSet rset = null;
+
+ try {
+ estado = con.createStatement();
+
+ estado.execute(sql.toString());
+ sql.append(" SELECT id_orgao, no_orgao, id_questionario FROM public.orgao order by no_orgao; ");
+
+ rset = estado.executeQuery(sql.toString());
+
+ return rset;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return null;
+
+ }finally {
+ if (con != null) {
+ try {
+ con.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ }
+
+ public Orgao retornarOrgaoPorId(String path, int idOrgao) {
+
+ StringBuffer sql = new StringBuffer();
+ Connection con = Conexao.conecta(path);
+ Statement estado;
+ ResultSet rset = null;
+ Orgao orgao = new Orgao();
+
+ try {
+ estado = con.createStatement();
+
+ estado.execute(sql.toString());
+ sql.append(" SELECT * FROM public.orgao where id_orgao = "+ idOrgao +" order by no_orgao; ");
+
+ rset = estado.executeQuery(sql.toString());
+
+ while (rset.next()) {
+ orgao.setIdOrgao(idOrgao);
+ orgao.setNomeOrgao(rset.getString("no_orgao"));
+ orgao.setIdQuestionario(rset.getInt("id_questionario"));
+
+ }
+
+ return orgao;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return null;
+
+ }finally {
+ if (con != null) {
+ try {
+ con.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ }
+
+ public boolean atualizarQuestionarioOrgao(String path, Orgao orgao)
+ {
+
+ StringBuffer sql = new StringBuffer();
+ Connection con = Conexao.conecta(path);
+ PreparedStatement estado;
+ int resultado = 0;
+ boolean salvoComSucesso = false;
+
+
+
+ try {
+
+ sql = new StringBuffer();
+ sql.append(" UPDATE public.orgao SET id_questionario = ? WHERE id_orgao = ?; ");
+
+ estado = con.prepareStatement(sql.toString());
+
+ estado.setInt(1, orgao.getIdQuestionario());
+ estado.setInt(2, orgao.getIdOrgao());
+
+ resultado = estado.executeUpdate();
+
+ if (resultado == 0) {
+ salvoComSucesso = false;
+ } else {
+
+ salvoComSucesso = true;
+ }
+
+ } catch (SQLException e) {
+
+ e.printStackTrace();
+ }
+
+ return salvoComSucesso;
+ }
+}
diff --git a/src/br/com/dao/PainelDao.java b/src/br/com/dao/PainelDao.java
index 0c9e7c1..635ca6d 100644
--- a/src/br/com/dao/PainelDao.java
+++ b/src/br/com/dao/PainelDao.java
@@ -7,6 +7,37 @@ import java.sql.Statement;
public class PainelDao {
+
+ public Integer retornarTotalQuestionarioRespondido(String path) {
+
+ StringBuffer sql = new StringBuffer();
+ Connection con = Conexao.conecta(path);
+ Statement estado;
+ ResultSet rset = null;
+ Integer total = 0;
+
+ try {
+
+ estado = con.createStatement();
+
+ estado.execute(sql.toString());
+
+ sql.append(" select count(id_questionario) AS total from questionario where id_questionario IN (select distinct(id_questionario) as totalRespondido from resposta_questionario) ");
+
+ rset = estado.executeQuery(sql.toString());
+
+ while (rset.next()) {
+ total = rset.getInt("total");
+ }
+
+ } catch (SQLException e) {
+
+ e.printStackTrace();
+ }
+
+ return total;
+ }
+
public Integer retornarTotalResposta(String path, Integer idPergunta, Integer idOpcaoResposta) {
StringBuffer sql = new StringBuffer();
@@ -38,7 +69,7 @@ public class PainelDao {
return total;
}
- public ResultSet retornarTotalNotas(String path, Integer idOpcaoResposta) {
+ public ResultSet retornarTotalNotas(String path, Integer idOpcaoResposta, Integer idRespostaQuestionario) {
StringBuffer sql = new StringBuffer();
Connection con = Conexao.conecta(path);
@@ -51,7 +82,7 @@ public class PainelDao {
estado.execute(sql.toString());
- sql.append(" select texto_resposta from resposta_questionario where id_opcao_resposta = "+ idOpcaoResposta +"; ");
+ sql.append(" select texto_resposta from resposta_questionario where id_opcao_resposta = "+ idOpcaoResposta +" and id_resposta_questionario = " + idRespostaQuestionario + "; ");
rset = estado.executeQuery(sql.toString());
diff --git a/src/br/com/dao/QuestionarioDao.java b/src/br/com/dao/QuestionarioDao.java
index 255558f..f4b5baf 100644
--- a/src/br/com/dao/QuestionarioDao.java
+++ b/src/br/com/dao/QuestionarioDao.java
@@ -105,7 +105,7 @@ public class QuestionarioDao {
return listaQuestionario;
}
- public List retornarListaQuestionarioComFiltro(String path, String statusRelatorio, String statusPlanoTrabalho, String relatorioAnexado, String nomeOrgao) {
+ public List retornarListaQuestionarioComFiltro(String path, String statusRelatorio, String statusPlanoTrabalho, String relatorioAnexado, String relatorioEnviado, String nomeOrgao) {
List listaQuestionario = new ArrayList();
@@ -114,7 +114,7 @@ public class QuestionarioDao {
RespostaQuestionarioDao respostaQuestionarioDao;
PlanoTrabalhoDao planoTrabalhoDao;
- rset = retornarQuestionarioComFiltro(path, statusRelatorio, statusPlanoTrabalho, nomeOrgao);
+ rset = retornarQuestionarioComFiltro(path, statusRelatorio, statusPlanoTrabalho, relatorioEnviado, nomeOrgao);
String dataRespostaQuestionario = "";
try {
while (rset.next()) {
@@ -149,6 +149,7 @@ public class QuestionarioDao {
questionario.setDtRespostaEmail(dataRespostaQuestionario);
}
+
questionario.setDataRespostaQuestionario(respostaQuestionarioDao.verificaRespostaQuestionario(path, rset.getInt("id_questionario")));
@@ -265,7 +266,39 @@ public class QuestionarioDao {
}
- public ResultSet retornarQuestionarioComFiltro(String path, String statusRelatorio, String statusPlanoTrabalho, String nomeOrgao) {
+ public ResultSet retornarQuestionarioEnviados(String path) {
+
+ StringBuffer sql = new StringBuffer();
+ Connection con = Conexao.conecta(path);
+ Statement estado;
+ ResultSet rset = null;
+
+ try {
+ estado = con.createStatement();
+
+ estado.execute(sql.toString());
+ sql.append(" select id_questionario from questionario where flag_enviado = true order by id_questionario; ");
+
+ rset = estado.executeQuery(sql.toString());
+
+ return rset;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return null;
+
+ } finally {
+ if (con != null) {
+ try {
+ con.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ }
+
+ public ResultSet retornarQuestionarioComFiltro(String path, String statusRelatorio, String statusPlanoTrabalho, String relatorioEnviado, String nomeOrgao) {
StringBuffer sql = new StringBuffer();
Connection con = Conexao.conecta(path);
@@ -293,7 +326,15 @@ public class QuestionarioDao {
{
sql.append(" and questionario_respondido = false " );
}
+
+ if(relatorioEnviado.equalsIgnoreCase("sim"))
+ {
+ sql.append(" and flag_enviado = true ");
+ }else if(relatorioEnviado.equalsIgnoreCase("nao"))
+ {
+ sql.append(" and flag_enviado = false " );
+ }
sql.append(" order by no_orgao;");
diff --git a/src/br/com/model/entity/Orgao.java b/src/br/com/model/entity/Orgao.java
new file mode 100644
index 0000000..df03f95
--- /dev/null
+++ b/src/br/com/model/entity/Orgao.java
@@ -0,0 +1,30 @@
+package br.com.model.entity;
+
+public class Orgao {
+
+
+ private Integer idOrgao;
+ private String nomeOrgao;
+ private Integer idQuestionario;
+
+ public Integer getIdOrgao() {
+ return idOrgao;
+ }
+ public void setIdOrgao(Integer idOrgao) {
+ this.idOrgao = idOrgao;
+ }
+ public String getNomeOrgao() {
+ return nomeOrgao;
+ }
+ public void setNomeOrgao(String nomeOrgao) {
+ this.nomeOrgao = nomeOrgao;
+ }
+ public Integer getIdQuestionario() {
+ return idQuestionario;
+ }
+ public void setIdQuestionario(Integer idQuestionario) {
+ this.idQuestionario = idQuestionario;
+ }
+
+
+}
--
libgit2 0.21.2