diff --git a/WebContent/WEB-INF/jsp/planoTrabalho/confirmacaoEnvioEmailMPF.jsp b/WebContent/WEB-INF/jsp/planoTrabalho/confirmacaoEnvioEmailMPF.jsp new file mode 100644 index 0000000..bf97187 --- /dev/null +++ b/WebContent/WEB-INF/jsp/planoTrabalho/confirmacaoEnvioEmailMPF.jsp @@ -0,0 +1,35 @@ +<%@page contentType="text/html" pageEncoding="UTF-8"%> +<%@taglib prefix="t" tagdir="/WEB-INF/tags"%> +<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> + + + + +
+ + + Confirmação de envio de Relatório e Plano de Trabalho ao Ministério Público Federal! +
+
+ + Falha ao enviar Relatório e Plano de Trabalho ao Ministério Público Federal! +
+
+

${mensagemEnvio} +

+ +
+ +
+
+ Página Inicial +
+
+ +
+
+ diff --git a/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp b/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp index b8f5d64..7ee9de4 100644 --- a/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp +++ b/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp @@ -31,11 +31,18 @@
Plano de Trabalho -

- -

+

+ + + +

+ + +

diff --git a/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalhoConfirmacao.jsp b/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalhoConfirmacao.jsp index fad14f2..6193702 100644 --- a/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalhoConfirmacao.jsp +++ b/WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalhoConfirmacao.jsp @@ -6,25 +6,74 @@ +
-
- - Confirmação de plano de trabalho enviado com sucesso!
+ + Confirmação de Relatório anexado com sucesso! +
- - Falha de envio de plano de trabalho!
+ + Falha ao anexar Relatório! +
-

${mensagem}

+

${mensagemRelatorio} +

+
+ +
+ + + Confirmação de plano de trabalho anexado com sucesso! +
+
+ + Falha ao anexar plano de trabalho! +
+
+

+ ${mensagemPlano} +

+ + + +
+
+ + +
+
+ + Atenção! Após o envio do Relatório ao MPF não mais será possível alterar seus dados. + +
+
+ Não + + Sim +
+
+
+ + +

Aviso:

  • ATENÇÃO: O simples upload do arquivo não faz o envio do plano de trabalho para os órgãos de controle, o plano de trabalho deverá ser enviado para a Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal até a data limite
  • -


+
+
- Página Inicial

+ Página Inicial +
+
diff --git a/WebContent/WEB-INF/jsp/questionario/listaQuestionario.jsp b/WebContent/WEB-INF/jsp/questionario/listaQuestionario.jsp index 0c3412e..b558222 100644 --- a/WebContent/WEB-INF/jsp/questionario/listaQuestionario.jsp +++ b/WebContent/WEB-INF/jsp/questionario/listaQuestionario.jsp @@ -54,6 +54,8 @@ Relatório Respondido Plano de Trabalho Enviado download Plano de Trabalho + download Relatório Assinado + Visualizar Relatório @@ -95,8 +97,12 @@ - Recuperar + + Plano de Trabalho + + Relatório Assinado + Visualizar Relatório diff --git a/WebContent/WEB-INF/mail.properties b/WebContent/WEB-INF/mail.properties index 1136fcb..e7170d4 100644 --- a/WebContent/WEB-INF/mail.properties +++ b/WebContent/WEB-INF/mail.properties @@ -7,4 +7,5 @@ prop.email.authpass = "" prop.email.auth = false prop.email.to = govbr@planejamento.gov.br prop.email.from = govbr@planejamento.gov.br -prop.email.copiaEmailTo = fabricio.souza@planejamento.gov.br \ No newline at end of file +prop.email.copiaEmailTo = fabricio.souza@planejamento.gov.br +prop.email.anexosTo = gibran.sodre@planejamento.gov.br \ No newline at end of file diff --git a/src/br/com/controller/PlanoTrabalhoController.java b/src/br/com/controller/PlanoTrabalhoController.java index 43b0c73..607863e 100644 --- a/src/br/com/controller/PlanoTrabalhoController.java +++ b/src/br/com/controller/PlanoTrabalhoController.java @@ -1,6 +1,8 @@ package br.com.controller; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletOutputStream; @@ -13,6 +15,7 @@ import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.Validator; import br.com.caelum.vraptor.interceptor.multipart.DefaultMultipartConfig; import br.com.caelum.vraptor.interceptor.multipart.UploadedFile; +import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder; import br.com.caelum.vraptor.validator.ValidationMessage; import br.com.dao.HashDao; import br.com.dao.PlanoTrabalhoDao; @@ -21,7 +24,7 @@ import br.com.model.entity.Questionario; @Resource -public class PlanoTrabalhoController extends DefaultMultipartConfig { +public class PlanoTrabalhoController extends DefaultMultipartConfig { private Validator validator; private Result result; @@ -34,10 +37,10 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig { this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties"; this.result = result; } - + // alteramos o tamanho total do upload para 50MB public long getSizeLimit() { - return 50 * 1024 * 1024; + return 50 * 1024 * 1024; } @Path("/planoTrabalho-site") @@ -50,72 +53,158 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig { } - - @Path("/salvar-plano-trabalho") - public void enviarPlanoTrabalho(String valorHash, UploadedFile file) { - String mensagem = "Não foi possível enviar o plano de trabalho!"; - boolean status = false; - - if(file != null) - { - String tipoArquivo = file.getContentType(); - - int idPlanoTrabalho = -1; - - if (!tipoArquivo.equalsIgnoreCase("application/msword") - && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel") - && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text") - && !tipoArquivo.equalsIgnoreCase("text/plain") - && !tipoArquivo.equalsIgnoreCase("application/pdf") - && !tipoArquivo.equalsIgnoreCase("image/png") && !tipoArquivo.equalsIgnoreCase("image/gif") - && !tipoArquivo.equalsIgnoreCase("image/jpeg")) { - - mensagem = "Formato de Arquivo inválido!"; - status = false; - - } else { - HashDao hashDao = new HashDao(); - Questionario questionario = new Questionario(); - questionario = hashDao.verificarHash(path, valorHash); - String nomeExtensao = file.getFileName(); - + @Path("/salvar-plano-trabalho") + public void enviarPlanoTrabalho(String valorHash, UploadedFile filePlano, + UploadedFile fileRelatorio) { + + String mensagemPlano = null; + String mensagemRelatorio = null; + boolean statusPlano = false; + boolean statusRelatorio = false; + boolean existeRelatorioAnexado = false; + Questionario questionario = new Questionario(); + PlanoTrabalho planoTrabalho = new PlanoTrabalho(); + + if (filePlano != null) { + String tipoArquivo = filePlano.getContentType(); + + + if (!tipoArquivo.equalsIgnoreCase("application/msword") + && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel") + && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text") + && !tipoArquivo.equalsIgnoreCase("text/plain") + && !tipoArquivo.equalsIgnoreCase("application/pdf") + && !tipoArquivo.equalsIgnoreCase("image/png") + && !tipoArquivo.equalsIgnoreCase("image/gif") + && !tipoArquivo.equalsIgnoreCase("image/jpeg") + && !tipoArquivo.equalsIgnoreCase("application/zip") + && !tipoArquivo.equalsIgnoreCase("application/x-rar-compressed") + && !tipoArquivo.equalsIgnoreCase("application/octet-stream")) { + + mensagemPlano = "Formato de Arquivo para plano de trabalho inválido!"; + statusPlano = false; + + } else { + HashDao hashDao = new HashDao(); + questionario = new Questionario(); + questionario = hashDao.verificarHash(path, valorHash); + String nomeExtensaoPlanoTrabalho = filePlano.getFileName(); + if (questionario != null && questionario.getDtInicioQuestionario() != null) { PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); - idPlanoTrabalho = - planoTrabalhoDao.verificaPlanoTrabalho(path, questionario.getIdQuestionario()); + planoTrabalho = + planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); - if (idPlanoTrabalho == -1) { - if (planoTrabalhoDao.salvarPlanoTrabalho(path, file.getFile(), questionario, - nomeExtensao)) { - mensagem = "Plano de trabalho enviado com sucesso!"; - status = true; + if (planoTrabalho.getArquivoPlanoTrabalho() == null) { + if (planoTrabalhoDao.salvarPlanoTrabalho(path, filePlano.getFile(), questionario, + nomeExtensaoPlanoTrabalho)) { + mensagemPlano = "Plano de trabalho anexado com sucesso!"; + statusPlano = true; } else { - mensagem = "Não foi possível enviar o plano de trabalho!"; + mensagemPlano = "Não foi possível anexar o plano de trabalho!"; } } else { - if (planoTrabalhoDao.atualizarPlanoTrabalho(path, file.getFile(), questionario, - idPlanoTrabalho, nomeExtensao)) { - mensagem = "Plano de trabalho enviado com sucesso!"; - status = true; + if (planoTrabalhoDao.atualizarPlanoTrabalho(path, filePlano.getFile(), questionario, + planoTrabalho.getIdPlanoTrabalho(), nomeExtensaoPlanoTrabalho)) { + mensagemPlano = "Plano de trabalho anexado com sucesso!"; + statusPlano = true; } else { - mensagem = "Não foi possível enviar o plano de trabalho!"; + mensagemPlano = "Não foi possível anexar o plano de trabalho!"; } } } else { - mensagem = "Favor verificar o Código de Acesso!"; + mensagemPlano = "Favor verificar o Código de Acesso!"; } + + } + + if(planoTrabalho.getArquivoRelatorioAss() != null) + { + existeRelatorioAnexado = true; + } + result.include("mensagemPlano", mensagemPlano); + result.include("statusPlano", statusPlano); + result.include("existeRelatorioAnexado", existeRelatorioAnexado); } + + + // /Relatório Assinado + + if (fileRelatorio != null) { + String tipoArquivo = fileRelatorio.getContentType(); + + if (!tipoArquivo.equalsIgnoreCase("application/msword") + && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel") + && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text") + && !tipoArquivo.equalsIgnoreCase("text/plain") + && !tipoArquivo.equalsIgnoreCase("application/pdf") + && !tipoArquivo.equalsIgnoreCase("image/png") + && !tipoArquivo.equalsIgnoreCase("image/gif") + && !tipoArquivo.equalsIgnoreCase("image/jpeg") + && !tipoArquivo.equalsIgnoreCase("application/zip") + && !tipoArquivo.equalsIgnoreCase("application/x-rar-compressed") + && !tipoArquivo.equalsIgnoreCase("application/octet-stream")) { + + mensagemRelatorio = "Formato de Arquivo para Relatório é inválido!"; + statusRelatorio = false; + + } else { + HashDao hashDao = new HashDao(); + questionario = new Questionario(); + questionario = hashDao.verificarHash(path, valorHash); + String nomeExtensaoRelatorio = fileRelatorio.getFileName(); + + if (questionario != null && questionario.getDtInicioQuestionario() != null) { + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); + planoTrabalho = new PlanoTrabalho(); + + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); + + if (planoTrabalho.getArquivoRelatorioAss() == null) { + if (planoTrabalhoDao.salvarRelatorioAss(path, fileRelatorio.getFile(), questionario, + nomeExtensaoRelatorio)) { + mensagemRelatorio = "Relatório anexado com sucesso!"; + statusRelatorio = true; + } else { + mensagemRelatorio = "Não foi possível anexar o Relatório!"; + } + } else { + if (planoTrabalhoDao.atualizarRelatorioAss(path, fileRelatorio.getFile(), questionario, + planoTrabalho.getIdPlanoTrabalho(), nomeExtensaoRelatorio)) { + mensagemRelatorio = "Relatório anexado com sucesso!"; + statusRelatorio = true; + } else { + mensagemRelatorio = "Não foi possível anexar o Relatório!"; + } + } + + } else { + mensagemRelatorio = "Favor verificar o Código de Acesso!"; + } + + } + result.include("mensagemRelatorio", mensagemRelatorio); + result.include("statusRelatorio", statusRelatorio); + VRaptorRequestHolder.currentRequest().getServletContext() + .setAttribute("questionario", questionario); + VRaptorRequestHolder.currentRequest().getServletContext() + .setAttribute("fileRelatorio", fileRelatorio); } - else - { - mensagem = "O arquivo não pode ser maior que 50Mb!"; + + + if (filePlano == null && fileRelatorio == null) { + mensagemPlano = "Não foi possível anexar o Plano de Trabalho!"; + mensagemRelatorio = "Não foi possível anexar o Relatório!"; + result.include("mensagemPlano", mensagemPlano); + result.include("statusPlano", statusPlano); + result.include("mensagemRelatorio", mensagemRelatorio); + result.include("statusRelatorio", statusRelatorio); } - result.include("mensagem", mensagem); - result.include("status", status); + this.validator.add(new ValidationMessage("", "")); this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).planoTrabalhoConfirmacao(); } @@ -132,12 +221,11 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig { if (questionario != null && questionario.getIdQuestionario() > 0) { planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); - - if(planoTrabalho != null) - { + + if (planoTrabalho != null) { try { - String nome = planoTrabalho.getNomeExtensao(); - dados = planoTrabalho.getArquivoPlanoTrabalho(); + String nome = planoTrabalho.getNomeExtensaoPlanoTrabalho(); + dados = planoTrabalho.getArquivoPlanoTrabalho(); response.setContentType("inline/download"); String arq = "attachment;filename=" + nome; response.setHeader("Content-Disposition", arq); @@ -146,7 +234,38 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig { os.flush(); os.close(); } catch (Exception e) { - + + } + } + } + } + + @Get("/recuperar-relatorio/{id}") + public void recuperarRelatorio(int id, HttpServletResponse response) throws IOException { + + Questionario questionario = new Questionario(path, id); + + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); + PlanoTrabalho planoTrabalho = new PlanoTrabalho(); + + byte[] dados = null; + + if (questionario != null && questionario.getIdQuestionario() > 0) { + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); + + if (planoTrabalho != null) { + try { + String nome = planoTrabalho.getNomeExtensaoRelatorioAss(); + dados = planoTrabalho.getArquivoRelatorioAss(); + response.setContentType("inline/download"); + String arq = "attachment;filename=" + nome; + response.setHeader("Content-Disposition", arq); + ServletOutputStream os = response.getOutputStream(); + os.write(dados); + os.flush(); + os.close(); + } catch (Exception e) { + } } } diff --git a/src/br/com/controller/QuestionarioController.java b/src/br/com/controller/QuestionarioController.java index cc922a1..6586c12 100644 --- a/src/br/com/controller/QuestionarioController.java +++ b/src/br/com/controller/QuestionarioController.java @@ -62,7 +62,7 @@ public class QuestionarioController { @Path("/lista-questionario") public void listaQuestionario() { - + listarQuestionarioComFiltro("todos", "todos",""); } @Path("/listar-questionario") @@ -81,8 +81,6 @@ public class QuestionarioController { this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario(); - - } @Path("/salvar-questionario") diff --git a/src/br/com/controller/formularioOrgaoController.java b/src/br/com/controller/formularioOrgaoController.java index 028858a..77e3d46 100644 --- a/src/br/com/controller/formularioOrgaoController.java +++ b/src/br/com/controller/formularioOrgaoController.java @@ -66,7 +66,9 @@ public class formularioOrgaoController { questionario = new Questionario(); questionario = hashDao.verificarHash(path, valorHash); - + if(!questionario.isFlagEnviado()) + { + if (questionario.getDtInicioQuestionario() != null && !valorHash.equalsIgnoreCase("")) { VRaptorRequestHolder.currentRequest().getServletContext() @@ -119,6 +121,20 @@ public class formularioOrgaoController { } } } + } + else + { + validacao = new Validacao(); + validacao.setCampo("valorHash"); + validacao + .setMensagem("Não é mais permitido alterar seus dados!"); + + mensagemValidacaoCampos.add(validacao); + + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos); + this.validator.add(new ValidationMessage("", "")); + this.validator.onErrorUsePageOf(loginController.class).login(); + } } private void setValorCamposUrl(String nomeCampo, String valorCampo) diff --git a/src/br/com/controller/relatorioController.java b/src/br/com/controller/relatorioController.java index 5da5637..8f22bb0 100644 --- a/src/br/com/controller/relatorioController.java +++ b/src/br/com/controller/relatorioController.java @@ -1,214 +1,357 @@ package br.com.controller; +import java.io.File; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import javax.activation.DataHandler; +import javax.activation.FileDataSource; import javax.servlet.ServletContext; +import org.apache.commons.fileupload.FileUpload; + import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; import br.com.caelum.vraptor.Resource; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.Validator; +import br.com.caelum.vraptor.interceptor.multipart.UploadedFile; +import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder; import br.com.caelum.vraptor.validator.ValidationMessage; import br.com.dao.HashDao; +import br.com.dao.PlanoTrabalhoDao; +import br.com.dao.QuestionarioDao; import br.com.dao.RespostaQuestionarioDao; import br.com.model.entity.AmostragemSiteQuestionario; +import br.com.model.entity.EnvioEmailSemAutenticacao; +import br.com.model.entity.PlanoTrabalho; import br.com.model.entity.Questionario; import br.com.model.entity.RespostaQuestionario; +import br.com.model.utilities.Email; import br.com.util.Validacao; @Resource public class relatorioController { - + private List mensagemValidacaoCampos = new ArrayList(); private Result result; private Validator validator; private Questionario questionario; private ServletContext application; private String path; - + public relatorioController(Result result, Validator validator, ServletContext application) { this.result = result; this.validator = validator; this.application = application; this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties"; } - - - @Path("/relatorio-site") - public void relatorio(){ - - - } - - @Path("/relatorio-imprimir") - @Get("/relatorio-imprimir/{idQuestionario}") - public void relatorioImprimir(String idQuestionario, String valorHash) - { - if (idQuestionario != null) { - gerarRelatorio(Integer.parseInt(idQuestionario)); + + + @Path("/relatorio-site") + public void relatorio() { + + } + + @Path("/relatorio-imprimir") + public void relatorioImprimir(String idQuestionario, String valorHash) { + if (idQuestionario != null) { + gerarRelatorio(Integer.parseInt(idQuestionario)); + } else if (valorHash != null) { + Validacao validacao = new Validacao(); + mensagemValidacaoCampos = new ArrayList(); + mensagemValidacaoCampos = validacao.validarHashEmitirRelatorio(path, valorHash); + + if (mensagemValidacaoCampos.size() > 0) { + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos); + this.validator.add(new ValidationMessage("", "")); + this.validator.onErrorUsePageOf(relatorioController.class).relatorio(); } - else if (valorHash != null) - { - Validacao validacao = new Validacao(); - mensagemValidacaoCampos = new ArrayList(); - mensagemValidacaoCampos = validacao.validarHashEmitirRelatorio(path, valorHash); - - if (mensagemValidacaoCampos.size() > 0) { - result.include("mensagemValidacaoCampos", mensagemValidacaoCampos); - this.validator.add(new ValidationMessage("", "")); - this.validator.onErrorUsePageOf(relatorioController.class).relatorio(); - } - HashDao hashDao = new HashDao(); - questionario = new Questionario(); - questionario = hashDao.verificarHash(path, valorHash); - - if (questionario.getDtInicioQuestionario() != null && questionario.isQuestionario_respondido()) { - gerarRelatorio(questionario.getIdQuestionario()); - } - + HashDao hashDao = new HashDao(); + questionario = new Questionario(); + questionario = hashDao.verificarHash(path, valorHash); + + if (questionario.getDtInicioQuestionario() != null + && questionario.isQuestionario_respondido()) { + gerarRelatorio(questionario.getIdQuestionario()); } + } + } + + @Path("/enviar-email-mpf") + public void enviarEmailMPF() { + Questionario questionario = new Questionario(); + QuestionarioDao questionarioDao; - private void gerarRelatorio(int idQuestionario) - { - Questionario questionario = new Questionario(path, idQuestionario); - RespostaQuestionarioDao respostaQuestionarioDao = new RespostaQuestionarioDao(); - - List lsRespostaQuestionario = new ArrayList(); - List lsAmostragemSiteQuestionario = - new ArrayList(); - - lsRespostaQuestionario = - respostaQuestionarioDao.retornarRespostaQuestionarioPorQuestionario(path, questionario - .getIdQuestionario()); - - List curso = new ArrayList(); - List simValidacao = new ArrayList(); - List assistiva = new ArrayList(); - List deficiencias = new ArrayList(); - List ferramentaValidacao = new ArrayList(); - - for (RespostaQuestionario respostaQuestionario : lsRespostaQuestionario) { - - switch (respostaQuestionario.getPergunta().getIdPergunta()) { - case 1: - result.include("nomeOrgao", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 2: - result.include("nomePessoa", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 3: - result.include("cargo", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 4: - result.include("telefone", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 5: - result.include("email", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 7: - result.include("perguntaAcessibilidade", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 8: - result.include("reclamacao", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 9: - result.include("espacoReclamacao", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 10: - result.include("perguntaEstimulo", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 11: - curso.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); - break; - case 12: - result.include("requisito", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 13: - result.include("justificativaRequisito", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 14: - result.include("opcaoContrat", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 15: - result.include("perguntaValidacao", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 16: - simValidacao.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); - break; - case 17: - ferramentaValidacao.add(respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 18: - result.include("outroAvaliador", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 19: - - lsAmostragemSiteQuestionario.add(respostaQuestionario.getAmostragemSiteQuestionario()); - break; - /* case 20: - result.include("nivelWcag", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break;*/ - case 21: - result.include("checklistQtnList", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 22: - deficiencias.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); - break; - case 23: - result.include("funcionalidade", respostaQuestionario.getOpcaoResposta() - .getDescOpcaoResposta()); - break; - case 24: - assistiva.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); - break; - case 25: - result.include("justificativaAssistiva", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - case 26: - result.include("dificuldadePrazo", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta()); - break; - default: - break; + UploadedFile fileRelatorio; + + String mensagemMPF = ""; + String mensagemOrgao = ""; + String assuntoMPF = ""; + String assuntoOrgao = ""; + + questionario = + (Questionario) VRaptorRequestHolder.currentRequest().getServletContext() + .getAttribute("questionario"); + + fileRelatorio = + (UploadedFile) VRaptorRequestHolder.currentRequest().getServletContext() + .getAttribute("fileRelatorio"); + + PlanoTrabalho planoTrabalho = new PlanoTrabalho(); + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao(); + + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario); + + DataHandler dataHandlerRelatorio; + DataHandler dataHandlerPlano; + + dataHandlerRelatorio = + new DataHandler(planoTrabalho.getArquivoRelatorioAss(), fileRelatorio.getContentType()); + dataHandlerPlano = + new DataHandler(planoTrabalho.getArquivoPlanoTrabalho(), fileRelatorio.getContentType()); + + Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties"); + + EnvioEmailSemAutenticacao envioEmailSemAutenticacao = + new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort())); + + + String mensagemRetornoMPF = + envioEmailSemAutenticacao.sendMailComAnexo(questionario.getEmailDestinoOrgao(), + email.getAnexosTo(), assuntoMPF, mensagemMPF, email.getAuth(), email.getAuthUser(), + email.getAuthPass(), dataHandlerRelatorio, planoTrabalho.getNomeExtensaoRelatorioAss(), + dataHandlerPlano, planoTrabalho.getNomeExtensaoPlanoTrabalho()); + + if (mensagemRetornoMPF.equalsIgnoreCase("")) { + String mensagemRetornoOrgao = + envioEmailSemAutenticacao.sendMailComAnexo(email.getFrom(), + questionario.getEmailDestinoOrgao(), assuntoOrgao, mensagemOrgao, email.getAuth(), + email.getAuthUser(), email.getAuthPass(), dataHandlerRelatorio, + planoTrabalho.getNomeExtensaoRelatorioAss(), dataHandlerPlano, + planoTrabalho.getNomeExtensaoPlanoTrabalho()); + + + if (mensagemRetornoOrgao.equalsIgnoreCase("")) { + + questionarioDao = new QuestionarioDao(); + + if(questionarioDao.atualizarFlagEnviado(path, questionario.getIdQuestionario())) + { + result.include("mensagemEnvio", "Mensagem enviada com Sucesso, você recebeu um email com os anexos!"); + result.include("statusEnvio", true); } + } + } + else + { + result.include("mensagemEnvio", "Não foi possível enviar o email com os anexos!"); + result.include("statusEnvio", false); + } + + this.validator.add(new ValidationMessage("", "")); + this.validator.onErrorUsePageOf(relatorioController.class).confirmacaoEnvioEmailMPF(); + } + public void confirmacaoEnvioEmailMPF() + { + + } + + @Get("/relatorio-imprimir/{id}") + public void relatorioImprimir(String id) { + if (id != null) { + gerarRelatorio(Integer.parseInt(id)); + } + } + + private void gerarRelatorio(int idQuestionario) { + Questionario questionario = new Questionario(path, idQuestionario); + RespostaQuestionarioDao respostaQuestionarioDao = new RespostaQuestionarioDao(); + + List lsRespostaQuestionario = new ArrayList(); + List lsAmostragemSiteQuestionario = + new ArrayList(); + + lsRespostaQuestionario = + respostaQuestionarioDao.retornarRespostaQuestionarioPorQuestionario(path, + questionario.getIdQuestionario()); + + List curso = new ArrayList(); + List simValidacao = new ArrayList(); + List assistiva = new ArrayList(); + List deficiencias = new ArrayList(); + List ferramentaValidacao = new ArrayList(); + + for (RespostaQuestionario respostaQuestionario : lsRespostaQuestionario) { + + switch (respostaQuestionario.getPergunta().getIdPergunta()) { + case 1: + result + .include( + "nomeOrgao", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 2: + result + .include( + "nomePessoa", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 3: + result + .include( + "cargo", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 4: + result + .include( + "telefone", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 5: + result + .include( + "email", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 7: + result.include("perguntaAcessibilidade", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 8: + result.include("reclamacao", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 9: + result + .include( + "espacoReclamacao", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 10: + result.include("perguntaEstimulo", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 11: + curso.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); + break; + case 12: + result.include("requisito", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 13: + result + .include( + "justificativaRequisito", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 14: + result.include("opcaoContrat", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 15: + result.include("perguntaValidacao", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 16: + simValidacao.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); + break; + case 17: + ferramentaValidacao.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); + break; + case 18: + result + .include( + "outroAvaliador", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 19: + + lsAmostragemSiteQuestionario.add(respostaQuestionario.getAmostragemSiteQuestionario()); + break; + /* + * case 20: result.include("nivelWcag", respostaQuestionario.getOpcaoResposta() + * .getDescOpcaoResposta()); break; + */ + case 21: + result.include("checklistQtnList", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 22: + deficiencias.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); + break; + case 23: + result.include("funcionalidade", respostaQuestionario.getOpcaoResposta() + .getDescOpcaoResposta()); + break; + case 24: + assistiva.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta()); + break; + case 25: + result + .include( + "justificativaAssistiva", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + case 26: + result + .include( + "dificuldadePrazo", + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario + .getTextoResposta()); + break; + default: + break; } - result.include("dataRespostaQuestionario", respostaQuestionarioDao.retornarDataRespostaQuestionarioPorQuestionario(path, idQuestionario)); - - if(curso.size() == 0) - { - curso.add("Não Respondido"); - } - - if(simValidacao.size() == 0) - { - simValidacao.add("Não Respondido"); - } - - if(deficiencias.size() == 0) - { - deficiencias.add("Não Respondido"); - } - - result.include("curso", curso); - result.include("simValidacao", simValidacao); - result.include("assistiva", assistiva); - result.include("deficiencias", deficiencias); - result.include("ferramentaValidacao", ferramentaValidacao); - result.include("questionario", questionario); - result.include("lsAmostragemSiteQuestionario", lsAmostragemSiteQuestionario); + + } + result.include("dataRespostaQuestionario", respostaQuestionarioDao + .retornarDataRespostaQuestionarioPorQuestionario(path, idQuestionario)); + + if (curso.size() == 0) { + curso.add("Não Respondido"); + } + + if (simValidacao.size() == 0) { + simValidacao.add("Não Respondido"); + } + + if (deficiencias.size() == 0) { + deficiencias.add("Não Respondido"); + } + + result.include("curso", curso); + result.include("simValidacao", simValidacao); + result.include("assistiva", assistiva); + result.include("deficiencias", deficiencias); + result.include("ferramentaValidacao", ferramentaValidacao); + result.include("questionario", questionario); + result.include("lsAmostragemSiteQuestionario", lsAmostragemSiteQuestionario); + } } diff --git a/src/br/com/dao/HashDao.java b/src/br/com/dao/HashDao.java index 9418bf4..bccc6e1 100644 --- a/src/br/com/dao/HashDao.java +++ b/src/br/com/dao/HashDao.java @@ -29,7 +29,7 @@ public class HashDao { sql.append(" SELECT id_questionario, dt_inicio_questionario, dt_fim_questionario, "); sql.append(" no_orgao, hash_autenticacao, questionario_respondido, email_destino_orgao, "); sql.append(" responsavel, cargo_responsavel, telefone, data_recebimento_email, "); - sql.append(" idautorizacao, data_resposta_email "); + sql.append(" idautorizacao, data_resposta_email, flag_enviado "); sql.append(" FROM questionario where hash_autenticacao = '" + valorHash + "'"); sql.append(" and (dt_inicio_questionario <= '" + DateUtil.dataHoraAtual() + "')"); sql.append(" and (dt_fim_questionario >= '" + DateUtil.dataHoraAtual() + "');"); @@ -48,6 +48,7 @@ public class HashDao { questionario.setResponsavel(rset.getString("responsavel")); questionario.setCargoResponsavel(rset.getString("cargo_responsavel")); questionario.setTelefone(rset.getString("telefone")); + questionario.setFlagEnviado(rset.getBoolean("flag_enviado")); questionario.setEmailDestinoOrgao(rset.getString("email_destino_orgao")); } diff --git a/src/br/com/dao/PlanoTrabalhoDao.java b/src/br/com/dao/PlanoTrabalhoDao.java index aacb642..d8a8a2a 100644 --- a/src/br/com/dao/PlanoTrabalhoDao.java +++ b/src/br/com/dao/PlanoTrabalhoDao.java @@ -1,20 +1,14 @@ package br.com.dao; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStream; -import java.io.PrintStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.util.Properties; import br.com.model.entity.PlanoTrabalho; import br.com.model.entity.Questionario; -import br.com.model.utilities.ManagerProperties; public class PlanoTrabalhoDao { @@ -27,7 +21,7 @@ public class PlanoTrabalhoDao { Connection con = Conexao.conecta(path); Statement estado; ResultSet rset = null; - boolean existePlanoTrabalho = false; + //boolean existePlanoTrabalho = false; int idPlanoTrabalho = -1; try { @@ -72,7 +66,44 @@ public class PlanoTrabalhoDao { try { sql = new StringBuffer(); - sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, nome_extensao) VALUES (?, ?, ?); "); + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, extensao_plano_trabalho) VALUES (?, ?, ?); "); + + estado = con.prepareStatement(sql.toString()); + + estado.setInt(1, questionario.getIdQuestionario()); + estado.setBinaryStream(2, file); + estado.setString(3, nomeExtensao); + + resultado = estado.executeUpdate(); + + if (resultado == 0) { + salvoComSucesso = false; + } else { + + salvoComSucesso = true; + } + + } catch (SQLException e) { + + e.printStackTrace(); + } + + return salvoComSucesso; + } + + public boolean salvarRelatorioAss(String path, InputStream file, Questionario questionario, String nomeExtensao) + { + + StringBuffer sql = new StringBuffer(); + Connection con = Conexao.conecta(path); + PreparedStatement estado; + int resultado = 0; + boolean salvoComSucesso = false; + + try { + + sql = new StringBuffer(); + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_relatorio_ass, extensao_relatorio_ass) VALUES (?, ?, ?); "); estado = con.prepareStatement(sql.toString()); @@ -112,7 +143,7 @@ public class PlanoTrabalhoDao { //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); "); sql.append(" UPDATE public.plano_trabalho"); sql.append(" SET arquivo_plano_trabalho=?,"); - sql.append( " nome_extensao =? "); + sql.append( " extensao_plano_trabalho =? "); sql.append(" WHERE id_plano_trabalho=?;"); estado = con.prepareStatement(sql.toString()); @@ -139,6 +170,49 @@ public class PlanoTrabalhoDao { return salvoComSucesso; } + public boolean atualizarRelatorioAss(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeExtensao) + { + + StringBuffer sql = new StringBuffer(); + Connection con = Conexao.conecta(path); + PreparedStatement estado; + int resultado = 0; + boolean salvoComSucesso = false; + + try { + + sql = new StringBuffer(); + //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); "); + sql.append(" UPDATE public.plano_trabalho"); + sql.append(" SET arquivo_relatorio_ass=?,"); + sql.append( " extensao_relatorio_ass =? "); + sql.append(" WHERE id_plano_trabalho=?;"); + + estado = con.prepareStatement(sql.toString()); + + //estado.setInt(1, questionario.getIdQuestionario()); + estado.setBinaryStream(1, file); + estado.setString(2, nomeExtensao); + estado.setInt(3, idPlanoTrabalho); + + resultado = estado.executeUpdate(); + + if (resultado == 0) { + salvoComSucesso = false; + } else { + + salvoComSucesso = true; + } + + } catch (SQLException e) { + + e.printStackTrace(); + } + + return salvoComSucesso; + } + + public PlanoTrabalho recuperarPlanoTrabalho(String path, Questionario questionario) { @@ -147,8 +221,8 @@ public class PlanoTrabalhoDao { Connection con = Conexao.conecta(path); Statement estado; ResultSet rset = null; - byte[] imgBytes = null; - PlanoTrabalho planoTrabalho = new PlanoTrabalho(); + //byte[] imgBytes = null; + PlanoTrabalho planoTrabalho = new PlanoTrabalho(); try { @@ -162,9 +236,11 @@ public class PlanoTrabalhoDao { rset = estado.executeQuery(sql); while (rset.next()) { - planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho")); planoTrabalho.setIdPlanoTrabalho(rset.getInt("id_plano_trabalho")); - planoTrabalho.setNomeExtensao(rset.getString("nome_extensao")); + planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho")); + planoTrabalho.setNomeExtensaoPlanoTrabalho(rset.getString("extensao_plano_trabalho")); + planoTrabalho.setArquivoRelatorioAss(rset.getBytes("arquivo_relatorio_ass")); + planoTrabalho.setNomeExtensaoRelatorioAss(rset.getString("extensao_relatorio_ass")); planoTrabalho.setQuestionario(questionario); } diff --git a/src/br/com/dao/QuestionarioDao.java b/src/br/com/dao/QuestionarioDao.java index 7b1624c..7f7f03c 100644 --- a/src/br/com/dao/QuestionarioDao.java +++ b/src/br/com/dao/QuestionarioDao.java @@ -54,8 +54,9 @@ public class QuestionarioDao { questionario.setTelefone(rset.getString("telefone")); questionario.setIdAutorizacaoGeracaoHash(rset.getInt("idAutorizacao")); questionario.setDtRecebimentoEmail(DateUtil.dataHoraFormatadaDiaMesAno(rset.getString("data_recebimento_email"))); - + questionario.setFlagEnviado(rset.getBoolean("flag_enviado")); dataRespostaQuestionario = rset.getString("data_resposta_email"); + if(dataRespostaQuestionario != null) { questionario.setDtRespostaEmail(DateUtil.dataHoraFormatadaDiaMesAnoComParametro(dataRespostaQuestionario)); @@ -110,6 +111,7 @@ public class QuestionarioDao { questionario.setTelefone(rset.getString("telefone")); questionario.setIdAutorizacaoGeracaoHash(rset.getInt("idAutorizacao")); questionario.setDtRecebimentoEmail(DateUtil.dataHoraFormatadaDiaMesAno(rset.getString("data_recebimento_email"))); + questionario.setFlagEnviado(rset.getBoolean("flag_enviado")); dataRespostaQuestionario = rset.getString("data_resposta_email"); if(dataRespostaQuestionario != null) @@ -277,6 +279,42 @@ public class QuestionarioDao { return salvoComSucesso; } + public boolean atualizarFlagEnviado(String path, int idQuestionario) + { + + 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.questionario SET flag_enviado = true WHERE id_questionario = ?; "); + + estado = con.prepareStatement(sql.toString()); + + estado.setInt(1, idQuestionario); + + resultado = estado.executeUpdate(); + + if (resultado == 0) { + salvoComSucesso = false; + } else { + + salvoComSucesso = true; + } + + } catch (SQLException e) { + + e.printStackTrace(); + } + + return salvoComSucesso; + } public ResultSet retornarQuestionarioPorId(String path, int idQuestionario) { @@ -345,8 +383,8 @@ public class QuestionarioDao { sql.append(" dt_inicio_questionario, dt_fim_questionario, "); sql.append(" no_orgao, hash_autenticacao, questionario_respondido, email_destino_orgao, "); sql.append(" responsavel, cargo_responsavel, telefone, idAutorizacao, "); - sql.append(" data_recebimento_email) "); - sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"); + sql.append(" data_recebimento_email,flag_enviado) "); + sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?);"); // cria statement para executar a query @@ -363,6 +401,7 @@ public class QuestionarioDao { estado.setString(9, questionario.getTelefone()); estado.setInt(10, questionario.getIdAutorizacaoGeracaoHash()); estado.setDate(11, sqlDtRecebimentoEmail); + estado.setBoolean(12, false); //estado.setDate(12, sqlDtRespostaEmail); //resultado = estado.executeUpdate(); -- libgit2 0.21.2