Commit bb65c92665671e04cdda53d5dd9fb176127330be

Authored by gibransodre
1 parent fe65b51a
Exists in master

Novas funcionalidades.

WebContent/WEB-INF/jsp/planoTrabalho/confirmacaoEnvioEmailMPF.jsp 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +<%@page contentType="text/html" pageEncoding="UTF-8"%>
  2 +<%@taglib prefix="t" tagdir="/WEB-INF/tags"%>
  3 +<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4 +<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  5 +
  6 +<t:baseLayout>
  7 + <jsp:body>
  8 +
  9 + <div class="painelSucesso">
  10 +
  11 + <c:if test="${statusEnvio == true }">
  12 + <img src="imgs/afirmativo.jpg"
  13 + alt="Confirmação de envio de Relatório e Plano de Trabalho ao Ministério Público Federal!">
  14 + <br>
  15 + </c:if>
  16 + <c:if test="${statusEnvio == false }">
  17 + <img src="imgs/negativo.gif"
  18 + alt="Falha ao enviar Relatório e Plano de Trabalho ao Ministério Público Federal!">
  19 + <br>
  20 + </c:if>
  21 + <p> <strong>${mensagemEnvio}</strong>
  22 + </p>
  23 +
  24 + </div>
  25 +
  26 + <br>
  27 + <br>
  28 + <a class="button" id="pPrincipal"
  29 + href="${pageContext.request.contextPath}/">Página Inicial</a>
  30 + <br>
  31 + <br>
  32 +
  33 +</jsp:body>
  34 +</t:baseLayout>
  35 +
... ...
WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp
... ... @@ -31,11 +31,18 @@
31 31 <fieldset class="layoutCampos">
32 32 <legend>Plano de Trabalho</legend>
33 33 <label for="valorHash">Código de acesso: </label>
34   - <input type="text" id="valorHash" name="valorHash" size="60" maxlength="60" required><br><br>
35   - <label for="file">Arquivo: (tamanho máximo: 50Mb) </label>
36   - <input type="file" id="file" name="file" accept=
37   -"application/msword, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,
38   -text/plain, application/pdf, image/*" required><br><br>
  34 + <input type="password" id="valorHash" name="valorHash" size="60" maxlength="60" required><br><br>
  35 +
  36 +
  37 +<label for="fileRelatorio">Arquivo de Relatório Assinado: (tamanho máximo: 50Mb) </label>
  38 + <input type="file" id="fileRelatorio" name="fileRelatorio" accept=
  39 +"application/msword, application/zip, application/octet-stream, application/x-rar-compressed, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,
  40 +text/plain, application/pdf, image/*"><br><br>
  41 +
  42 +<label for="filePlano">Arquivo de Plano de trabalho: (tamanho máximo: 50Mb) </label>
  43 + <input type="file" id="filePlano" name="filePlano" accept=
  44 +"application/msword,application/zip,application/x-rar-compressed, application/octet-stream, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,
  45 +text/plain, application/pdf, image/*" ><br><br>
39 46 <input type="submit" class="button" value="Enviar">
40 47 </fieldset>
41 48  
... ...
WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalhoConfirmacao.jsp
... ... @@ -6,25 +6,74 @@
6 6 <t:baseLayout>
7 7 <jsp:body>
8 8  
  9 + <div class="painelSucesso">
9 10  
10   - <div class="painelSucesso">
11   - <c:if test="${status == true }">
12   - <img src="imgs/afirmativo.jpg" alt="Confirmação de plano de trabalho enviado com sucesso!"><br>
  11 + <c:if test="${statusRelatorio == true }">
  12 + <img src="imgs/afirmativo.jpg"
  13 + alt="Confirmação de Relatório anexado com sucesso!">
  14 + <br>
13 15 </c:if>
14   - <c:if test="${status == false }">
15   - <img src="imgs/negativo.gif" alt="Falha de envio de plano de trabalho!"><br>
  16 + <c:if test="${statusRelatorio == false }">
  17 + <img src="imgs/negativo.gif" alt="Falha ao anexar Relatório!">
  18 + <br>
16 19 </c:if>
17   - <p><strong>${mensagem}</strong></p>
  20 + <p> <strong>${mensagemRelatorio}</strong>
  21 + </p>
  22 +
18 23 </div>
  24 +
  25 + <div class="painelSucesso">
  26 +
  27 + <c:if test="${statusPlano == true }">
  28 + <img src="imgs/afirmativo.jpg"
  29 + alt="Confirmação de plano de trabalho anexado com sucesso!">
  30 + <br>
  31 + </c:if>
  32 + <c:if test="${statusPlano == false }">
  33 + <img src="imgs/negativo.gif" alt="Falha ao anexar plano de trabalho!">
  34 + <br>
  35 + </c:if>
  36 + <p>
  37 + <strong>${mensagemPlano}</strong>
  38 + </p>
  39 +
  40 +
  41 + <c:if test="${statusPlano == true }">
  42 + <br>
  43 + <br>
  44 + <c:if test="${existeRelatorioAnexado == true }">
  45 + <label>Deseja enviar o Relatório para o Ministério Público Federal - MPF?</label>
  46 + <br>
  47 + <br>
  48 + <strong class="atencao">
  49 + Atenção! Após o envio do Relatório ao MPF não mais será possível alterar seus dados.
  50 + </strong>
  51 + <br>
  52 + <br>
  53 + <a class="button" id="pNao"
  54 + href="${pageContext.request.contextPath}/">Não</a>
  55 +
  56 + <a class="button" id="pSim"
  57 + href="${pageContext.request.contextPath}/enviar-email-mpf">Sim</a>
  58 + </c:if>
  59 + </c:if>
  60 + </div>
  61 +
  62 +
  63 +
19 64  
20 65 <hr class="hr_linhaDupla">
21 66 <h2 class="outstanding-title">Aviso:</h2>
22 67  
23 68 <ul>
24 69 <li class="atencao">ATENÇÃO: O simples <span lang="en"><i>upload</i></span> 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</li>
25   - </ul> <br><br>
  70 + </ul> <br>
  71 + <br>
26 72  
27   - <a class="button" id="pPrincipal" href="${pageContext.request.contextPath}/">Página Inicial</a><br><br>
  73 + <a class="button" id="pPrincipal"
  74 + href="${pageContext.request.contextPath}/">Página Inicial</a>
  75 + <br>
  76 + <br>
28 77  
29 78 </jsp:body>
30 79 </t:baseLayout>
... ...
WebContent/WEB-INF/jsp/questionario/listaQuestionario.jsp
... ... @@ -54,6 +54,8 @@
54 54 <th>Relatório Respondido</th>
55 55 <th>Plano de Trabalho Enviado</th>
56 56 <th>download Plano de Trabalho</th>
  57 + <th>download Relatório Assinado</th>
  58 + <th>Visualizar Relatório</th>
57 59  
58 60 </tr>
59 61  
... ... @@ -95,8 +97,12 @@
95 97 <c:if test="${questionario.planoTrabalhoEnviado == false}">
96 98 <td><input type="checkbox" disabled="disabled"> </td>
97 99 </c:if>
98   - <td><a
99   - href="${pageContext.request.contextPath}/recuperar-plano-trabalho/${questionario.idQuestionario}">Recuperar</a></td>
  100 + <td>
  101 + <a href="${pageContext.request.contextPath}/recuperar-plano-trabalho/${questionario.idQuestionario}">Plano de Trabalho</a></td>
  102 + <td>
  103 + <a href="${pageContext.request.contextPath}/recuperar-relatorio/${questionario.idQuestionario}">Relatório Assinado</a></td>
  104 + <td><a
  105 + href="${pageContext.request.contextPath}/relatorio-imprimir/${questionario.idQuestionario}">Visualizar Relatório</a></td>
100 106 </tr>
101 107  
102 108 </c:forEach>
... ...
WebContent/WEB-INF/mail.properties
... ... @@ -7,4 +7,5 @@ prop.email.authpass = &quot;&quot;
7 7 prop.email.auth = false
8 8 prop.email.to = govbr@planejamento.gov.br
9 9 prop.email.from = govbr@planejamento.gov.br
10   -prop.email.copiaEmailTo = fabricio.souza@planejamento.gov.br
11 10 \ No newline at end of file
  11 +prop.email.copiaEmailTo = fabricio.souza@planejamento.gov.br
  12 +prop.email.anexosTo = gibran.sodre@planejamento.gov.br
12 13 \ No newline at end of file
... ...
src/br/com/controller/PlanoTrabalhoController.java
1 1 package br.com.controller;
2 2  
3 3 import java.io.IOException;
  4 +import java.util.ArrayList;
  5 +import java.util.List;
4 6  
5 7 import javax.servlet.ServletContext;
6 8 import javax.servlet.ServletOutputStream;
... ... @@ -13,6 +15,7 @@ import br.com.caelum.vraptor.Result;
13 15 import br.com.caelum.vraptor.Validator;
14 16 import br.com.caelum.vraptor.interceptor.multipart.DefaultMultipartConfig;
15 17 import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
  18 +import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder;
16 19 import br.com.caelum.vraptor.validator.ValidationMessage;
17 20 import br.com.dao.HashDao;
18 21 import br.com.dao.PlanoTrabalhoDao;
... ... @@ -21,7 +24,7 @@ import br.com.model.entity.Questionario;
21 24  
22 25  
23 26 @Resource
24   -public class PlanoTrabalhoController extends DefaultMultipartConfig {
  27 +public class PlanoTrabalhoController extends DefaultMultipartConfig {
25 28  
26 29 private Validator validator;
27 30 private Result result;
... ... @@ -34,10 +37,10 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
34 37 this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties";
35 38 this.result = result;
36 39 }
37   -
  40 +
38 41 // alteramos o tamanho total do upload para 50MB
39 42 public long getSizeLimit() {
40   - return 50 * 1024 * 1024;
  43 + return 50 * 1024 * 1024;
41 44 }
42 45  
43 46 @Path("/planoTrabalho-site")
... ... @@ -50,72 +53,158 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
50 53  
51 54 }
52 55  
53   -
54   - @Path("/salvar-plano-trabalho")
55   - public void enviarPlanoTrabalho(String valorHash, UploadedFile file) {
56 56  
57   - String mensagem = "Não foi possível enviar o plano de trabalho!";
58   - boolean status = false;
59   -
60   - if(file != null)
61   - {
62   - String tipoArquivo = file.getContentType();
63   -
64   - int idPlanoTrabalho = -1;
65   -
66   - if (!tipoArquivo.equalsIgnoreCase("application/msword")
67   - && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel")
68   - && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text")
69   - && !tipoArquivo.equalsIgnoreCase("text/plain")
70   - && !tipoArquivo.equalsIgnoreCase("application/pdf")
71   - && !tipoArquivo.equalsIgnoreCase("image/png") && !tipoArquivo.equalsIgnoreCase("image/gif")
72   - && !tipoArquivo.equalsIgnoreCase("image/jpeg")) {
73   -
74   - mensagem = "Formato de Arquivo inválido!";
75   - status = false;
76   -
77   - } else {
78   - HashDao hashDao = new HashDao();
79   - Questionario questionario = new Questionario();
80   - questionario = hashDao.verificarHash(path, valorHash);
81   - String nomeExtensao = file.getFileName();
82   -
  57 + @Path("/salvar-plano-trabalho")
  58 + public void enviarPlanoTrabalho(String valorHash, UploadedFile filePlano,
  59 + UploadedFile fileRelatorio) {
  60 +
  61 + String mensagemPlano = null;
  62 + String mensagemRelatorio = null;
  63 + boolean statusPlano = false;
  64 + boolean statusRelatorio = false;
  65 + boolean existeRelatorioAnexado = false;
  66 + Questionario questionario = new Questionario();
  67 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  68 +
  69 + if (filePlano != null) {
  70 + String tipoArquivo = filePlano.getContentType();
  71 +
  72 +
  73 + if (!tipoArquivo.equalsIgnoreCase("application/msword")
  74 + && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel")
  75 + && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text")
  76 + && !tipoArquivo.equalsIgnoreCase("text/plain")
  77 + && !tipoArquivo.equalsIgnoreCase("application/pdf")
  78 + && !tipoArquivo.equalsIgnoreCase("image/png")
  79 + && !tipoArquivo.equalsIgnoreCase("image/gif")
  80 + && !tipoArquivo.equalsIgnoreCase("image/jpeg")
  81 + && !tipoArquivo.equalsIgnoreCase("application/zip")
  82 + && !tipoArquivo.equalsIgnoreCase("application/x-rar-compressed")
  83 + && !tipoArquivo.equalsIgnoreCase("application/octet-stream")) {
  84 +
  85 + mensagemPlano = "Formato de Arquivo para plano de trabalho inválido!";
  86 + statusPlano = false;
  87 +
  88 + } else {
  89 + HashDao hashDao = new HashDao();
  90 + questionario = new Questionario();
  91 + questionario = hashDao.verificarHash(path, valorHash);
  92 + String nomeExtensaoPlanoTrabalho = filePlano.getFileName();
  93 +
83 94 if (questionario != null && questionario.getDtInicioQuestionario() != null) {
84 95 PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
85 96  
86   - idPlanoTrabalho =
87   - planoTrabalhoDao.verificaPlanoTrabalho(path, questionario.getIdQuestionario());
  97 + planoTrabalho =
  98 + planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
88 99  
89   - if (idPlanoTrabalho == -1) {
90   - if (planoTrabalhoDao.salvarPlanoTrabalho(path, file.getFile(), questionario,
91   - nomeExtensao)) {
92   - mensagem = "Plano de trabalho enviado com sucesso!";
93   - status = true;
  100 + if (planoTrabalho.getArquivoPlanoTrabalho() == null) {
  101 + if (planoTrabalhoDao.salvarPlanoTrabalho(path, filePlano.getFile(), questionario,
  102 + nomeExtensaoPlanoTrabalho)) {
  103 + mensagemPlano = "Plano de trabalho anexado com sucesso!";
  104 + statusPlano = true;
94 105 } else {
95   - mensagem = "Não foi possível enviar o plano de trabalho!";
  106 + mensagemPlano = "Não foi possível anexar o plano de trabalho!";
96 107 }
97 108 } else {
98   - if (planoTrabalhoDao.atualizarPlanoTrabalho(path, file.getFile(), questionario,
99   - idPlanoTrabalho, nomeExtensao)) {
100   - mensagem = "Plano de trabalho enviado com sucesso!";
101   - status = true;
  109 + if (planoTrabalhoDao.atualizarPlanoTrabalho(path, filePlano.getFile(), questionario,
  110 + planoTrabalho.getIdPlanoTrabalho(), nomeExtensaoPlanoTrabalho)) {
  111 + mensagemPlano = "Plano de trabalho anexado com sucesso!";
  112 + statusPlano = true;
102 113 } else {
103   - mensagem = "Não foi possível enviar o plano de trabalho!";
  114 + mensagemPlano = "Não foi possível anexar o plano de trabalho!";
104 115 }
105 116 }
106 117  
107 118 } else {
108   - mensagem = "Favor verificar o Código de Acesso!";
  119 + mensagemPlano = "Favor verificar o Código de Acesso!";
109 120 }
  121 +
  122 + }
  123 +
  124 + if(planoTrabalho.getArquivoRelatorioAss() != null)
  125 + {
  126 + existeRelatorioAnexado = true;
  127 + }
110 128  
  129 + result.include("mensagemPlano", mensagemPlano);
  130 + result.include("statusPlano", statusPlano);
  131 + result.include("existeRelatorioAnexado", existeRelatorioAnexado);
111 132 }
  133 +
  134 +
  135 + // /Relatório Assinado
  136 +
  137 + if (fileRelatorio != null) {
  138 + String tipoArquivo = fileRelatorio.getContentType();
  139 +
  140 + if (!tipoArquivo.equalsIgnoreCase("application/msword")
  141 + && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel")
  142 + && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text")
  143 + && !tipoArquivo.equalsIgnoreCase("text/plain")
  144 + && !tipoArquivo.equalsIgnoreCase("application/pdf")
  145 + && !tipoArquivo.equalsIgnoreCase("image/png")
  146 + && !tipoArquivo.equalsIgnoreCase("image/gif")
  147 + && !tipoArquivo.equalsIgnoreCase("image/jpeg")
  148 + && !tipoArquivo.equalsIgnoreCase("application/zip")
  149 + && !tipoArquivo.equalsIgnoreCase("application/x-rar-compressed")
  150 + && !tipoArquivo.equalsIgnoreCase("application/octet-stream")) {
  151 +
  152 + mensagemRelatorio = "Formato de Arquivo para Relatório é inválido!";
  153 + statusRelatorio = false;
  154 +
  155 + } else {
  156 + HashDao hashDao = new HashDao();
  157 + questionario = new Questionario();
  158 + questionario = hashDao.verificarHash(path, valorHash);
  159 + String nomeExtensaoRelatorio = fileRelatorio.getFileName();
  160 +
  161 + if (questionario != null && questionario.getDtInicioQuestionario() != null) {
  162 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  163 + planoTrabalho = new PlanoTrabalho();
  164 +
  165 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
  166 +
  167 + if (planoTrabalho.getArquivoRelatorioAss() == null) {
  168 + if (planoTrabalhoDao.salvarRelatorioAss(path, fileRelatorio.getFile(), questionario,
  169 + nomeExtensaoRelatorio)) {
  170 + mensagemRelatorio = "Relatório anexado com sucesso!";
  171 + statusRelatorio = true;
  172 + } else {
  173 + mensagemRelatorio = "Não foi possível anexar o Relatório!";
  174 + }
  175 + } else {
  176 + if (planoTrabalhoDao.atualizarRelatorioAss(path, fileRelatorio.getFile(), questionario,
  177 + planoTrabalho.getIdPlanoTrabalho(), nomeExtensaoRelatorio)) {
  178 + mensagemRelatorio = "Relatório anexado com sucesso!";
  179 + statusRelatorio = true;
  180 + } else {
  181 + mensagemRelatorio = "Não foi possível anexar o Relatório!";
  182 + }
  183 + }
  184 +
  185 + } else {
  186 + mensagemRelatorio = "Favor verificar o Código de Acesso!";
  187 + }
  188 +
  189 + }
  190 + result.include("mensagemRelatorio", mensagemRelatorio);
  191 + result.include("statusRelatorio", statusRelatorio);
  192 + VRaptorRequestHolder.currentRequest().getServletContext()
  193 + .setAttribute("questionario", questionario);
  194 + VRaptorRequestHolder.currentRequest().getServletContext()
  195 + .setAttribute("fileRelatorio", fileRelatorio);
112 196 }
113   - else
114   - {
115   - mensagem = "O arquivo não pode ser maior que 50Mb!";
  197 +
  198 +
  199 + if (filePlano == null && fileRelatorio == null) {
  200 + mensagemPlano = "Não foi possível anexar o Plano de Trabalho!";
  201 + mensagemRelatorio = "Não foi possível anexar o Relatório!";
  202 + result.include("mensagemPlano", mensagemPlano);
  203 + result.include("statusPlano", statusPlano);
  204 + result.include("mensagemRelatorio", mensagemRelatorio);
  205 + result.include("statusRelatorio", statusRelatorio);
116 206 }
117   - result.include("mensagem", mensagem);
118   - result.include("status", status);
  207 +
119 208 this.validator.add(new ValidationMessage("", ""));
120 209 this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).planoTrabalhoConfirmacao();
121 210 }
... ... @@ -132,12 +221,11 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
132 221  
133 222 if (questionario != null && questionario.getIdQuestionario() > 0) {
134 223 planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
135   -
136   - if(planoTrabalho != null)
137   - {
  224 +
  225 + if (planoTrabalho != null) {
138 226 try {
139   - String nome = planoTrabalho.getNomeExtensao();
140   - dados = planoTrabalho.getArquivoPlanoTrabalho();
  227 + String nome = planoTrabalho.getNomeExtensaoPlanoTrabalho();
  228 + dados = planoTrabalho.getArquivoPlanoTrabalho();
141 229 response.setContentType("inline/download");
142 230 String arq = "attachment;filename=" + nome;
143 231 response.setHeader("Content-Disposition", arq);
... ... @@ -146,7 +234,38 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
146 234 os.flush();
147 235 os.close();
148 236 } catch (Exception e) {
149   -
  237 +
  238 + }
  239 + }
  240 + }
  241 + }
  242 +
  243 + @Get("/recuperar-relatorio/{id}")
  244 + public void recuperarRelatorio(int id, HttpServletResponse response) throws IOException {
  245 +
  246 + Questionario questionario = new Questionario(path, id);
  247 +
  248 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  249 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  250 +
  251 + byte[] dados = null;
  252 +
  253 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  254 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
  255 +
  256 + if (planoTrabalho != null) {
  257 + try {
  258 + String nome = planoTrabalho.getNomeExtensaoRelatorioAss();
  259 + dados = planoTrabalho.getArquivoRelatorioAss();
  260 + response.setContentType("inline/download");
  261 + String arq = "attachment;filename=" + nome;
  262 + response.setHeader("Content-Disposition", arq);
  263 + ServletOutputStream os = response.getOutputStream();
  264 + os.write(dados);
  265 + os.flush();
  266 + os.close();
  267 + } catch (Exception e) {
  268 +
150 269 }
151 270 }
152 271 }
... ...
src/br/com/controller/QuestionarioController.java
... ... @@ -62,7 +62,7 @@ public class QuestionarioController {
62 62  
63 63 @Path("/lista-questionario")
64 64 public void listaQuestionario() {
65   -
  65 + listarQuestionarioComFiltro("todos", "todos","");
66 66 }
67 67  
68 68 @Path("/listar-questionario")
... ... @@ -81,8 +81,6 @@ public class QuestionarioController {
81 81 this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
82 82  
83 83  
84   -
85   -
86 84 }
87 85  
88 86 @Path("/salvar-questionario")
... ...
src/br/com/controller/formularioOrgaoController.java
... ... @@ -66,7 +66,9 @@ public class formularioOrgaoController {
66 66 questionario = new Questionario();
67 67 questionario = hashDao.verificarHash(path, valorHash);
68 68  
69   -
  69 + if(!questionario.isFlagEnviado())
  70 + {
  71 +
70 72 if (questionario.getDtInicioQuestionario() != null && !valorHash.equalsIgnoreCase("")) {
71 73  
72 74 VRaptorRequestHolder.currentRequest().getServletContext()
... ... @@ -119,6 +121,20 @@ public class formularioOrgaoController {
119 121 }
120 122 }
121 123 }
  124 + }
  125 + else
  126 + {
  127 + validacao = new Validacao();
  128 + validacao.setCampo("valorHash");
  129 + validacao
  130 + .setMensagem("Não é mais permitido alterar seus dados!");
  131 +
  132 + mensagemValidacaoCampos.add(validacao);
  133 +
  134 + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  135 + this.validator.add(new ValidationMessage("", ""));
  136 + this.validator.onErrorUsePageOf(loginController.class).login();
  137 + }
122 138 }
123 139  
124 140 private void setValorCamposUrl(String nomeCampo, String valorCampo)
... ...
src/br/com/controller/relatorioController.java
1 1 package br.com.controller;
2 2  
  3 +import java.io.File;
  4 +import java.io.InputStream;
3 5 import java.util.ArrayList;
4 6 import java.util.List;
5 7  
  8 +import javax.activation.DataHandler;
  9 +import javax.activation.FileDataSource;
6 10 import javax.servlet.ServletContext;
7 11  
  12 +import org.apache.commons.fileupload.FileUpload;
  13 +
8 14 import br.com.caelum.vraptor.Get;
9 15 import br.com.caelum.vraptor.Path;
10 16 import br.com.caelum.vraptor.Resource;
11 17 import br.com.caelum.vraptor.Result;
12 18 import br.com.caelum.vraptor.Validator;
  19 +import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
  20 +import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder;
13 21 import br.com.caelum.vraptor.validator.ValidationMessage;
14 22 import br.com.dao.HashDao;
  23 +import br.com.dao.PlanoTrabalhoDao;
  24 +import br.com.dao.QuestionarioDao;
15 25 import br.com.dao.RespostaQuestionarioDao;
16 26 import br.com.model.entity.AmostragemSiteQuestionario;
  27 +import br.com.model.entity.EnvioEmailSemAutenticacao;
  28 +import br.com.model.entity.PlanoTrabalho;
17 29 import br.com.model.entity.Questionario;
18 30 import br.com.model.entity.RespostaQuestionario;
  31 +import br.com.model.utilities.Email;
19 32 import br.com.util.Validacao;
20 33  
21 34 @Resource
22 35 public class relatorioController {
23   -
  36 +
24 37 private List<Validacao> mensagemValidacaoCampos = new ArrayList<Validacao>();
25 38 private Result result;
26 39 private Validator validator;
27 40 private Questionario questionario;
28 41 private ServletContext application;
29 42 private String path;
30   -
  43 +
31 44 public relatorioController(Result result, Validator validator, ServletContext application) {
32 45 this.result = result;
33 46 this.validator = validator;
34 47 this.application = application;
35 48 this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties";
36 49 }
37   -
38   -
39   - @Path("/relatorio-site")
40   - public void relatorio(){
41   -
42   -
43   - }
44   -
45   - @Path("/relatorio-imprimir")
46   - @Get("/relatorio-imprimir/{idQuestionario}")
47   - public void relatorioImprimir(String idQuestionario, String valorHash)
48   - {
49   - if (idQuestionario != null) {
50   - gerarRelatorio(Integer.parseInt(idQuestionario));
  50 +
  51 +
  52 + @Path("/relatorio-site")
  53 + public void relatorio() {
  54 +
  55 + }
  56 +
  57 + @Path("/relatorio-imprimir")
  58 + public void relatorioImprimir(String idQuestionario, String valorHash) {
  59 + if (idQuestionario != null) {
  60 + gerarRelatorio(Integer.parseInt(idQuestionario));
  61 + } else if (valorHash != null) {
  62 + Validacao validacao = new Validacao();
  63 + mensagemValidacaoCampos = new ArrayList<Validacao>();
  64 + mensagemValidacaoCampos = validacao.validarHashEmitirRelatorio(path, valorHash);
  65 +
  66 + if (mensagemValidacaoCampos.size() > 0) {
  67 + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  68 + this.validator.add(new ValidationMessage("", ""));
  69 + this.validator.onErrorUsePageOf(relatorioController.class).relatorio();
51 70 }
52   - else if (valorHash != null)
53   - {
54   - Validacao validacao = new Validacao();
55   - mensagemValidacaoCampos = new ArrayList<Validacao>();
56   - mensagemValidacaoCampos = validacao.validarHashEmitirRelatorio(path, valorHash);
57   -
58   - if (mensagemValidacaoCampos.size() > 0) {
59   - result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
60   - this.validator.add(new ValidationMessage("", ""));
61   - this.validator.onErrorUsePageOf(relatorioController.class).relatorio();
62   - }
63 71  
64   - HashDao hashDao = new HashDao();
65   - questionario = new Questionario();
66   - questionario = hashDao.verificarHash(path, valorHash);
67   -
68   - if (questionario.getDtInicioQuestionario() != null && questionario.isQuestionario_respondido()) {
69   - gerarRelatorio(questionario.getIdQuestionario());
70   - }
71   -
  72 + HashDao hashDao = new HashDao();
  73 + questionario = new Questionario();
  74 + questionario = hashDao.verificarHash(path, valorHash);
  75 +
  76 + if (questionario.getDtInicioQuestionario() != null
  77 + && questionario.isQuestionario_respondido()) {
  78 + gerarRelatorio(questionario.getIdQuestionario());
72 79 }
  80 +
73 81 }
  82 + }
  83 +
  84 + @Path("/enviar-email-mpf")
  85 + public void enviarEmailMPF() {
  86 + Questionario questionario = new Questionario();
  87 + QuestionarioDao questionarioDao;
74 88  
75   - private void gerarRelatorio(int idQuestionario)
76   - {
77   - Questionario questionario = new Questionario(path, idQuestionario);
78   - RespostaQuestionarioDao respostaQuestionarioDao = new RespostaQuestionarioDao();
79   -
80   - List<RespostaQuestionario> lsRespostaQuestionario = new ArrayList<RespostaQuestionario>();
81   - List<AmostragemSiteQuestionario> lsAmostragemSiteQuestionario =
82   - new ArrayList<AmostragemSiteQuestionario>();
83   -
84   - lsRespostaQuestionario =
85   - respostaQuestionarioDao.retornarRespostaQuestionarioPorQuestionario(path, questionario
86   - .getIdQuestionario());
87   -
88   - List<String> curso = new ArrayList<String>();
89   - List<String> simValidacao = new ArrayList<String>();
90   - List<String> assistiva = new ArrayList<String>();
91   - List<String> deficiencias = new ArrayList<String>();
92   - List<String> ferramentaValidacao = new ArrayList<String>();
93   -
94   - for (RespostaQuestionario respostaQuestionario : lsRespostaQuestionario) {
95   -
96   - switch (respostaQuestionario.getPergunta().getIdPergunta()) {
97   - case 1:
98   - result.include("nomeOrgao", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
99   - break;
100   - case 2:
101   - result.include("nomePessoa", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
102   - break;
103   - case 3:
104   - result.include("cargo", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
105   - break;
106   - case 4:
107   - result.include("telefone", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
108   - break;
109   - case 5:
110   - result.include("email", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
111   - break;
112   - case 7:
113   - result.include("perguntaAcessibilidade", respostaQuestionario.getOpcaoResposta()
114   - .getDescOpcaoResposta());
115   - break;
116   - case 8:
117   - result.include("reclamacao", respostaQuestionario.getOpcaoResposta()
118   - .getDescOpcaoResposta());
119   - break;
120   - case 9:
121   - result.include("espacoReclamacao", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
122   - break;
123   - case 10:
124   - result.include("perguntaEstimulo", respostaQuestionario.getOpcaoResposta()
125   - .getDescOpcaoResposta());
126   - break;
127   - case 11:
128   - curso.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
129   - break;
130   - case 12:
131   - result.include("requisito", respostaQuestionario.getOpcaoResposta()
132   - .getDescOpcaoResposta());
133   - break;
134   - case 13:
135   - result.include("justificativaRequisito", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
136   - break;
137   - case 14:
138   - result.include("opcaoContrat", respostaQuestionario.getOpcaoResposta()
139   - .getDescOpcaoResposta());
140   - break;
141   - case 15:
142   - result.include("perguntaValidacao", respostaQuestionario.getOpcaoResposta()
143   - .getDescOpcaoResposta());
144   - break;
145   - case 16:
146   - simValidacao.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
147   - break;
148   - case 17:
149   - ferramentaValidacao.add(respostaQuestionario.getOpcaoResposta()
150   - .getDescOpcaoResposta());
151   - break;
152   - case 18:
153   - result.include("outroAvaliador", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
154   - break;
155   - case 19:
156   -
157   - lsAmostragemSiteQuestionario.add(respostaQuestionario.getAmostragemSiteQuestionario());
158   - break;
159   - /* case 20:
160   - result.include("nivelWcag", respostaQuestionario.getOpcaoResposta()
161   - .getDescOpcaoResposta());
162   - break;*/
163   - case 21:
164   - result.include("checklistQtnList", respostaQuestionario.getOpcaoResposta()
165   - .getDescOpcaoResposta());
166   - break;
167   - case 22:
168   - deficiencias.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
169   - break;
170   - case 23:
171   - result.include("funcionalidade", respostaQuestionario.getOpcaoResposta()
172   - .getDescOpcaoResposta());
173   - break;
174   - case 24:
175   - assistiva.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
176   - break;
177   - case 25:
178   - result.include("justificativaAssistiva", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
179   - break;
180   - case 26:
181   - result.include("dificuldadePrazo", respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ?respostaQuestionario.getTextoResposta().replace("null", "Não Respondido"):respostaQuestionario.getTextoResposta());
182   - break;
183   - default:
184   - break;
  89 + UploadedFile fileRelatorio;
  90 +
  91 + String mensagemMPF = "";
  92 + String mensagemOrgao = "";
  93 + String assuntoMPF = "";
  94 + String assuntoOrgao = "";
  95 +
  96 + questionario =
  97 + (Questionario) VRaptorRequestHolder.currentRequest().getServletContext()
  98 + .getAttribute("questionario");
  99 +
  100 + fileRelatorio =
  101 + (UploadedFile) VRaptorRequestHolder.currentRequest().getServletContext()
  102 + .getAttribute("fileRelatorio");
  103 +
  104 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  105 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  106 +
  107 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
  108 +
  109 + DataHandler dataHandlerRelatorio;
  110 + DataHandler dataHandlerPlano;
  111 +
  112 + dataHandlerRelatorio =
  113 + new DataHandler(planoTrabalho.getArquivoRelatorioAss(), fileRelatorio.getContentType());
  114 + dataHandlerPlano =
  115 + new DataHandler(planoTrabalho.getArquivoPlanoTrabalho(), fileRelatorio.getContentType());
  116 +
  117 + Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties");
  118 +
  119 + EnvioEmailSemAutenticacao envioEmailSemAutenticacao =
  120 + new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort()));
  121 +
  122 +
  123 + String mensagemRetornoMPF =
  124 + envioEmailSemAutenticacao.sendMailComAnexo(questionario.getEmailDestinoOrgao(),
  125 + email.getAnexosTo(), assuntoMPF, mensagemMPF, email.getAuth(), email.getAuthUser(),
  126 + email.getAuthPass(), dataHandlerRelatorio, planoTrabalho.getNomeExtensaoRelatorioAss(),
  127 + dataHandlerPlano, planoTrabalho.getNomeExtensaoPlanoTrabalho());
  128 +
  129 + if (mensagemRetornoMPF.equalsIgnoreCase("")) {
  130 + String mensagemRetornoOrgao =
  131 + envioEmailSemAutenticacao.sendMailComAnexo(email.getFrom(),
  132 + questionario.getEmailDestinoOrgao(), assuntoOrgao, mensagemOrgao, email.getAuth(),
  133 + email.getAuthUser(), email.getAuthPass(), dataHandlerRelatorio,
  134 + planoTrabalho.getNomeExtensaoRelatorioAss(), dataHandlerPlano,
  135 + planoTrabalho.getNomeExtensaoPlanoTrabalho());
  136 +
  137 +
  138 + if (mensagemRetornoOrgao.equalsIgnoreCase("")) {
  139 +
  140 + questionarioDao = new QuestionarioDao();
  141 +
  142 + if(questionarioDao.atualizarFlagEnviado(path, questionario.getIdQuestionario()))
  143 + {
  144 + result.include("mensagemEnvio", "Mensagem enviada com Sucesso, você recebeu um email com os anexos!");
  145 + result.include("statusEnvio", true);
185 146 }
  147 + }
  148 + }
  149 + else
  150 + {
  151 + result.include("mensagemEnvio", "Não foi possível enviar o email com os anexos!");
  152 + result.include("statusEnvio", false);
  153 + }
  154 +
  155 + this.validator.add(new ValidationMessage("", ""));
  156 + this.validator.onErrorUsePageOf(relatorioController.class).confirmacaoEnvioEmailMPF();
  157 + }
186 158  
  159 + public void confirmacaoEnvioEmailMPF()
  160 + {
  161 +
  162 + }
187 163  
  164 +
  165 + @Get("/relatorio-imprimir/{id}")
  166 + public void relatorioImprimir(String id) {
  167 + if (id != null) {
  168 + gerarRelatorio(Integer.parseInt(id));
  169 + }
  170 + }
  171 +
  172 + private void gerarRelatorio(int idQuestionario) {
  173 + Questionario questionario = new Questionario(path, idQuestionario);
  174 + RespostaQuestionarioDao respostaQuestionarioDao = new RespostaQuestionarioDao();
  175 +
  176 + List<RespostaQuestionario> lsRespostaQuestionario = new ArrayList<RespostaQuestionario>();
  177 + List<AmostragemSiteQuestionario> lsAmostragemSiteQuestionario =
  178 + new ArrayList<AmostragemSiteQuestionario>();
  179 +
  180 + lsRespostaQuestionario =
  181 + respostaQuestionarioDao.retornarRespostaQuestionarioPorQuestionario(path,
  182 + questionario.getIdQuestionario());
  183 +
  184 + List<String> curso = new ArrayList<String>();
  185 + List<String> simValidacao = new ArrayList<String>();
  186 + List<String> assistiva = new ArrayList<String>();
  187 + List<String> deficiencias = new ArrayList<String>();
  188 + List<String> ferramentaValidacao = new ArrayList<String>();
  189 +
  190 + for (RespostaQuestionario respostaQuestionario : lsRespostaQuestionario) {
  191 +
  192 + switch (respostaQuestionario.getPergunta().getIdPergunta()) {
  193 + case 1:
  194 + result
  195 + .include(
  196 + "nomeOrgao",
  197 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  198 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  199 + .getTextoResposta());
  200 + break;
  201 + case 2:
  202 + result
  203 + .include(
  204 + "nomePessoa",
  205 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  206 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  207 + .getTextoResposta());
  208 + break;
  209 + case 3:
  210 + result
  211 + .include(
  212 + "cargo",
  213 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  214 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  215 + .getTextoResposta());
  216 + break;
  217 + case 4:
  218 + result
  219 + .include(
  220 + "telefone",
  221 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  222 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  223 + .getTextoResposta());
  224 + break;
  225 + case 5:
  226 + result
  227 + .include(
  228 + "email",
  229 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  230 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  231 + .getTextoResposta());
  232 + break;
  233 + case 7:
  234 + result.include("perguntaAcessibilidade", respostaQuestionario.getOpcaoResposta()
  235 + .getDescOpcaoResposta());
  236 + break;
  237 + case 8:
  238 + result.include("reclamacao", respostaQuestionario.getOpcaoResposta()
  239 + .getDescOpcaoResposta());
  240 + break;
  241 + case 9:
  242 + result
  243 + .include(
  244 + "espacoReclamacao",
  245 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  246 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  247 + .getTextoResposta());
  248 + break;
  249 + case 10:
  250 + result.include("perguntaEstimulo", respostaQuestionario.getOpcaoResposta()
  251 + .getDescOpcaoResposta());
  252 + break;
  253 + case 11:
  254 + curso.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
  255 + break;
  256 + case 12:
  257 + result.include("requisito", respostaQuestionario.getOpcaoResposta()
  258 + .getDescOpcaoResposta());
  259 + break;
  260 + case 13:
  261 + result
  262 + .include(
  263 + "justificativaRequisito",
  264 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  265 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  266 + .getTextoResposta());
  267 + break;
  268 + case 14:
  269 + result.include("opcaoContrat", respostaQuestionario.getOpcaoResposta()
  270 + .getDescOpcaoResposta());
  271 + break;
  272 + case 15:
  273 + result.include("perguntaValidacao", respostaQuestionario.getOpcaoResposta()
  274 + .getDescOpcaoResposta());
  275 + break;
  276 + case 16:
  277 + simValidacao.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
  278 + break;
  279 + case 17:
  280 + ferramentaValidacao.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
  281 + break;
  282 + case 18:
  283 + result
  284 + .include(
  285 + "outroAvaliador",
  286 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  287 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  288 + .getTextoResposta());
  289 + break;
  290 + case 19:
  291 +
  292 + lsAmostragemSiteQuestionario.add(respostaQuestionario.getAmostragemSiteQuestionario());
  293 + break;
  294 + /*
  295 + * case 20: result.include("nivelWcag", respostaQuestionario.getOpcaoResposta()
  296 + * .getDescOpcaoResposta()); break;
  297 + */
  298 + case 21:
  299 + result.include("checklistQtnList", respostaQuestionario.getOpcaoResposta()
  300 + .getDescOpcaoResposta());
  301 + break;
  302 + case 22:
  303 + deficiencias.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
  304 + break;
  305 + case 23:
  306 + result.include("funcionalidade", respostaQuestionario.getOpcaoResposta()
  307 + .getDescOpcaoResposta());
  308 + break;
  309 + case 24:
  310 + assistiva.add(respostaQuestionario.getOpcaoResposta().getDescOpcaoResposta());
  311 + break;
  312 + case 25:
  313 + result
  314 + .include(
  315 + "justificativaAssistiva",
  316 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  317 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  318 + .getTextoResposta());
  319 + break;
  320 + case 26:
  321 + result
  322 + .include(
  323 + "dificuldadePrazo",
  324 + respostaQuestionario.getTextoResposta().equalsIgnoreCase("null") ? respostaQuestionario
  325 + .getTextoResposta().replace("null", "Não Respondido") : respostaQuestionario
  326 + .getTextoResposta());
  327 + break;
  328 + default:
  329 + break;
188 330 }
189   - result.include("dataRespostaQuestionario", respostaQuestionarioDao.retornarDataRespostaQuestionarioPorQuestionario(path, idQuestionario));
190   -
191   - if(curso.size() == 0)
192   - {
193   - curso.add("Não Respondido");
194   - }
195   -
196   - if(simValidacao.size() == 0)
197   - {
198   - simValidacao.add("Não Respondido");
199   - }
200   -
201   - if(deficiencias.size() == 0)
202   - {
203   - deficiencias.add("Não Respondido");
204   - }
205   -
206   - result.include("curso", curso);
207   - result.include("simValidacao", simValidacao);
208   - result.include("assistiva", assistiva);
209   - result.include("deficiencias", deficiencias);
210   - result.include("ferramentaValidacao", ferramentaValidacao);
211   - result.include("questionario", questionario);
212   - result.include("lsAmostragemSiteQuestionario", lsAmostragemSiteQuestionario);
  331 +
  332 +
213 333 }
  334 + result.include("dataRespostaQuestionario", respostaQuestionarioDao
  335 + .retornarDataRespostaQuestionarioPorQuestionario(path, idQuestionario));
  336 +
  337 + if (curso.size() == 0) {
  338 + curso.add("Não Respondido");
  339 + }
  340 +
  341 + if (simValidacao.size() == 0) {
  342 + simValidacao.add("Não Respondido");
  343 + }
  344 +
  345 + if (deficiencias.size() == 0) {
  346 + deficiencias.add("Não Respondido");
  347 + }
  348 +
  349 + result.include("curso", curso);
  350 + result.include("simValidacao", simValidacao);
  351 + result.include("assistiva", assistiva);
  352 + result.include("deficiencias", deficiencias);
  353 + result.include("ferramentaValidacao", ferramentaValidacao);
  354 + result.include("questionario", questionario);
  355 + result.include("lsAmostragemSiteQuestionario", lsAmostragemSiteQuestionario);
  356 + }
214 357 }
... ...
src/br/com/dao/HashDao.java
... ... @@ -29,7 +29,7 @@ public class HashDao {
29 29 sql.append(" SELECT id_questionario, dt_inicio_questionario, dt_fim_questionario, ");
30 30 sql.append(" no_orgao, hash_autenticacao, questionario_respondido, email_destino_orgao, ");
31 31 sql.append(" responsavel, cargo_responsavel, telefone, data_recebimento_email, ");
32   - sql.append(" idautorizacao, data_resposta_email ");
  32 + sql.append(" idautorizacao, data_resposta_email, flag_enviado ");
33 33 sql.append(" FROM questionario where hash_autenticacao = '" + valorHash + "'");
34 34 sql.append(" and (dt_inicio_questionario <= '" + DateUtil.dataHoraAtual() + "')");
35 35 sql.append(" and (dt_fim_questionario >= '" + DateUtil.dataHoraAtual() + "');");
... ... @@ -48,6 +48,7 @@ public class HashDao {
48 48 questionario.setResponsavel(rset.getString("responsavel"));
49 49 questionario.setCargoResponsavel(rset.getString("cargo_responsavel"));
50 50 questionario.setTelefone(rset.getString("telefone"));
  51 + questionario.setFlagEnviado(rset.getBoolean("flag_enviado"));
51 52 questionario.setEmailDestinoOrgao(rset.getString("email_destino_orgao"));
52 53 }
53 54  
... ...
src/br/com/dao/PlanoTrabalhoDao.java
1 1 package br.com.dao;
2 2  
3   -import java.io.FileNotFoundException;
4   -import java.io.FileOutputStream;
5   -import java.io.IOException;
6 3 import java.io.InputStream;
7   -import java.io.PrintStream;
8 4 import java.sql.Connection;
9 5 import java.sql.PreparedStatement;
10 6 import java.sql.ResultSet;
11 7 import java.sql.SQLException;
12 8 import java.sql.Statement;
13   -import java.util.Properties;
14 9  
15 10 import br.com.model.entity.PlanoTrabalho;
16 11 import br.com.model.entity.Questionario;
17   -import br.com.model.utilities.ManagerProperties;
18 12  
19 13 public class PlanoTrabalhoDao {
20 14  
... ... @@ -27,7 +21,7 @@ public class PlanoTrabalhoDao {
27 21 Connection con = Conexao.conecta(path);
28 22 Statement estado;
29 23 ResultSet rset = null;
30   - boolean existePlanoTrabalho = false;
  24 + //boolean existePlanoTrabalho = false;
31 25 int idPlanoTrabalho = -1;
32 26  
33 27 try {
... ... @@ -72,7 +66,44 @@ public class PlanoTrabalhoDao {
72 66 try {
73 67  
74 68 sql = new StringBuffer();
75   - sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, nome_extensao) VALUES (?, ?, ?); ");
  69 + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, extensao_plano_trabalho) VALUES (?, ?, ?); ");
  70 +
  71 + estado = con.prepareStatement(sql.toString());
  72 +
  73 + estado.setInt(1, questionario.getIdQuestionario());
  74 + estado.setBinaryStream(2, file);
  75 + estado.setString(3, nomeExtensao);
  76 +
  77 + resultado = estado.executeUpdate();
  78 +
  79 + if (resultado == 0) {
  80 + salvoComSucesso = false;
  81 + } else {
  82 +
  83 + salvoComSucesso = true;
  84 + }
  85 +
  86 + } catch (SQLException e) {
  87 +
  88 + e.printStackTrace();
  89 + }
  90 +
  91 + return salvoComSucesso;
  92 + }
  93 +
  94 + public boolean salvarRelatorioAss(String path, InputStream file, Questionario questionario, String nomeExtensao)
  95 + {
  96 +
  97 + StringBuffer sql = new StringBuffer();
  98 + Connection con = Conexao.conecta(path);
  99 + PreparedStatement estado;
  100 + int resultado = 0;
  101 + boolean salvoComSucesso = false;
  102 +
  103 + try {
  104 +
  105 + sql = new StringBuffer();
  106 + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_relatorio_ass, extensao_relatorio_ass) VALUES (?, ?, ?); ");
76 107  
77 108 estado = con.prepareStatement(sql.toString());
78 109  
... ... @@ -112,7 +143,7 @@ public class PlanoTrabalhoDao {
112 143 //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); ");
113 144 sql.append(" UPDATE public.plano_trabalho");
114 145 sql.append(" SET arquivo_plano_trabalho=?,");
115   - sql.append( " nome_extensao =? ");
  146 + sql.append( " extensao_plano_trabalho =? ");
116 147 sql.append(" WHERE id_plano_trabalho=?;");
117 148  
118 149 estado = con.prepareStatement(sql.toString());
... ... @@ -139,6 +170,49 @@ public class PlanoTrabalhoDao {
139 170 return salvoComSucesso;
140 171 }
141 172  
  173 + public boolean atualizarRelatorioAss(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeExtensao)
  174 + {
  175 +
  176 + StringBuffer sql = new StringBuffer();
  177 + Connection con = Conexao.conecta(path);
  178 + PreparedStatement estado;
  179 + int resultado = 0;
  180 + boolean salvoComSucesso = false;
  181 +
  182 + try {
  183 +
  184 + sql = new StringBuffer();
  185 + //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); ");
  186 + sql.append(" UPDATE public.plano_trabalho");
  187 + sql.append(" SET arquivo_relatorio_ass=?,");
  188 + sql.append( " extensao_relatorio_ass =? ");
  189 + sql.append(" WHERE id_plano_trabalho=?;");
  190 +
  191 + estado = con.prepareStatement(sql.toString());
  192 +
  193 + //estado.setInt(1, questionario.getIdQuestionario());
  194 + estado.setBinaryStream(1, file);
  195 + estado.setString(2, nomeExtensao);
  196 + estado.setInt(3, idPlanoTrabalho);
  197 +
  198 + resultado = estado.executeUpdate();
  199 +
  200 + if (resultado == 0) {
  201 + salvoComSucesso = false;
  202 + } else {
  203 +
  204 + salvoComSucesso = true;
  205 + }
  206 +
  207 + } catch (SQLException e) {
  208 +
  209 + e.printStackTrace();
  210 + }
  211 +
  212 + return salvoComSucesso;
  213 + }
  214 +
  215 +
142 216 public PlanoTrabalho recuperarPlanoTrabalho(String path, Questionario questionario)
143 217 {
144 218  
... ... @@ -147,8 +221,8 @@ public class PlanoTrabalhoDao {
147 221 Connection con = Conexao.conecta(path);
148 222 Statement estado;
149 223 ResultSet rset = null;
150   - byte[] imgBytes = null;
151   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  224 + //byte[] imgBytes = null;
  225 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
152 226  
153 227  
154 228 try {
... ... @@ -162,9 +236,11 @@ public class PlanoTrabalhoDao {
162 236 rset = estado.executeQuery(sql);
163 237  
164 238 while (rset.next()) {
165   - planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho"));
166 239 planoTrabalho.setIdPlanoTrabalho(rset.getInt("id_plano_trabalho"));
167   - planoTrabalho.setNomeExtensao(rset.getString("nome_extensao"));
  240 + planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho"));
  241 + planoTrabalho.setNomeExtensaoPlanoTrabalho(rset.getString("extensao_plano_trabalho"));
  242 + planoTrabalho.setArquivoRelatorioAss(rset.getBytes("arquivo_relatorio_ass"));
  243 + planoTrabalho.setNomeExtensaoRelatorioAss(rset.getString("extensao_relatorio_ass"));
168 244 planoTrabalho.setQuestionario(questionario);
169 245 }
170 246  
... ...
src/br/com/dao/QuestionarioDao.java
... ... @@ -54,8 +54,9 @@ public class QuestionarioDao {
54 54 questionario.setTelefone(rset.getString("telefone"));
55 55 questionario.setIdAutorizacaoGeracaoHash(rset.getInt("idAutorizacao"));
56 56 questionario.setDtRecebimentoEmail(DateUtil.dataHoraFormatadaDiaMesAno(rset.getString("data_recebimento_email")));
57   -
  57 + questionario.setFlagEnviado(rset.getBoolean("flag_enviado"));
58 58 dataRespostaQuestionario = rset.getString("data_resposta_email");
  59 +
59 60 if(dataRespostaQuestionario != null)
60 61 {
61 62 questionario.setDtRespostaEmail(DateUtil.dataHoraFormatadaDiaMesAnoComParametro(dataRespostaQuestionario));
... ... @@ -110,6 +111,7 @@ public class QuestionarioDao {
110 111 questionario.setTelefone(rset.getString("telefone"));
111 112 questionario.setIdAutorizacaoGeracaoHash(rset.getInt("idAutorizacao"));
112 113 questionario.setDtRecebimentoEmail(DateUtil.dataHoraFormatadaDiaMesAno(rset.getString("data_recebimento_email")));
  114 + questionario.setFlagEnviado(rset.getBoolean("flag_enviado"));
113 115  
114 116 dataRespostaQuestionario = rset.getString("data_resposta_email");
115 117 if(dataRespostaQuestionario != null)
... ... @@ -277,6 +279,42 @@ public class QuestionarioDao {
277 279 return salvoComSucesso;
278 280 }
279 281  
  282 + public boolean atualizarFlagEnviado(String path, int idQuestionario)
  283 + {
  284 +
  285 + StringBuffer sql = new StringBuffer();
  286 + Connection con = Conexao.conecta(path);
  287 + PreparedStatement estado;
  288 + int resultado = 0;
  289 + boolean salvoComSucesso = false;
  290 +
  291 +
  292 +
  293 + try {
  294 +
  295 + sql = new StringBuffer();
  296 + sql.append(" UPDATE public.questionario SET flag_enviado = true WHERE id_questionario = ?; ");
  297 +
  298 + estado = con.prepareStatement(sql.toString());
  299 +
  300 + estado.setInt(1, idQuestionario);
  301 +
  302 + resultado = estado.executeUpdate();
  303 +
  304 + if (resultado == 0) {
  305 + salvoComSucesso = false;
  306 + } else {
  307 +
  308 + salvoComSucesso = true;
  309 + }
  310 +
  311 + } catch (SQLException e) {
  312 +
  313 + e.printStackTrace();
  314 + }
  315 +
  316 + return salvoComSucesso;
  317 + }
280 318  
281 319 public ResultSet retornarQuestionarioPorId(String path, int idQuestionario) {
282 320  
... ... @@ -345,8 +383,8 @@ public class QuestionarioDao {
345 383 sql.append(" dt_inicio_questionario, dt_fim_questionario, ");
346 384 sql.append(" no_orgao, hash_autenticacao, questionario_respondido, email_destino_orgao, ");
347 385 sql.append(" responsavel, cargo_responsavel, telefone, idAutorizacao, ");
348   - sql.append(" data_recebimento_email) ");
349   - sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
  386 + sql.append(" data_recebimento_email,flag_enviado) ");
  387 + sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?);");
350 388  
351 389  
352 390 // cria statement para executar a query
... ... @@ -363,6 +401,7 @@ public class QuestionarioDao {
363 401 estado.setString(9, questionario.getTelefone());
364 402 estado.setInt(10, questionario.getIdAutorizacaoGeracaoHash());
365 403 estado.setDate(11, sqlDtRecebimentoEmail);
  404 + estado.setBoolean(12, false);
366 405 //estado.setDate(12, sqlDtRespostaEmail);
367 406  
368 407 //resultado = estado.executeUpdate();
... ...