Commit 4afe9aade2f3c7aa768ce876027bc361014cb3a9

Authored by gibransodre
1 parent 915e9079
Exists in master

Listar questionários com filtros e enviar relatório para o MPF.

WebContent/WEB-INF/jsp/planoTrabalho/enviarRelatorioPlanoTrabalho.jsp 0 → 100644
... ... @@ -0,0 +1,50 @@
  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 +
  10 + <div class="funcionalidades">
  11 + <ul class="breadcrumb">
  12 + <li>
  13 + <span>Você está em:</span>
  14 + </li>
  15 + <li>
  16 + <a href="${pageContext.request.contextPath}/" id="bcFormulario"> Página Inicial </a>
  17 + </li>
  18 + <li>| Envio de Email para MPF</li>
  19 + </ul>
  20 + </div>
  21 +
  22 + <div>
  23 + <c:if test="${not empty mensagemValidacaoCampos}">
  24 + <c:forEach items="${mensagemValidacaoCampos}" var="error">
  25 + <div class="alinName">
  26 + <a id="mensagemErroCampoVazio_${error.campo}"
  27 + href="#${error.campo}">${error.mensagem}</a>
  28 + </div>
  29 + <br />
  30 + </c:forEach>
  31 + </c:if>
  32 + </div>
  33 +
  34 +
  35 + <form
  36 + action="${pageContext.request.contextPath}/enviar-email-mpf-alternativo"
  37 + method="post" enctype="multipart/form-data">
  38 + <fieldset class="layoutCampos">
  39 + <legend>Envio de Relatório e Plano de trabalho para MPF</legend>
  40 + <label for="valorHash">Código de acesso: </label>
  41 + <input type="password" id="valorHash" name="valorHash" size="60"
  42 + maxlength="60" required><br><br>
  43 +
  44 + <input type="submit" class="button" value="Enviar Email">
  45 + </fieldset>
  46 +
  47 + </form>
  48 +
  49 + </jsp:body>
  50 +</t:baseLayout>
... ...
WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp
... ... @@ -14,12 +14,12 @@
14 14 </li>
15 15 <li>
16 16 <a href="${pageContext.request.contextPath}/" id="bcFormulario"> Página Inicial </a></li>
17   - <li>| Plano de Trabalho</li>
  17 + <li>| Anexo de Relatório e Plano de Trabalho</li>
18 18 </ul>
19 19 </div>
20 20  
21 21 <div>
22   - <h2 class="titulo">Plano de Trabalho</h2>
  22 + <h2 class="titulo">Anexo de Relatório e Plano de Trabalho</h2>
23 23 </div>
24 24  
25 25 <p>Conforme determina a portaria que regula este formulário circunstanciado em seu artigo 4º:</p>
... ... @@ -29,7 +29,7 @@
29 29  
30 30 <form action="${pageContext.request.contextPath}/salvar-plano-trabalho" method="post" enctype="multipart/form-data">
31 31 <fieldset class="layoutCampos">
32   - <legend>Plano de Trabalho</legend>
  32 + <legend>Anexo de Relatório e Plano de Trabalho</legend>
33 33 <label for="valorHash">Código de acesso: </label>
34 34 <input type="password" id="valorHash" name="valorHash" size="60" maxlength="60" required><br><br>
35 35  
... ... @@ -43,7 +43,7 @@ text/plain, application/pdf, image/*&quot;&gt;&lt;br&gt;&lt;br&gt;
43 43 <input type="file" id="filePlano" name="filePlano" accept=
44 44 "application/msword,application/zip,application/x-rar-compressed, application/octet-stream, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,
45 45 text/plain, application/pdf, image/*" ><br><br>
46   - <input type="submit" class="button" value="Enviar">
  46 + <input type="submit" class="button" id="botaoAnexar" value="Anexar">
47 47 </fieldset>
48 48  
49 49 </form>
... ...
WebContent/WEB-INF/jsp/questionario/listaQuestionario.jsp
... ... @@ -5,7 +5,8 @@
5 5 <t:baseLayout>
6 6 <jsp:body>
7 7  
8   - <form action="${pageContext.request.contextPath}/listar-questionario" method="post">
  8 + <form action="${pageContext.request.contextPath}/listar-questionario"
  9 + method="post">
9 10  
10 11 <fieldset>
11 12 <legend>Filtros</legend>
... ... @@ -21,14 +22,28 @@
21 22  
22 23 <label for="statusPlanoTrabalho">Plano de trabalho Anexado:</label>
23 24 <select id="statusPlanoTrabalho" name="statusPlanoTrabalho">
24   - <option value="todos" ${statusPlanoTrab == ''?'selected=\"selected\"':''}>Todos</option>
25   - <option value="sim" ${statusPlanoTrab == 'sim'?'selected=\"selected\"':''}>Sim</option>
26   - <option value="nao" ${statusPlanoTrab == 'nao'?'selected=\"selected\"':''}>Não</option>
  25 + <option value="todos"
  26 + ${statusPlanoTrab == ''?'selected=\"selected\"':''}>Todos</option>
  27 + <option value="sim"
  28 + ${statusPlanoTrab == 'sim'?'selected=\"selected\"':''}>Sim</option>
  29 + <option value="nao"
  30 + ${statusPlanoTrab == 'nao'?'selected=\"selected\"':''}>Não</option>
  31 + </select>
  32 + <br><br>
  33 + <label for="relatorioAnexado">Relatório Anexado:</label>
  34 + <select id="relatorioAnexado" name="relatorioAnexado">
  35 + <option value="todos"
  36 + ${relatorioAnex == ''?'selected=\"selected\"':''}>Todos</option>
  37 + <option value="sim"
  38 + ${relatorioAnex == 'sim'?'selected=\"selected\"':''}>Sim</option>
  39 + <option value="nao"
  40 + ${relatorioAnex == 'nao'?'selected=\"selected\"':''}>Não</option>
27 41 </select>
28 42 <br><br>
29 43  
30 44 <label for="nomeOrgao">Nome do Órgao que contenha:</label>
31   - <input type="text" id="nomeOrgao" name="nomeOrgao" size="70" value="${nomeOrgao }">
  45 + <input type="text" id="nomeOrgao" name="nomeOrgao" size="70"
  46 + value="${nomeOrgao }">
32 47 <br><br>
33 48  
34 49 <input type="submit" value="Listar">
... ... @@ -52,7 +67,9 @@
52 67 <th>Resposta Email</th>
53 68 <th>Data Relatório Respondido</th>
54 69 <th>Relatório Respondido</th>
55   - <th>Plano de Trabalho Enviado</th>
  70 + <th>Plano de Trabalho Anexado</th>
  71 + <th>Relatório Anexado</th>
  72 + <th>Relatório Enviado</th>
56 73 <th>download Plano de Trabalho</th>
57 74 <th>download Relatório Assinado</th>
58 75 <th>Visualizar Relatório</th>
... ... @@ -66,10 +83,12 @@
66 83 <c:if test="${contador.count mod 2 == 0}">
67 84 <tr bgcolor="#FFFFFF">
68 85  
  86 +
69 87 </c:if>
70 88 <c:if test="${contador.count mod 2 != 0}">
71 89 <tr bgcolor="#DAA520">
72 90  
  91 +
73 92 </c:if>
74 93 <td>${contador.count}</td>
75 94 <td>${questionario.noOrgao}</td>
... ... @@ -88,21 +107,36 @@
88 107 <c:if test="${empty questionario.dataRespostaQuestionario}">
89 108 <td><input type="checkbox" disabled="disabled"> </td>
90 109 </c:if>
91   -
92   -
93   - <c:if test="${questionario.planoTrabalhoEnviado == true}">
94   - <td><input type="checkbox" checked="checked"
  110 +
  111 + <td><input type="checkbox" ${questionario.planoTrabalhoAnexado == true ? 'checked=\"checked\"':''}
95 112 disabled="disabled"> </td>
96   - </c:if>
97   - <c:if test="${questionario.planoTrabalhoEnviado == false}">
98   - <td><input type="checkbox" disabled="disabled"> </td>
99   - </c:if>
  113 +
  114 + <td><input type="checkbox"
  115 + ${questionario.relatorioAnexado == true ? 'checked=\"checked\"':''}
  116 + disabled="disabled"> </td>
  117 + <td><input type="checkbox"
  118 + ${questionario.flagEnviado == true ? 'checked=\"checked\"':''}
  119 + disabled="disabled"></td>
  120 + <td>
  121 + <c:if test="${questionario.planoTrabalhoAnexado == true}">
  122 + <a href="${pageContext.request.contextPath}/recuperar-plano-trabalho/${questionario.idQuestionario}">Plano de Trabalho</a>
  123 + </c:if>
  124 +
  125 + <c:if test="${questionario.planoTrabalhoAnexado == false}">
  126 + Plano de Trabalho
  127 + </c:if>
  128 + </td>
  129 + <td>
  130 + <c:if test="${questionario.relatorioAnexado == true}">
  131 + <a href="${pageContext.request.contextPath}/recuperar-relatorio/${questionario.idQuestionario}">Relatório Assinado</a>
  132 + </c:if>
  133 + <c:if test="${questionario.relatorioAnexado == false}">
  134 + Relatório Assinado
  135 + </c:if>
  136 + </td>
100 137 <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>
  138 + <a href="${pageContext.request.contextPath}/relatorio-imprimir/${questionario.idQuestionario}">Visualizar Relatório</a>
  139 + </td>
106 140 </tr>
107 141  
108 142 </c:forEach>
... ...
WebContent/WEB-INF/jsp/questionario/questionario.jsp
... ... @@ -54,8 +54,12 @@ table, th, td {
54 54 </form>
55 55 <br>
56 56  
57   -<label>Total de solicitações: <span>${totalSolicitacoes}</span></label><br>
58   - <table id="questionarios">
  57 +<label>Total de solicitações: <span>${totalSolicitacoes}</span></label>
  58 +<label> | Total de Relatório Respondido: <span>${totalRelatorioRespondido}</span></label>
  59 +<label> | Total de Relatório Anexado: <span>${totalRelatorioAnexado}</span></label>
  60 +<label> | Total de Plano de Trabalho Anexado: <span>${totalPlanoTrabalhoAnexado}</span></label>
  61 +<label> | Total de Relatório Enviado: <span>${totalRelatorioEnviado}</span></label><br>
  62 +<table id="questionarios">
59 63 <tr>
60 64 <th>Nº Linha</th>
61 65 <th>Orgão</th>
... ... @@ -67,20 +71,29 @@ table, th, td {
67 71 <th>Resposta Email</th>
68 72 <th>Data Relatório Respondido</th>
69 73 <th>Relatório Respondido</th>
70   - <th>Plano de Trabalho Enviado</th>
  74 + <th>Plano de Trabalho Anexado</th>
  75 + <th>Relatório Anexado</th>
  76 + <th>Relatório Enviado</th>
71 77 <th>download Plano de Trabalho</th>
  78 + <th>download Relatório Assinado</th>
  79 + <th>Visualizar Relatório</th>
72 80  
73 81 </tr>
74 82  
75 83 <c:if test="${not empty lsquestionario}">
76 84  
77   - <c:forEach items="${lsquestionario}" var="questionario" varStatus="contador">
  85 + <c:forEach items="${lsquestionario}" var="questionario"
  86 + varStatus="contador">
78 87 <c:if test="${contador.count mod 2 == 0}">
79 88 <tr bgcolor="#FFFFFF">
80   - </c:if>
  89 +
  90 +
  91 + </c:if>
81 92 <c:if test="${contador.count mod 2 != 0}">
82 93 <tr bgcolor="#DAA520">
83   - </c:if>
  94 +
  95 +
  96 + </c:if>
84 97 <td>${contador.count}</td>
85 98 <td>${questionario.noOrgao}</td>
86 99 <td>${questionario.responsavel}</td>
... ... @@ -92,20 +105,42 @@ table, th, td {
92 105 <td>${questionario.dataRespostaQuestionario}</td>
93 106  
94 107 <c:if test="${not empty questionario.dataRespostaQuestionario}">
95   - <td><input type="checkbox" checked="checked" disabled="disabled"> </td>
  108 + <td><input type="checkbox" checked="checked"
  109 + disabled="disabled"> </td>
96 110 </c:if>
97 111 <c:if test="${empty questionario.dataRespostaQuestionario}">
98 112 <td><input type="checkbox" disabled="disabled"> </td>
99 113 </c:if>
  114 +
  115 + <td><input type="checkbox" ${questionario.planoTrabalhoAnexado == true ? 'checked=\"checked\"':''}
  116 + disabled="disabled"> </td>
100 117  
101   -
102   - <c:if test="${questionario.planoTrabalhoEnviado == true}">
103   - <td><input type="checkbox" checked="checked" disabled="disabled"> </td>
104   - </c:if>
105   - <c:if test="${questionario.planoTrabalhoEnviado == false}">
106   - <td><input type="checkbox" disabled="disabled"> </td>
107   - </c:if>
108   - <td><a href="${pageContext.request.contextPath}/recuperar-plano-trabalho/${questionario.idQuestionario}">Recuperar</a></td>
  118 + <td><input type="checkbox"
  119 + ${questionario.relatorioAnexado == true ? 'checked=\"checked\"':''}
  120 + disabled="disabled"> </td>
  121 + <td><input type="checkbox"
  122 + ${questionario.flagEnviado == true ? 'checked=\"checked\"':''}
  123 + disabled="disabled"></td>
  124 + <td>
  125 + <c:if test="${questionario.planoTrabalhoAnexado == true}">
  126 + <a href="${pageContext.request.contextPath}/recuperar-plano-trabalho/${questionario.idQuestionario}">Plano de Trabalho</a>
  127 + </c:if>
  128 +
  129 + <c:if test="${questionario.planoTrabalhoAnexado == false}">
  130 + Plano de Trabalho
  131 + </c:if>
  132 + </td>
  133 + <td>
  134 + <c:if test="${questionario.relatorioAnexado == true}">
  135 + <a href="${pageContext.request.contextPath}/recuperar-relatorio/${questionario.idQuestionario}">Relatório Assinado</a>
  136 + </c:if>
  137 + <c:if test="${questionario.relatorioAnexado == false}">
  138 + Relatório Assinado
  139 + </c:if>
  140 + </td>
  141 + <td>
  142 + <a href="${pageContext.request.contextPath}/relatorio-imprimir/${questionario.idQuestionario}">Visualizar Relatório</a>
  143 + </td>
109 144 </tr>
110 145  
111 146 </c:forEach>
... ...
WebContent/WEB-INF/mail.properties
... ... @@ -8,4 +8,4 @@ prop.email.auth = false
8 8 prop.email.to = govbr@planejamento.gov.br
9 9 prop.email.from = govbr@planejamento.gov.br
10 10 prop.email.copiaEmailTo = fabricio.souza@planejamento.gov.br
11   -prop.email.anexosTo = gibran.sodre@planejamento.gov.br
12 11 \ No newline at end of file
  12 +prop.email.anexosTo = gibransodre@hotmail.com
13 13 \ No newline at end of file
... ...
WebContent/css/default.css
... ... @@ -32,6 +32,10 @@ strong p
32 32 {
33 33 font-size: 14px !important;
34 34 }
  35 +#botaoAnexar
  36 +{
  37 + margin-left: 35%;
  38 +}
35 39 #botaoVoltar {
36 40 width: 10%;
37 41 float: left;
... ...
src/br/com/controller/PlanoTrabalhoController.java
... ... @@ -4,6 +4,7 @@ import java.io.IOException;
4 4 import java.util.ArrayList;
5 5 import java.util.List;
6 6  
  7 +import javax.activation.DataHandler;
7 8 import javax.servlet.ServletContext;
8 9 import javax.servlet.ServletOutputStream;
9 10 import javax.servlet.http.HttpServletResponse;
... ... @@ -19,13 +20,19 @@ import br.com.caelum.vraptor.ioc.spring.VRaptorRequestHolder;
19 20 import br.com.caelum.vraptor.validator.ValidationMessage;
20 21 import br.com.dao.HashDao;
21 22 import br.com.dao.PlanoTrabalhoDao;
  23 +import br.com.dao.QuestionarioDao;
  24 +import br.com.model.entity.EnvioEmailSemAutenticacao;
22 25 import br.com.model.entity.PlanoTrabalho;
23 26 import br.com.model.entity.Questionario;
  27 +import br.com.model.utilities.Email;
  28 +import br.com.util.DateUtil;
  29 +import br.com.util.Validacao;
24 30  
25 31  
26 32 @Resource
27 33 public class PlanoTrabalhoController extends DefaultMultipartConfig {
28 34  
  35 + private List<Validacao> mensagemValidacaoCampos = new ArrayList<Validacao>();
29 36 private Validator validator;
30 37 private Result result;
31 38 private ServletContext application;
... ... @@ -89,7 +96,7 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
89 96 HashDao hashDao = new HashDao();
90 97 questionario = new Questionario();
91 98 questionario = hashDao.verificarHash(path, valorHash);
92   - String nomeExtensaoPlanoTrabalho = filePlano.getFileName();
  99 + String nomeExtensaoPlanoTrabalho = filePlano.getContentType();
93 100  
94 101 if (questionario != null && questionario.getDtInicioQuestionario() != null) {
95 102 PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
... ... @@ -97,9 +104,9 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
97 104 planoTrabalho =
98 105 planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
99 106  
100   - if (planoTrabalho.getArquivoPlanoTrabalho() == null) {
  107 + if (planoTrabalho.getIdPlanoTrabalho() == 0) {
101 108 if (planoTrabalhoDao.salvarPlanoTrabalho(path, filePlano.getFile(), questionario,
102   - nomeExtensaoPlanoTrabalho)) {
  109 + filePlano.getFileName(), nomeExtensaoPlanoTrabalho)) {
103 110 mensagemPlano = "Plano de trabalho anexado com sucesso!";
104 111 statusPlano = true;
105 112 } else {
... ... @@ -107,7 +114,7 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
107 114 }
108 115 } else {
109 116 if (planoTrabalhoDao.atualizarPlanoTrabalho(path, filePlano.getFile(), questionario,
110   - planoTrabalho.getIdPlanoTrabalho(), nomeExtensaoPlanoTrabalho)) {
  117 + planoTrabalho.getIdPlanoTrabalho(), filePlano.getFileName(),nomeExtensaoPlanoTrabalho)) {
111 118 mensagemPlano = "Plano de trabalho anexado com sucesso!";
112 119 statusPlano = true;
113 120 } else {
... ... @@ -156,7 +163,7 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
156 163 HashDao hashDao = new HashDao();
157 164 questionario = new Questionario();
158 165 questionario = hashDao.verificarHash(path, valorHash);
159   - String nomeExtensaoRelatorio = fileRelatorio.getFileName();
  166 + String nomeExtensaoRelatorio = fileRelatorio.getContentType();
160 167  
161 168 if (questionario != null && questionario.getDtInicioQuestionario() != null) {
162 169 PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
... ... @@ -164,9 +171,9 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
164 171  
165 172 planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
166 173  
167   - if (planoTrabalho.getArquivoRelatorioAss() == null) {
  174 + if (planoTrabalho.getIdPlanoTrabalho() == 0) {
168 175 if (planoTrabalhoDao.salvarRelatorioAss(path, fileRelatorio.getFile(), questionario,
169   - nomeExtensaoRelatorio)) {
  176 + fileRelatorio.getFileName(), nomeExtensaoRelatorio)) {
170 177 mensagemRelatorio = "Relatório anexado com sucesso!";
171 178 statusRelatorio = true;
172 179 } else {
... ... @@ -174,7 +181,7 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
174 181 }
175 182 } else {
176 183 if (planoTrabalhoDao.atualizarRelatorioAss(path, fileRelatorio.getFile(), questionario,
177   - planoTrabalho.getIdPlanoTrabalho(), nomeExtensaoRelatorio)) {
  184 + planoTrabalho.getIdPlanoTrabalho(), fileRelatorio.getFileName(), nomeExtensaoRelatorio)) {
178 185 mensagemRelatorio = "Relatório anexado com sucesso!";
179 186 statusRelatorio = true;
180 187 } else {
... ... @@ -222,9 +229,9 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
222 229 if (questionario != null && questionario.getIdQuestionario() > 0) {
223 230 planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
224 231  
225   - if (planoTrabalho != null) {
  232 + if (planoTrabalho != null && planoTrabalho.getArquivoPlanoTrabalho() != null) {
226 233 try {
227   - String nome = planoTrabalho.getNomeExtensaoPlanoTrabalho();
  234 + String nome = planoTrabalho.getNomePlanoTrabalho();
228 235 dados = planoTrabalho.getArquivoPlanoTrabalho();
229 236 response.setContentType("inline/download");
230 237 String arq = "attachment;filename=" + nome;
... ... @@ -237,6 +244,16 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
237 244  
238 245 }
239 246 }
  247 + else
  248 + {
  249 + this.validator.add(new ValidationMessage("", ""));
  250 + this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
  251 + }
  252 + }
  253 + else
  254 + {
  255 + this.validator.add(new ValidationMessage("", ""));
  256 + this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
240 257 }
241 258 }
242 259  
... ... @@ -253,9 +270,9 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
253 270 if (questionario != null && questionario.getIdQuestionario() > 0) {
254 271 planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
255 272  
256   - if (planoTrabalho != null) {
  273 + if (planoTrabalho != null && planoTrabalho.getArquivoRelatorioAss() != null) {
257 274 try {
258   - String nome = planoTrabalho.getNomeExtensaoRelatorioAss();
  275 + String nome = planoTrabalho.getNomeRelatorioAss();
259 276 dados = planoTrabalho.getArquivoRelatorioAss();
260 277 response.setContentType("inline/download");
261 278 String arq = "attachment;filename=" + nome;
... ... @@ -268,6 +285,179 @@ public class PlanoTrabalhoController extends DefaultMultipartConfig {
268 285  
269 286 }
270 287 }
  288 + else
  289 + {
  290 + this.validator.add(new ValidationMessage("", ""));
  291 + this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
  292 + }
  293 + }
  294 + else
  295 + {
  296 + this.validator.add(new ValidationMessage("", ""));
  297 + this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
271 298 }
272 299 }
  300 +
  301 + @Path("/enviar-relatorio-plano-trabalho")
  302 + public void enviarRelatorioPlanoTrabalho() {
  303 +
  304 + }
  305 +
  306 + private void enviarEmail(Questionario questionario) {
  307 + QuestionarioDao questionarioDao;
  308 +
  309 + StringBuffer mensagemMPF = new StringBuffer();
  310 + StringBuffer mensagemOrgao = new StringBuffer();
  311 + String assuntoMPF = "";
  312 + String assuntoOrgao = "";
  313 +
  314 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  315 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  316 +
  317 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
  318 +
  319 + if(planoTrabalho != null && planoTrabalho.getArquivoPlanoTrabalho() != null && planoTrabalho.getArquivoRelatorioAss() != null)
  320 + {
  321 + DataHandler dataHandlerRelatorio;
  322 + DataHandler dataHandlerPlano;
  323 +
  324 + dataHandlerRelatorio =
  325 + new DataHandler(planoTrabalho.getArquivoRelatorioAss(),
  326 + planoTrabalho.getNomeExtensaoRelatorioAss());
  327 + dataHandlerPlano =
  328 + new DataHandler(planoTrabalho.getArquivoPlanoTrabalho(),
  329 + planoTrabalho.getNomeExtensaoPlanoTrabalho());
  330 +
  331 + Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties");
  332 +
  333 + EnvioEmailSemAutenticacao envioEmailSemAutenticacao =
  334 + new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort()));
  335 +
  336 + assuntoMPF = "Registro de Encaminhamento do Relatório Circunstanciado de Acessibilidade Digital - " + questionario.getNoOrgao();
  337 +
  338 + mensagemMPF.append("À Procuradoria Federal dos Diretos do Cidadão,<br>");
  339 + mensagemMPF.append("<p>Conforme Portaria Interministerial xxxx/2016 do Ministério da Justiça e Cidadania e do");
  340 + mensagemMPF.append(" Ministério do Planejamento, Desenvolvimento e Gestão, o(a) " + questionario.getNoOrgao());
  341 + mensagemMPF.append(" encaminha o Relatório Circunstanciado relativo aos ambientes digitais desta");
  342 + mensagemMPF.append(" instituição. </p>");
  343 + mensagemMPF.append("Dados do Responsável:<br>");
  344 + mensagemMPF.append("Nome: " + questionario.getResponsavel() +"<br>");
  345 + mensagemMPF.append("Cargo: "+ questionario.getCargoResponsavel() + "<br>");
  346 + mensagemMPF.append("Telefone: " + questionario.getTelefone() + "<br>");
  347 + mensagemMPF.append("email: "+ questionario.getEmailDestinoOrgao() + "<br>");
  348 +
  349 +
  350 + String mensagemRetornoMPF =
  351 + envioEmailSemAutenticacao.sendMailComAnexo(questionario.getEmailDestinoOrgao(),
  352 + email.getAnexosTo(), assuntoMPF, mensagemMPF.toString(), email.getAuth(), email.getAuthUser(),
  353 + email.getAuthPass(), dataHandlerRelatorio, planoTrabalho.getNomeRelatorioAss(),
  354 + dataHandlerPlano, planoTrabalho.getNomePlanoTrabalho());
  355 +
  356 +
  357 +
  358 + if (mensagemRetornoMPF.equalsIgnoreCase("")) {
  359 +
  360 +
  361 + assuntoOrgao = "Registro de Encaminhamento do Relatório Circunstanciado de Acessibilidade Digital - " + questionario.getNoOrgao();
  362 +
  363 + mensagemOrgao.append("<p>Prezado(a) "+ questionario.getResponsavel() +", "+ questionario.getCargoResponsavel() +" do "+ questionario.getNoOrgao() +", você concluiu com sucesso o processo de ");
  364 + mensagemOrgao.append("envio do Relatório Circunstanciado (Formulário Eletrônico de Acessibilidade Digital e ");
  365 + mensagemOrgao.append("Plano de Trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério ");
  366 + mensagemOrgao.append("Público Federal.</p>");
  367 + mensagemOrgao.append("<p>Conforme previsto na portaria interministerial xxx/2016 do Ministério da Justiça e ");
  368 + mensagemOrgao.append("Cidadania e do Ministério do Planejamento, Desenvolvimento e Gestão, além do ");
  369 + mensagemOrgao.append("envio, o relatório circunstanciado deverá ser publicado no portal do órgão/entidade e ");
  370 + mensagemOrgao.append("o seu reporte , na forma de síntese, deverá ser registrado na seção ");
  371 + mensagemOrgao.append("\"Medidas Relativas à Acessibilidade\" do Relatório de Gestão referente a 2016 e, nos ");
  372 + mensagemOrgao.append("anos subsequentes, indicar nessa seção o monitoramento das metas propostas nos ");
  373 + mensagemOrgao.append("planos de trabalho.</p>");
  374 + mensagemOrgao.append("<p>Em caso de dúvida acesse <a href=\"http://fad.governoeletronico.gov.br/fad/contato/contato-site​​​\">http://fad.governoeletronico.gov.br/fad/contato/contato-site​​​.</a></p>");
  375 + mensagemOrgao.append("<p>Brasília, "+ DateUtil.dataHoraAtual() +".</p>");
  376 + mensagemOrgao.append("<p>Encaminhado por:</p>");
  377 + mensagemOrgao.append("<p><a href=\"http://fad.governoeletronico.gov.br​\">http://fad.governoeletronico.gov.br​</a></p>");
  378 + mensagemOrgao.append("<p>Coordenação-Geral de Padrões de Governo Digital</p>");
  379 + mensagemOrgao.append("<p>Departamento de Governo Digital</p>");
  380 + mensagemOrgao.append("<p>Secretaria de Tecnologia da Informação</p>");
  381 + mensagemOrgao.append("<p>Ministério do Planejamento, Desenvolvimento e Gestão</p>");
  382 +
  383 + //questionario.getEmailDestinoOrgao()
  384 + String mensagemRetornoOrgao =
  385 + envioEmailSemAutenticacao.sendMailComAnexo(email.getFrom(),
  386 + "gibransodre@hotmail.com", assuntoOrgao, mensagemOrgao.toString(), email.getAuth(),
  387 + email.getAuthUser(), email.getAuthPass(), dataHandlerRelatorio,
  388 + planoTrabalho.getNomeRelatorioAss(), dataHandlerPlano,
  389 + planoTrabalho.getNomePlanoTrabalho());
  390 +
  391 +
  392 + if (mensagemRetornoOrgao.equalsIgnoreCase("")) {
  393 +
  394 + questionarioDao = new QuestionarioDao();
  395 +
  396 + if (questionarioDao.atualizarFlagEnviado(path, questionario.getIdQuestionario())) {
  397 + result.include("mensagemEnvio",
  398 + "Mensagem enviada com Sucesso, você recebeu um email com os anexos!");
  399 + result.include("statusEnvio", true);
  400 + }
  401 + }
  402 + } else {
  403 + result.include("mensagemEnvio", "Não foi possível enviar o email com os anexos!");
  404 + result.include("statusEnvio", false);
  405 + }
  406 + }else
  407 + {
  408 + result.include("mensagemEnvio", "É preciso ter o Relatório e o Plano de Trabalho anexados!");
  409 + result.include("statusEnvio", false);
  410 + }
  411 +
  412 + this.validator.add(new ValidationMessage("", ""));
  413 + this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).confirmacaoEnvioEmailMPF();
  414 + }
  415 +
  416 + @Path("/enviar-email-mpf-alternativo")
  417 + public void enviarEmailMPFAlternativo(String valorHash) {
  418 +
  419 + Validacao validacao = new Validacao();
  420 + mensagemValidacaoCampos = new ArrayList<Validacao>();
  421 + mensagemValidacaoCampos = validacao.validarHash(path, valorHash);
  422 +
  423 + if (mensagemValidacaoCampos.size() > 0) {
  424 + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  425 + this.validator.add(new ValidationMessage("", ""));
  426 + this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).enviarRelatorioPlanoTrabalho();
  427 + }
  428 +
  429 + HashDao hashDao = new HashDao();
  430 + Questionario questionario = new Questionario();
  431 + questionario = hashDao.verificarHash(path, valorHash);
  432 +
  433 +
  434 +
  435 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  436 +
  437 + enviarEmail(questionario);
  438 +
  439 + }
  440 +
  441 + }
  442 +
  443 +
  444 + @Path("/enviar-email-mpf")
  445 + public void enviarEmailMPF() {
  446 + Questionario questionario = new Questionario();
  447 +
  448 + questionario =
  449 + (Questionario) VRaptorRequestHolder.currentRequest().getServletContext()
  450 + .getAttribute("questionario");
  451 +
  452 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  453 +
  454 + enviarEmail(questionario);
  455 +
  456 + }
  457 +
  458 + }
  459 +
  460 + public void confirmacaoEnvioEmailMPF() {
  461 +
  462 + }
273 463 }
... ...
src/br/com/controller/QuestionarioController.java
... ... @@ -10,6 +10,8 @@ import java.util.Properties;
10 10  
11 11 import javax.servlet.ServletContext;
12 12  
  13 +import org.apache.jasper.tagplugins.jstl.core.ForEach;
  14 +
13 15 import br.com.caelum.vraptor.Path;
14 16 import br.com.caelum.vraptor.Resource;
15 17 import br.com.caelum.vraptor.Result;
... ... @@ -51,6 +53,38 @@ public class QuestionarioController {
51 53 QuestionarioDao questionarioDao = new QuestionarioDao();
52 54 List<Questionario> lsquestionario = new ArrayList<Questionario>();
53 55 lsquestionario = questionarioDao.retornarListaQuestionario(path);
  56 +
  57 +
  58 + int relatorioRespondido = 0;
  59 + int planoTrabalhoAnexado = 0;
  60 + int relatorioAnexado = 0;
  61 + int relatorioEnviado = 0;
  62 +
  63 + for (Questionario questionario : lsquestionario) {
  64 +
  65 + if(questionario.getDataRespostaQuestionario() != null)
  66 + {
  67 + relatorioRespondido++;
  68 + }
  69 + if(questionario.isPlanoTrabalhoAnexado())
  70 + {
  71 + planoTrabalhoAnexado++;
  72 + }
  73 + if(questionario.isRelatorioAnexado())
  74 + {
  75 + relatorioAnexado++;
  76 + }
  77 + if(questionario.isFlagEnviado())
  78 + {
  79 + relatorioEnviado++;
  80 + }
  81 +
  82 + }
  83 +
  84 + result.include("totalRelatorioRespondido", relatorioRespondido);
  85 + result.include("totalPlanoTrabalhoAnexado", planoTrabalhoAnexado);
  86 + result.include("totalRelatorioAnexado", relatorioAnexado);
  87 + result.include("totalRelatorioEnviado", relatorioEnviado);
54 88 result.include("lsquestionario", lsquestionario);
55 89 result.include("totalSolicitacoes", lsquestionario.size());
56 90 }
... ... @@ -62,18 +96,19 @@ public class QuestionarioController {
62 96  
63 97 @Path("/lista-questionario")
64 98 public void listaQuestionario() {
65   - listarQuestionarioComFiltro("todos", "todos","");
  99 + listarQuestionarioComFiltro("todos", "todos","todos", "");
66 100 }
67 101  
68 102 @Path("/listar-questionario")
69   - public void listarQuestionarioComFiltro(String statusRelatorio, String statusPlanoTrabalho, String nomeOrgao) {
  103 + public void listarQuestionarioComFiltro(String statusRelatorio, String statusPlanoTrabalho, String relatorioAnexado, String nomeOrgao) {
70 104  
71 105 QuestionarioDao questionarioDao = new QuestionarioDao();
72 106 List<Questionario> lsquestionario = new ArrayList<Questionario>();
73   - lsquestionario = questionarioDao.retornarListaQuestionarioComFiltro(path, statusRelatorio, statusPlanoTrabalho, nomeOrgao);
  107 + lsquestionario = questionarioDao.retornarListaQuestionarioComFiltro(path, statusRelatorio, statusPlanoTrabalho, relatorioAnexado, nomeOrgao);
74 108 result.include("lsquestionario", lsquestionario);
75 109 result.include("totalSolicitacoes", lsquestionario.size());
76 110 result.include("statusRel", statusRelatorio.equalsIgnoreCase("todos")? "" :statusRelatorio);
  111 + result.include("relatorioAnex", relatorioAnexado.equalsIgnoreCase("todos")? "" :relatorioAnexado);
77 112 result.include("statusPlanoTrab", statusPlanoTrabalho.equalsIgnoreCase("todos")? "" :statusPlanoTrabalho);
78 113 result.include("nomeOrgao", nomeOrgao != null? nomeOrgao:"");
79 114  
... ...
src/br/com/controller/relatorioController.java
... ... @@ -81,87 +81,9 @@ public class relatorioController {
81 81 }
82 82 }
83 83  
84   - @Path("/enviar-email-mpf")
85   - public void enviarEmailMPF() {
86   - Questionario questionario = new Questionario();
87   - QuestionarioDao questionarioDao;
88   -
89   - UploadedFile fileRelatorio;
  84 +
90 85  
91   - String mensagemMPF = "";
92   - String mensagemOrgao = "";
93   - String assuntoMPF = "";
94   - String assuntoOrgao = "";
95 86  
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);
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   - }
158   -
159   - public void confirmacaoEnvioEmailMPF()
160   - {
161   -
162   - }
163   -
164   -
165 87 @Get("/relatorio-imprimir/{id}")
166 88 public void relatorioImprimir(String id) {
167 89 if (id != null) {
... ...
src/br/com/dao/PlanoTrabalhoDao.java
... ... @@ -13,7 +13,7 @@ import br.com.model.entity.Questionario;
13 13 public class PlanoTrabalhoDao {
14 14  
15 15  
16   - public int verificaPlanoTrabalho(String path, Integer idQuestionario)
  16 + public PlanoTrabalho verificaPlanoTrabalho(String path, Integer idQuestionario)
17 17 {
18 18  
19 19  
... ... @@ -23,6 +23,7 @@ public class PlanoTrabalhoDao {
23 23 ResultSet rset = null;
24 24 //boolean existePlanoTrabalho = false;
25 25 int idPlanoTrabalho = -1;
  26 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
26 27  
27 28 try {
28 29  
... ... @@ -33,8 +34,17 @@ public class PlanoTrabalhoDao {
33 34  
34 35 rset = estado.executeQuery(sql);
35 36  
36   - while (rset.next()) {
37   - idPlanoTrabalho = rset.getInt("id_plano_trabalho");
  37 + while (rset.next()) {
  38 + planoTrabalho.setIdPlanoTrabalho(rset.getInt("id_plano_trabalho"));
  39 + planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho"));
  40 + planoTrabalho.setArquivoRelatorioAss(rset.getBytes("arquivo_relatorio_ass"));
  41 + planoTrabalho.setNomeExtensaoPlanoTrabalho(rset.getString("extensao_plano_trabalho"));
  42 + planoTrabalho.setNomeExtensaoRelatorioAss(rset.getString("extensao_relatorio_ass"));
  43 + planoTrabalho.setNomePlanoTrabalho(rset.getString("nome_plano_trabalho"));
  44 + planoTrabalho.setNomeRelatorioAss(rset.getString("nome_relatorio_ass"));
  45 +
  46 + Questionario quest = new Questionario(path, idQuestionario);
  47 + planoTrabalho.setQuestionario(quest);
38 48 }
39 49  
40 50 } catch (SQLException e) {
... ... @@ -51,10 +61,10 @@ public class PlanoTrabalhoDao {
51 61 }
52 62 }
53 63  
54   - return idPlanoTrabalho;
  64 + return planoTrabalho;
55 65 }
56 66  
57   - public boolean salvarPlanoTrabalho(String path, InputStream file, Questionario questionario, String nomeExtensao)
  67 + public boolean salvarPlanoTrabalho(String path, InputStream file, Questionario questionario, String nomeArquivo,String nomeExtensao)
58 68 {
59 69  
60 70 StringBuffer sql = new StringBuffer();
... ... @@ -66,13 +76,14 @@ public class PlanoTrabalhoDao {
66 76 try {
67 77  
68 78 sql = new StringBuffer();
69   - sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, extensao_plano_trabalho) VALUES (?, ?, ?); ");
  79 + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho, nome_plano_trabalho,extensao_plano_trabalho) VALUES (?, ?, ?, ?); ");
70 80  
71 81 estado = con.prepareStatement(sql.toString());
72 82  
73 83 estado.setInt(1, questionario.getIdQuestionario());
74 84 estado.setBinaryStream(2, file);
75   - estado.setString(3, nomeExtensao);
  85 + estado.setString(3, nomeArquivo);
  86 + estado.setString(4, nomeExtensao);
76 87  
77 88 resultado = estado.executeUpdate();
78 89  
... ... @@ -91,7 +102,7 @@ public class PlanoTrabalhoDao {
91 102 return salvoComSucesso;
92 103 }
93 104  
94   - public boolean salvarRelatorioAss(String path, InputStream file, Questionario questionario, String nomeExtensao)
  105 + public boolean salvarRelatorioAss(String path, InputStream file, Questionario questionario, String nomeArquivo, String nomeExtensao)
95 106 {
96 107  
97 108 StringBuffer sql = new StringBuffer();
... ... @@ -103,13 +114,14 @@ public class PlanoTrabalhoDao {
103 114 try {
104 115  
105 116 sql = new StringBuffer();
106   - sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_relatorio_ass, extensao_relatorio_ass) VALUES (?, ?, ?); ");
  117 + sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_relatorio_ass, nome_relatorio_ass, extensao_relatorio_ass) VALUES (?, ?, ?, ?); ");
107 118  
108 119 estado = con.prepareStatement(sql.toString());
109 120  
110 121 estado.setInt(1, questionario.getIdQuestionario());
111 122 estado.setBinaryStream(2, file);
112   - estado.setString(3, nomeExtensao);
  123 + estado.setString(3, nomeArquivo);
  124 + estado.setString(4, nomeExtensao);
113 125  
114 126 resultado = estado.executeUpdate();
115 127  
... ... @@ -128,7 +140,7 @@ public class PlanoTrabalhoDao {
128 140 return salvoComSucesso;
129 141 }
130 142  
131   - public boolean atualizarPlanoTrabalho(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeExtensao)
  143 + public boolean atualizarPlanoTrabalho(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeArquivo, String nomeExtensao)
132 144 {
133 145  
134 146 StringBuffer sql = new StringBuffer();
... ... @@ -143,6 +155,7 @@ public class PlanoTrabalhoDao {
143 155 //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); ");
144 156 sql.append(" UPDATE public.plano_trabalho");
145 157 sql.append(" SET arquivo_plano_trabalho=?,");
  158 + sql.append( " nome_plano_trabalho =?, ");
146 159 sql.append( " extensao_plano_trabalho =? ");
147 160 sql.append(" WHERE id_plano_trabalho=?;");
148 161  
... ... @@ -150,8 +163,10 @@ public class PlanoTrabalhoDao {
150 163  
151 164 //estado.setInt(1, questionario.getIdQuestionario());
152 165 estado.setBinaryStream(1, file);
153   - estado.setString(2, nomeExtensao);
154   - estado.setInt(3, idPlanoTrabalho);
  166 + estado.setString(2, nomeArquivo);
  167 + estado.setString(3, nomeExtensao);
  168 + estado.setInt(4, idPlanoTrabalho);
  169 +
155 170  
156 171 resultado = estado.executeUpdate();
157 172  
... ... @@ -170,7 +185,7 @@ public class PlanoTrabalhoDao {
170 185 return salvoComSucesso;
171 186 }
172 187  
173   - public boolean atualizarRelatorioAss(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeExtensao)
  188 + public boolean atualizarRelatorioAss(String path, InputStream file, Questionario questionario, int idPlanoTrabalho, String nomeArquivo, String nomeExtensao)
174 189 {
175 190  
176 191 StringBuffer sql = new StringBuffer();
... ... @@ -185,6 +200,7 @@ public class PlanoTrabalhoDao {
185 200 //sql.append(" INSERT INTO public.plano_trabalho(id_questionario, arquivo_plano_trabalho) VALUES (?, ?); ");
186 201 sql.append(" UPDATE public.plano_trabalho");
187 202 sql.append(" SET arquivo_relatorio_ass=?,");
  203 + sql.append( " nome_relatorio_ass =?, ");
188 204 sql.append( " extensao_relatorio_ass =? ");
189 205 sql.append(" WHERE id_plano_trabalho=?;");
190 206  
... ... @@ -192,8 +208,9 @@ public class PlanoTrabalhoDao {
192 208  
193 209 //estado.setInt(1, questionario.getIdQuestionario());
194 210 estado.setBinaryStream(1, file);
195   - estado.setString(2, nomeExtensao);
196   - estado.setInt(3, idPlanoTrabalho);
  211 + estado.setString(2, nomeArquivo);
  212 + estado.setString(3, nomeExtensao);
  213 + estado.setInt(4, idPlanoTrabalho);
197 214  
198 215 resultado = estado.executeUpdate();
199 216  
... ... @@ -240,7 +257,9 @@ public class PlanoTrabalhoDao {
240 257 planoTrabalho.setArquivoPlanoTrabalho(rset.getBytes("arquivo_plano_trabalho"));
241 258 planoTrabalho.setNomeExtensaoPlanoTrabalho(rset.getString("extensao_plano_trabalho"));
242 259 planoTrabalho.setArquivoRelatorioAss(rset.getBytes("arquivo_relatorio_ass"));
243   - planoTrabalho.setNomeExtensaoRelatorioAss(rset.getString("extensao_relatorio_ass"));
  260 + planoTrabalho.setNomeExtensaoRelatorioAss(rset.getString("extensao_relatorio_ass"));
  261 + planoTrabalho.setNomePlanoTrabalho(rset.getString("nome_plano_trabalho"));
  262 + planoTrabalho.setNomeRelatorioAss(rset.getString("nome_relatorio_ass"));
244 263 planoTrabalho.setQuestionario(questionario);
245 264 }
246 265  
... ...
src/br/com/dao/QuestionarioDao.java
... ... @@ -16,6 +16,7 @@ import java.util.Date;
16 16 import java.util.List;
17 17  
18 18 import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
  19 +import br.com.model.entity.PlanoTrabalho;
19 20 import br.com.model.entity.Questionario;
20 21 import br.com.util.DateUtil;
21 22 import br.com.util.GeradorCodigoHash;
... ... @@ -66,10 +67,34 @@ public class QuestionarioDao {
66 67 questionario.setDtRespostaEmail(dataRespostaQuestionario);
67 68 }
68 69  
  70 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  71 +
  72 + planoTrabalho = planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario"));
69 73  
70 74  
71 75 questionario.setDataRespostaQuestionario(respostaQuestionarioDao.verificaRespostaQuestionario(path, rset.getInt("id_questionario")));
72   - questionario.setPlanoTrabalhoEnviado( planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario")) > -1 ? true : false);
  76 +
  77 + //verifica se foi anexado plano de trabalho
  78 + if(planoTrabalho != null && planoTrabalho.getArquivoPlanoTrabalho() != null)
  79 + {
  80 + questionario.setPlanoTrabalhoAnexado(true);
  81 + }
  82 + else
  83 + {
  84 + questionario.setPlanoTrabalhoAnexado(false);
  85 + }
  86 +
  87 +
  88 + //verifica se anexado Relatório assinado
  89 + if(planoTrabalho != null && planoTrabalho.getArquivoRelatorioAss() != null)
  90 + {
  91 + questionario.setRelatorioAnexado(true);
  92 + }
  93 + else
  94 + {
  95 + questionario.setRelatorioAnexado(false);
  96 + }
  97 +
73 98 listaQuestionario.add(questionario);
74 99  
75 100 }
... ... @@ -80,7 +105,7 @@ public class QuestionarioDao {
80 105 return listaQuestionario;
81 106 }
82 107  
83   - public List<Questionario> retornarListaQuestionarioComFiltro(String path, String statusRelatorio, String statusPlanoTrabalho, String nomeOrgao) {
  108 + public List<Questionario> retornarListaQuestionarioComFiltro(String path, String statusRelatorio, String statusPlanoTrabalho, String relatorioAnexado, String nomeOrgao) {
84 109  
85 110 List<Questionario> listaQuestionario = new ArrayList<Questionario>();
86 111  
... ... @@ -114,6 +139,7 @@ public class QuestionarioDao {
114 139 questionario.setFlagEnviado(rset.getBoolean("flag_enviado"));
115 140  
116 141 dataRespostaQuestionario = rset.getString("data_resposta_email");
  142 +
117 143 if(dataRespostaQuestionario != null)
118 144 {
119 145 questionario.setDtRespostaEmail(DateUtil.dataHoraFormatadaDiaMesAnoComParametro(dataRespostaQuestionario));
... ... @@ -126,21 +152,75 @@ public class QuestionarioDao {
126 152  
127 153 questionario.setDataRespostaQuestionario(respostaQuestionarioDao.verificaRespostaQuestionario(path, rset.getInt("id_questionario")));
128 154  
129   - questionario.setPlanoTrabalhoEnviado( planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario")) > -1 ? true : false);
130 155  
131   - if(statusPlanoTrabalho.equalsIgnoreCase("todos"))
  156 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  157 +
  158 + planoTrabalho = planoTrabalhoDao.verificaPlanoTrabalho(path, rset.getInt("id_questionario"));
  159 +
  160 + //verifica se foi anexado plano de trabalho
  161 + if(planoTrabalho != null && planoTrabalho.getArquivoPlanoTrabalho() != null)
132 162 {
133   - listaQuestionario.add(questionario);
  163 + questionario.setPlanoTrabalhoAnexado(true);
  164 + }
  165 + else
  166 + {
  167 + questionario.setPlanoTrabalhoAnexado(false);
  168 + }
  169 + //verifica se foi anexado o Relatório
  170 + if(planoTrabalho != null && planoTrabalho.getArquivoRelatorioAss() != null)
  171 + {
  172 + questionario.setRelatorioAnexado(true);
134 173 }
135 174 else
136 175 {
137   - if(statusPlanoTrabalho.equalsIgnoreCase("sim") && questionario.isPlanoTrabalhoEnviado())
  176 + questionario.setRelatorioAnexado(false);
  177 + }
  178 +
  179 +
  180 + if(statusPlanoTrabalho.equalsIgnoreCase("todos") && relatorioAnexado.equalsIgnoreCase("todos"))
  181 + {
  182 + listaQuestionario.add(questionario);
  183 + }
  184 + else
  185 + {
  186 + if(statusPlanoTrabalho.equalsIgnoreCase("sim") && questionario.isPlanoTrabalhoAnexado())
138 187 {
139   - listaQuestionario.add(questionario);
  188 + if(relatorioAnexado.equalsIgnoreCase("sim") && questionario.isRelatorioAnexado())
  189 + {
  190 + listaQuestionario.add(questionario);
  191 + }
  192 + else if(relatorioAnexado.equalsIgnoreCase("todos"))
  193 + {
  194 + listaQuestionario.add(questionario);
  195 + }
  196 + else if(relatorioAnexado.equalsIgnoreCase("nao") && !questionario.isRelatorioAnexado())
  197 + {
  198 + listaQuestionario.add(questionario);
  199 + }
140 200 }
141   - else if(statusPlanoTrabalho.equalsIgnoreCase("nao") && !questionario.isPlanoTrabalhoEnviado())
  201 + else if(statusPlanoTrabalho.equalsIgnoreCase("nao") && !questionario.isPlanoTrabalhoAnexado())
  202 + {
  203 + if(relatorioAnexado.equalsIgnoreCase("sim") && questionario.isRelatorioAnexado())
  204 + {
  205 + listaQuestionario.add(questionario);
  206 + } else if(relatorioAnexado.equalsIgnoreCase("todos"))
  207 + {
  208 + listaQuestionario.add(questionario);
  209 + }
  210 + else if(relatorioAnexado.equalsIgnoreCase("nao") && !questionario.isRelatorioAnexado())
  211 + {
  212 + listaQuestionario.add(questionario);
  213 + }
  214 + }else if(statusPlanoTrabalho.equalsIgnoreCase("todos"))
142 215 {
143   - listaQuestionario.add(questionario);
  216 + if(relatorioAnexado.equalsIgnoreCase("sim") && questionario.isRelatorioAnexado())
  217 + {
  218 + listaQuestionario.add(questionario);
  219 + }
  220 + else if(relatorioAnexado.equalsIgnoreCase("nao") && !questionario.isRelatorioAnexado())
  221 + {
  222 + listaQuestionario.add(questionario);
  223 + }
144 224 }
145 225 }
146 226  
... ...
src/br/com/model/entity/PlanoTrabalho.java
... ... @@ -7,6 +7,8 @@ public class PlanoTrabalho {
7 7 private String nomeExtensaoPlanoTrabalho;
8 8 private byte[] arquivoRelatorioAss;
9 9 private String nomeExtensaoRelatorioAss;
  10 + private String nomePlanoTrabalho;
  11 + private String nomeRelatorioAss;
10 12 private Questionario questionario;
11 13  
12 14 public int getIdPlanoTrabalho() {
... ... @@ -47,5 +49,19 @@ public class PlanoTrabalho {
47 49 public void setNomeExtensaoRelatorioAss(String nomeExtensaoRelatorioAss) {
48 50 this.nomeExtensaoRelatorioAss = nomeExtensaoRelatorioAss;
49 51 }
  52 + public String getNomePlanoTrabalho() {
  53 + return nomePlanoTrabalho;
  54 + }
  55 + public void setNomePlanoTrabalho(String nomePlanoTrabalho) {
  56 + this.nomePlanoTrabalho = nomePlanoTrabalho;
  57 + }
  58 + public String getNomeRelatorioAss() {
  59 + return nomeRelatorioAss;
  60 + }
  61 + public void setNomeRelatorioAss(String nomeRelatorioAss) {
  62 + this.nomeRelatorioAss = nomeRelatorioAss;
  63 + }
  64 +
  65 +
50 66  
51 67 }
... ...
src/br/com/model/entity/Questionario.java
... ... @@ -22,7 +22,8 @@ public class Questionario {
22 22 private String dtRecebimentoEmail;
23 23 private String dtRespostaEmail;
24 24 private String dataRespostaQuestionario;
25   - private boolean planoTrabalhoEnviado;
  25 + private boolean planoTrabalhoAnexado;
  26 + private boolean RelatorioAnexado;
26 27 private boolean flagEnviado;
27 28  
28 29  
... ... @@ -174,12 +175,12 @@ public class Questionario {
174 175 this.dataRespostaQuestionario = dataRespostaQuestionario;
175 176 }
176 177  
177   - public boolean isPlanoTrabalhoEnviado() {
178   - return planoTrabalhoEnviado;
  178 + public boolean isPlanoTrabalhoAnexado() {
  179 + return planoTrabalhoAnexado;
179 180 }
180 181  
181   - public void setPlanoTrabalhoEnviado(boolean planoTrabalhoEnviado) {
182   - this.planoTrabalhoEnviado = planoTrabalhoEnviado;
  182 + public void setPlanoTrabalhoAnexado(boolean planoTrabalhoAnexado) {
  183 + this.planoTrabalhoAnexado = planoTrabalhoAnexado;
183 184 }
184 185  
185 186 public boolean isFlagEnviado() {
... ... @@ -190,6 +191,14 @@ public class Questionario {
190 191 this.flagEnviado = flagEnviado;
191 192 }
192 193  
  194 + public boolean isRelatorioAnexado() {
  195 + return RelatorioAnexado;
  196 + }
  197 +
  198 + public void setRelatorioAnexado(boolean relatorioAnexado) {
  199 + RelatorioAnexado = relatorioAnexado;
  200 + }
  201 +
193 202  
194 203  
195 204 }
... ...