Commit e8624499adff50f2aa49733e717b4d7bc49e06bb

Authored by 96409975520
1 parent bfbcab0f
Exists in master

PAinel

WebContent/WEB-INF/jsp/index/formulario.jsp
... ... @@ -12,9 +12,12 @@
12 12 </li>
13 13  
14 14 <li>
15   - <form method="post" id="voltar_form" action="${pageContext.request.contextPath}/formularioOrgao">
16   - <input type="hidden" id="valorHash" name="valorHash" value="${valorHash}"/>
17   - <a href="#" onClick="document.getElementById('voltar_form').submit();">Dados Institucionais </a>
  15 + <form method="post" id="voltar_form"
  16 + action="${pageContext.request.contextPath}/formularioOrgao">
  17 + <input type="hidden" id="valorHash" name="valorHash"
  18 + value="${valorHash}" />
  19 + <a href="#"
  20 + onClick="document.getElementById('voltar_form').submit();">Dados Institucionais </a>
18 21 </form>
19 22  
20 23 </li>
... ... @@ -23,6 +26,7 @@
23 26 </ul>
24 27 </div>
25 28 <c:if test="${not empty nivel_01}">
  29 +
26 30 <div class="funcionalidades">
27 31 <ul class="statusFad">
28 32 <li>
... ... @@ -43,8 +47,8 @@
43 47 <li>
44 48 <c:if test="${nivel_03 == true}">
45 49 <img src="imgs/nivel_03_completo.png"
46   - alt="FAD impresso, assinado, digitalizado e anexado." width="125"
47   - height="85" />
  50 + alt="FAD impresso, assinado, digitalizado e anexado."
  51 + width="125" height="85" />
48 52 </c:if>
49 53 <c:if test="${nivel_03 == false}">
50 54 <img src="imgs/nivel_03_incompleto.png"
... ... @@ -74,8 +78,8 @@
74 78 <img src="imgs/nivel_05_incompleto.png"
75 79 alt="Relatório Circunstanciado não enviado à PFDC/MPF."
76 80 width="125" height="85" />
77   - <img src="imgs/nivel_06_incompleto.png" alt="Processo não concluído."
78   - width="85" height="85" />
  81 + <img src="imgs/nivel_06_incompleto.png"
  82 + alt="Processo não concluído." width="85" height="85" />
79 83 </c:if>
80 84 </li>
81 85 </ul>
... ... @@ -96,43 +100,61 @@
96 100 </c:if>
97 101 </div>
98 102  
99   - <div><label class="asterisco">Os campos com asterisco são de preenchimento obrigatório</label></div>
  103 + <div>
  104 + <label class="asterisco">Os campos com asterisco são de preenchimento obrigatório</label>
  105 + </div>
100 106 <div id="introducao">
101 107  
102 108 <h2 class="titulo">Questionário Acessibilidade</h2>
103   - <form id="formulario" method="post" action="${pageContext.request.contextPath}/salvar-formulario" accept-charset="UTF-8" onSubmit="return enviarDados();">
  109 + <form id="formulario" method="post"
  110 + action="${pageContext.request.contextPath}/salvar-formulario"
  111 + accept-charset="UTF-8" onSubmit="return enviarDados();">
104 112 <fieldset>
105 113 <legend>Dados Acessibilidade</legend>
106 114  
107 115 <label for="perguntaAcessibilidade" class="obrigatorio">1) O Órgão tem conhecimento da legislação que envolve o tema "acessibilidade" bem como suas implicações?</label><br>
108   - <input type="hidden" name="hPerguntaAcessibilidade" value="7" /><select name="perguntaAcessibilidade" id="perguntaAcessibilidade" required>
109   - <option value="" ${perguntaAcessibilidade == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
110   - <option value="2" ${perguntaAcessibilidade == '2'?'selected=\"selected\"':''}>Sim</option>
111   - <option value="4" ${perguntaAcessibilidade == '4'?'selected=\"selected\"':''}>Já ouvi falar</option>
112   - <option value="3" ${perguntaAcessibilidade == '3'?'selected=\"selected\"':''}>Não</option>
  116 + <input type="hidden" name="hPerguntaAcessibilidade" value="7" /><select
  117 + name="perguntaAcessibilidade" id="perguntaAcessibilidade" required>
  118 + <option value=""
  119 + ${perguntaAcessibilidade == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
  120 + <option value="2"
  121 + ${perguntaAcessibilidade == '2'?'selected=\"selected\"':''}>Sim</option>
  122 + <option value="4"
  123 + ${perguntaAcessibilidade == '4'?'selected=\"selected\"':''}>Já ouvi falar</option>
  124 + <option value="3"
  125 + ${perguntaAcessibilidade == '3'?'selected=\"selected\"':''}>Não</option>
113 126 </select>
114 127 <br><br>
115 128  
116 129  
117 130 <label for="reclamacao" class="obrigatorio">2) O Órgão já recebeu, formal ou informalmente, reclamações sobre acessibilidade em seus ambientes digitais?</label><br>
118   - <input type="hidden" name="hReclamacao" value="8" /><select name="reclamacao" id="reclamacao" required>
  131 + <input type="hidden" name="hReclamacao" value="8" /><select
  132 + name="reclamacao" id="reclamacao" required>
119 133 <option value="" ${reclamacao == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
120   - <option value="2" ${reclamacao == '2'?'selected=\"selected\"':''}>Sim</option>
  134 + <option value="2"
  135 + ${reclamacao == '2'?'selected=\"selected\"':''}>Sim</option>
121 136 <option value="3" ${reclamacao == '3'?'selected=\"selected\"':''}>Não</option>
122 137 </select>
123 138 <br><br>
124 139  
125 140 <label for="espacoReclamacao">3) Com relação a pergunta anterior, caso tenha respondido "Sim", mencione abaixo quando e por quem houve a reclamação e qual foi a reclamação:</label><br>
126 141 <input type="hidden" name="hEspacoReclamacao" value="9" />
127   - <textarea name="espacoReclamacao" id="espacoReclamacao" rows="8" cols="100" maxlength="1000"><c:if test="${espacoReclamacao != null}">${espacoReclamacao}</c:if></textarea>
  142 + <textarea name="espacoReclamacao" id="espacoReclamacao" rows="8"
  143 + cols="100" maxlength="1000"><c:if
  144 + test="${espacoReclamacao != null}">${espacoReclamacao}</c:if></textarea>
128 145 <br><br>
129 146  
130 147 <label for="perguntaEstimulo" class="obrigatorio">4) O Órgão tem estimulado seus servidores e parceiros a realizarem capacitações sobre acessibilidade em ambientes digitais?</label>
131   - <input type="hidden" name="hPerguntaEstimulo" value="10" /><select name="perguntaEstimulo" id="perguntaEstimulo" required>
132   - <option value="" ${perguntaEstimulo == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
133   - <option value="2" ${perguntaEstimulo == '2'?'selected=\"selected\"':''}>Sim</option>
134   - <option value="5" ${perguntaEstimulo == '5'?'selected=\"selected\"':''}>Não, por não priorizar o tema</option>
135   - <option value="6" ${perguntaEstimulo == '6'?'selected=\"selected\"':''}>Não, por não conhecer a oferta de cursos sobre o tema</option>
  148 + <input type="hidden" name="hPerguntaEstimulo" value="10" /><select
  149 + name="perguntaEstimulo" id="perguntaEstimulo" required>
  150 + <option value=""
  151 + ${perguntaEstimulo == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
  152 + <option value="2"
  153 + ${perguntaEstimulo == '2'?'selected=\"selected\"':''}>Sim</option>
  154 + <option value="5"
  155 + ${perguntaEstimulo == '5'?'selected=\"selected\"':''}>Não, por não priorizar o tema</option>
  156 + <option value="6"
  157 + ${perguntaEstimulo == '6'?'selected=\"selected\"':''}>Não, por não conhecer a oferta de cursos sobre o tema</option>
136 158 </select>
137 159 <br><br>
138 160  
... ... @@ -192,38 +214,54 @@
192 214 <input type="hidden" name="hRequisito" value="12" />
193 215 <legend class="obrigatorio">6) O Órgão observa em seu processo de desenvolvimento de sítios, portais e serviços eletrônicos os requisitos de acessibilidade?
194 216 </legend>
195   - <input type="radio" name="requisito" id="requisito1" value="11" checked="checked"><label for="requisito1">Sim, observamos os requisitos do modelo brasileiro, ou seja, observamos o "Modelo de Acessibilidade em Governo Eletrônico (eMAG)"</label><br>
196   - <input type="radio" name="requisito" id="requisito2" value="12" ${requisito == '12'?'checked=\"checked\"':''}><label for="requisito2">Sim, observamos os requisitos do modelo internacional, ou seja, observamos o "<span lang="en">Web Content Accessibility Guidelines</span> (WCAG)"</label><br>
197   - <input type="radio" name="requisito" id="requisito3" value="13" ${requisito == '13'?'checked=\"checked\"':''}><label for="requisito3">Sim, observamos os requisitos de outros modelos que não os especificados acima</label><br>
198   - <input type="radio" name="requisito" id="requisito4" value="3" ${requisito == '3'?'checked=\"checked\"':''}><label for="requisito4">Não</label>
  217 + <input type="radio" name="requisito" id="requisito1" value="11"
  218 + checked="checked"><label for="requisito1">Sim, observamos os requisitos do modelo brasileiro, ou seja, observamos o "Modelo de Acessibilidade em Governo Eletrônico (eMAG)"</label><br>
  219 + <input type="radio" name="requisito" id="requisito2" value="12"
  220 + ${requisito == '12'?'checked=\"checked\"':''}><label
  221 + for="requisito2">Sim, observamos os requisitos do modelo internacional, ou seja, observamos o "<span
  222 + lang="en">Web Content Accessibility Guidelines</span> (WCAG)"</label><br>
  223 + <input type="radio" name="requisito" id="requisito3" value="13"
  224 + ${requisito == '13'?'checked=\"checked\"':''}><label
  225 + for="requisito3">Sim, observamos os requisitos de outros modelos que não os especificados acima</label><br>
  226 + <input type="radio" name="requisito" id="requisito4" value="3"
  227 + ${requisito == '3'?'checked=\"checked\"':''}><label
  228 + for="requisito4">Não</label>
199 229 </fieldset>
200 230 <br>
201 231  
202 232 <label for="justificativaRequisito">7) Com relação à pergunta anterior, caso tenha respondido "Sim, observamos os requisitos de outros modelos que não os especificados acima", então mencione abaixo estes modelos:</label>
203 233 <input type="hidden" name="hJustificativaRequisito" value="13" />
204 234 <textarea name="justificativaRequisito"
205   - id="justificativaRequisito" rows="8" cols="100" maxlength="600"><c:if test="${justificativaRequisito != null}">${justificativaRequisito}</c:if></textarea>
  235 + id="justificativaRequisito" rows="8" cols="100" maxlength="600"><c:if
  236 + test="${justificativaRequisito != null}">${justificativaRequisito}</c:if></textarea>
206 237 <br><br>
207 238  
208 239 <fieldset class="pergunta">
209 240 <input type="hidden" name="hOpcaoContrat" value="14" />
210   - <legend class="obrigatorio">8) Nas contratações de fábrica de <span lang="en"><i>software</i></span> e/ou parcerias firmadas para o desenvolvimento de ambientes digitais, há citação explícita<br> sobre os requisitos de acessibilidade assim como as sanções para o seu não atendimento?
  241 + <legend class="obrigatorio">8) Nas contratações de fábrica de <span
  242 + lang="en"><i>software</i></span> e/ou parcerias firmadas para o desenvolvimento de ambientes digitais, há citação explícita<br> sobre os requisitos de acessibilidade assim como as sanções para o seu não atendimento?
211 243 </legend>
212 244 <input type="radio" id="contratacao1" name="opcaoContrat"
213 245 value="14" checked="checked"><label for="contratacao1">Sim, conforme especifica o estudo técnico preliminar da contratação da Instrução Normativa N° 04, de 11 de Setembro de 2014.</label><br>
214 246 <input type="radio" id="contratacao2" name="opcaoContrat"
215 247 value="15" ${opcaoContrat == '15'?'checked=\"checked\"':''}><label
216   - for="contratacao2">Sim, conforme sugere a "Cartilha de Boas Práticas para Acessibilidade Digital" na contratação de <br>desenvolvimento <span lang="en">WEB</span></label><br>
217   - <input type="radio" id="contratacao3" name="opcaoContrat" value="3" ${opcaoContrat == '3'?'checked=\"checked\"':''}><label for="contratacao3">Não</label>
  248 + for="contratacao2">Sim, conforme sugere a "Cartilha de Boas Práticas para Acessibilidade Digital" na contratação de <br>desenvolvimento <span
  249 + lang="en">WEB</span></label><br>
  250 + <input type="radio" id="contratacao3" name="opcaoContrat"
  251 + value="3" ${opcaoContrat == '3'?'checked=\"checked\"':''}><label
  252 + for="contratacao3">Não</label>
218 253 </fieldset>
219 254 <br>
220 255  
221 256 <label for="perguntaValidacao" class="obrigatorio">9) O Órgão realiza validações de acessibilidade em seus ambientes digitais?</label><br>
222 257 <input type="hidden" name="hPerguntaValidacao" value="15" />
223   - <select name="perguntaValidacao" id="perguntaValidacao" required>
224   - <option value="" ${perguntaValidacao == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
225   - <option value="2" ${perguntaValidacao == '2'?'selected=\"selected\"':''}>Sim</option>
226   - <option value="3" ${perguntaValidacao == '3'?'selected=\"selected\"':''}>Não</option>
  258 + <select name="perguntaValidacao" id="perguntaValidacao" required>
  259 + <option value=""
  260 + ${perguntaValidacao == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
  261 + <option value="2"
  262 + ${perguntaValidacao == '2'?'selected=\"selected\"':''}>Sim</option>
  263 + <option value="3"
  264 + ${perguntaValidacao == '3'?'selected=\"selected\"':''}>Não</option>
227 265 </select>
228 266 <br><br>
229 267  
... ... @@ -283,7 +321,8 @@
283 321 <c:set var="marcar" scope="session" value="true" />
284 322 </c:if>
285 323 </c:forEach>
286   - <input type="checkbox" name="ferramentaValidacao" value="20" title="Ao marcar esta opção as demais opções serão desabilitadas!"
  324 + <input type="checkbox" name="ferramentaValidacao" value="20"
  325 + title="Ao marcar esta opção as demais opções serão desabilitadas!"
287 326 id="nenhuma" ${marcar == 'true'?'checked=\"checked\"':''}><label
288 327 for="nenhuma">Nenhuma</label><br>
289 328  
... ... @@ -296,7 +335,8 @@
296 335 <input type="checkbox" name="ferramentaValidacao" id="asesWeb"
297 336 value="21" ${marcar == 'true'?'checked=\"checked\"':''}><label
298 337 for="asesWeb">Avaliador e Simulador de Acessibilidade em Sítios (ASES) <span
299   - lang="en">Web</span> (<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr> e eMAG)</label><br>
  338 + lang="en">Web</span> (<abbr title="Web Accessibility Initiative"
  339 + lang="en">WAI</abbr> e eMAG)</label><br>
300 340  
301 341 <c:set var="marcar" scope="session" value="false" />
302 342 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -307,7 +347,8 @@
307 347 <input type="checkbox" name="ferramentaValidacao" id="asesDesktop"
308 348 value="22" ${marcar == 'true'?'checked=\"checked\"':''}><label
309 349 for="asesDesktop">Avaliador e Simulador de Acessibilidade em Sítios (ASES) <span
310   - lang="en">Desktop</span> (<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr> e eMAG)</label><br>
  350 + lang="en">Desktop</span> (<abbr
  351 + title="Web Accessibility Initiative" lang="en">WAI</abbr> e eMAG)</label><br>
311 352  
312 353 <c:set var="marcar" scope="session" value="false" />
313 354 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -317,7 +358,8 @@
317 358 </c:forEach>
318 359 <input type="checkbox" name="ferramentaValidacao" id="silva"
319 360 value="23" ${marcar == 'true'?'checked=\"checked\"':''}><label
320   - for="silva">Da Silva (<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr> e eMAG)</label><br>
  361 + for="silva">Da Silva (<abbr
  362 + title="Web Accessibility Initiative" lang="en">WAI</abbr> e eMAG)</label><br>
321 363  
322 364 <c:set var="marcar" scope="session" value="false" />
323 365 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -327,7 +369,8 @@
327 369 </c:forEach>
328 370 <input type="checkbox" name="ferramentaValidacao" id="access"
329 371 value="24" ${marcar == 'true'?'checked=\"checked\"':''}><label
330   - for="access"><span lang="en">AccessMonitor</span> (<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  372 + for="access"><span lang="en">AccessMonitor</span> (<abbr
  373 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
331 374  
332 375 <c:set var="marcar" scope="session" value="false" />
333 376 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -337,7 +380,8 @@
337 380 </c:forEach>
338 381 <input type="checkbox" name="ferramentaValidacao" id="tool"
339 382 value="25" ${marcar == 'true'?'checked=\"checked\"':''}><label
340   - for="tool"><span lang="en">Web Accessibility Tool </span>(WAVE) (<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  383 + for="tool"><span lang="en">Web Accessibility Tool </span>(WAVE) (<abbr
  384 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
341 385  
342 386 <c:set var="marcar" scope="session" value="false" />
343 387 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -347,7 +391,8 @@
347 391 </c:forEach>
348 392 <input type="checkbox" name="ferramentaValidacao" id="cynthia"
349 393 value="26" ${marcar == 'true'?'checked=\"checked\"':''}><label
350   - for="cynthia"><span lang="en">Cynthia Says </span>(<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  394 + for="cynthia"><span lang="en">Cynthia Says </span>(<abbr
  395 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
351 396  
352 397 <c:set var="marcar" scope="session" value="false" />
353 398 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -357,7 +402,8 @@
357 402 </c:forEach>
358 403 <input type="checkbox" name="ferramentaValidacao" id="hera"
359 404 value="27" ${marcar == 'true'?'checked=\"checked\"':''}><label
360   - for="hera"><span lang="en">Hera </span>(<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  405 + for="hera"><span lang="en">Hera </span>(<abbr
  406 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
361 407  
362 408 <c:set var="marcar" scope="session" value="false" />
363 409 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -367,7 +413,8 @@
367 413 </c:forEach>
368 414 <input type="checkbox" name="ferramentaValidacao" id="lift"
369 415 value="28" ${marcar == 'true'?'checked=\"checked\"':''}><label
370   - for="lift"><span lang="en">Lift </span>(<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  416 + for="lift"><span lang="en">Lift </span>(<abbr
  417 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
371 418  
372 419 <c:set var="marcar" scope="session" value="false" />
373 420 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -377,7 +424,8 @@
377 424 </c:forEach>
378 425 <input type="checkbox" name="ferramentaValidacao" id="taw"
379 426 value="29" ${marcar == 'true'?'checked=\"checked\"':''}><label
380   - for="taw"><span lang="en">TAW </span>(<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  427 + for="taw"><span lang="en">TAW </span>(<abbr
  428 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
381 429  
382 430 <c:set var="marcar" scope="session" value="false" />
383 431 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -387,7 +435,8 @@
387 435 </c:forEach>
388 436 <input type="checkbox" name="ferramentaValidacao" id="examinator"
389 437 value="30" ${marcar == 'true'?'checked=\"checked\"':''}><label
390   - for="examinator"><span lang="en">Examinator </span>(<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
  438 + for="examinator"><span lang="en">Examinator </span>(<abbr
  439 + title="Web Accessibility Initiative" lang="en">WAI</abbr>)</label><br>
391 440  
392 441 <c:set var="marcar" scope="session" value="false" />
393 442 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -397,7 +446,9 @@
397 446 </c:forEach>
398 447 <input type="checkbox" name="ferramentaValidacao" id="functional"
399 448 value="31" ${marcar == 'true'?'checked=\"checked\"':''}><label
400   - for="functional"><span lang="en">Functional Accessibility Evaluator</span> 1.1(<abbr title="Web Accessibility Initiative" lang="en">WAI</abbr> e <span lang="en">Section</span> 508)</label><br>
  449 + for="functional"><span lang="en">Functional Accessibility Evaluator</span> 1.1(<abbr
  450 + title="Web Accessibility Initiative" lang="en">WAI</abbr> e <span
  451 + lang="en">Section</span> 508)</label><br>
401 452  
402 453 <c:set var="marcar" scope="session" value="false" />
403 454 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -406,7 +457,8 @@
406 457 </c:if>
407 458 </c:forEach>
408 459 <input type="checkbox" name="ferramentaValidacao" id="checklst1"
409   - value="32" ${marcar == 'true'?'checked=\"checked\"':''}><label for="checklst1"><i><span lang="en">Checklist</span></i> de Avaliação Manual (Checklist de Acessibilidade Manual para o Desenvolvedor)</label><br>
  460 + value="32" ${marcar == 'true'?'checked=\"checked\"':''}><label
  461 + for="checklst1"><i><span lang="en">Checklist</span></i> de Avaliação Manual (Checklist de Acessibilidade Manual para o Desenvolvedor)</label><br>
410 462  
411 463 <c:set var="marcar" scope="session" value="false" />
412 464 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -415,7 +467,8 @@
415 467 </c:if>
416 468 </c:forEach>
417 469 <input type="checkbox" name="ferramentaValidacao" id="checklst2"
418   - value="33" ${marcar == 'true'?'checked=\"checked\"':''}><label for="checklst2"><i><span lang="en">Checklist</span></i> de Avaliação Manual (Anexo B – Recomendações e Pontos de checagem para atendimento do eMAG)</label><br>
  470 + value="33" ${marcar == 'true'?'checked=\"checked\"':''}><label
  471 + for="checklst2"><i><span lang="en">Checklist</span></i> de Avaliação Manual (Anexo B – Recomendações e Pontos de checagem para atendimento do eMAG)</label><br>
419 472  
420 473 <c:set var="marcar" scope="session" value="false" />
421 474 <c:forEach items="${ferramentaValidacao}" var="item">
... ... @@ -432,21 +485,35 @@
432 485 <label for="outroAvaliador">12) Com relação à pergunta anterior, caso tenha respondido "Outro(s)", mencione abaixo quais são estas ferramentas:</label>
433 486 <input type="hidden" name="hOutroAvaliador" value="18" />
434 487 <textarea name="outroAvaliador" id="outroAvaliador" rows="8"
435   - cols="100" maxlength="600"><c:if test="${outroAvaliador != null}">${outroAvaliador}</c:if></textarea>
  488 + cols="100" maxlength="600"><c:if
  489 + test="${outroAvaliador != null}">${outroAvaliador}</c:if></textarea>
436 490 <br><br>
437 491  
438 492 <fieldset class="pergunta">
439 493 <input type="hidden" name="hAmostragemSiteQuestionario" value="19" />
440   - <legend class="obrigatorio">13) Para cada ambiente e página informada no formulário anterior, informe a <a href="http://asesweb.governoeletronico.gov.br">nota ASESWEB (Link para um novo sítio)</a> e a <a href="http://www.acessibilidade.gov.pt/accessmonitor/">nota AccessMonitor (Link para um novo sítio - utilize o WCAG 2.0)</a>.</legend>
  494 + <legend class="obrigatorio">13) Para cada ambiente e página informada no formulário anterior, informe a <a
  495 + href="http://asesweb.governoeletronico.gov.br">nota ASESWEB (Link para um novo sítio)</a> e a <a
  496 + href="http://www.acessibilidade.gov.pt/accessmonitor/">nota AccessMonitor (Link para um novo sítio - utilize o WCAG 2.0)</a>.</legend>
441 497 <c:if test="${not empty lsAmostragemSiteQuestionario}">
442 498 <c:forEach items="${lsAmostragemSiteQuestionario}" var="amostra">
443   - <input type="hidden" name="${amostra.nomeCampo }" value="${amostra.urlAmostraSiteQuestionario}" />
  499 + <input type="hidden" name="${amostra.nomeCampo }"
  500 + value="${amostra.urlAmostraSiteQuestionario}" />
444 501 <label for="ases_${amostra.nomeCampo}"> ${amostra.urlAmostraSiteQuestionario}</label> <br /> <br />
445 502 <label for="ases_${amostra.nomeCampo}">Nota ASES:(999,99) </label>
446   - <input type="number" size="10"step="0.01" maxlength="6" id="ases_${amostra.nomeCampo}" name="ases_${amostra.nomeCampo}" value="${amostra.notaAses}" max="100" min="0" oninvalid="this.setCustomValidity('Somente valor entre 0 e 100')" required />
  503 + <input type="number" size="10" step="0.01" maxlength="6"
  504 + id="ases_${amostra.nomeCampo}" name="ases_${amostra.nomeCampo}"
  505 + value="${amostra.notaAses}" max="100" min="0"
  506 + oninvalid="this.setCustomValidity('Somente valor entre 0 e 100')"
  507 + required />
447 508 <label for="accessMonitor_${amostra.nomeCampo}">Nota AccessMonitor:(99,99) </label>
448   - <input type="number" size="10" step="0.01" maxlength="5" id="accessMonitor_${amostra.nomeCampo}" name="accessMonitor_${amostra.nomeCampo}" value="${amostra.notaAccess}" max="10" min="0" oninvalid="this.setCustomValidity('Somente valor entre 0 e 10')" required/>
449   - <br/><br/>
  509 + <input type="number" size="10" step="0.01" maxlength="5"
  510 + id="accessMonitor_${amostra.nomeCampo}"
  511 + name="accessMonitor_${amostra.nomeCampo}"
  512 + value="${amostra.notaAccess}" max="10" min="0"
  513 + oninvalid="this.setCustomValidity('Somente valor entre 0 e 10')"
  514 + required />
  515 + <br />
  516 + <br />
450 517 <hr>
451 518 </c:forEach>
452 519 </c:if>
... ... @@ -482,7 +549,8 @@
482 549 value="52" ${checklistQtnList == '52'?'checked=\"checked\"':''}><label
483 550 for="checklist3">A validação é feita pelo responsável técnico do contrato, seguindo um <i><span
484 551 lang="en">checklist</span></i> de validação manual em amostras do conjunto de páginas</label><br>
485   - <input type="radio" id="checklist4" name="checklistQtnList" value="53" ${checklistQtnList == '53'?'checked=\"checked\"':''}><label
  552 + <input type="radio" id="checklist4" name="checklistQtnList"
  553 + value="53" ${checklistQtnList == '53'?'checked=\"checked\"':''}><label
486 554 for="checklist4">A validação é feita por empresa terceirizada, contratada para ajudar na garantia da qualidade do software, seguindo um <i><span
487 555 lang="en">checklist</span></i> de validação manual</label><br>
488 556 <input type="radio" id="checklist5" name="checklistQtnList"
... ... @@ -552,20 +620,22 @@
552 620  
553 621 <label for="funcionalidade" class="obrigatorio">16) O órgão mantém, em seus ambientes, link para página onde são descritos os recursos de acessibilidade existentes?</label>
554 622  
555   - <input type="hidden" name="hFuncionalidade" value="23" /><select name="funcionalidade" id="funcionalidade" required>
  623 + <input type="hidden" name="hFuncionalidade" value="23" /><select
  624 + name="funcionalidade" id="funcionalidade" required>
556 625 <option value="" ${funcionalidade == ''?'selected=\"selected\"':''}>Selecione uma resposta</option>
557 626 <option value="2"
558   - ${funcionalidade == '2'?'selected=\"selected\"':''}>Sim</option>
  627 + ${funcionalidade == '2'?'selected=\"selected\"':''}>Sim</option>
559 628 <option value="55"
560   - ${funcionalidade == '55'?'selected=\"selected\"':''}>Sim, somente no meu ambiente institucional</option>
  629 + ${funcionalidade == '55'?'selected=\"selected\"':''}>Sim, somente no meu ambiente institucional</option>
561 630 <option value="3"
562   - ${funcionalidade == '3'?'selected=\"selected\"':''}>Não</option>
  631 + ${funcionalidade == '3'?'selected=\"selected\"':''}>Não</option>
563 632 </select>
564 633 <br><br>
565 634  
566 635 <fieldset class="pergunta">
567 636 <input type="hidden" name="hAssistiva" value="24" />
568   - <legend class="obrigatorio" id="assistivaPergunta">17) Dentre as tecnologias assistivas baseadas em <i><span lang="en">softwares</span></i>, marque qual delas o órgão indica ou implementa em seus ambientes digitais:
  637 + <legend class="obrigatorio" id="assistivaPergunta">17) Dentre as tecnologias assistivas baseadas em <i><span
  638 + lang="en">softwares</span></i>, marque qual delas o órgão indica ou implementa em seus ambientes digitais:
569 639  
570 640 </legend>
571 641  
... ... @@ -575,7 +645,8 @@
575 645 <c:set var="marcar" scope="session" value="true" />
576 646 </c:if>
577 647 </c:forEach>
578   - <input type="checkbox" name="assistiva" id="assistiva0" value="20" title="Ao marcar esta opção as demais opções serão desabilitadas!"
  648 + <input type="checkbox" name="assistiva" id="assistiva0" value="20"
  649 + title="Ao marcar esta opção as demais opções serão desabilitadas!"
579 650 ${marcar == 'true'?'checked=\"checked\"':''}><label
580 651 for="assistiva0">Nenhum</label><br>
581 652  
... ... @@ -668,54 +739,82 @@
668 739 <c:set var="marcar" scope="session" value="true" />
669 740 </c:if>
670 741 </c:forEach>
671   - <input type="checkbox" name="assistiva" id="assistiva8" value="34" ${marcar == 'true'?'checked=\"checked\"':''}><label for="assistiva8">Outro(s)</label>
  742 + <input type="checkbox" name="assistiva" id="assistiva8" value="34"
  743 + ${marcar == 'true'?'checked=\"checked\"':''}><label
  744 + for="assistiva8">Outro(s)</label>
672 745 </fieldset>
673 746 <br>
674 747  
675 748 <label for="justificativaAssistiva">18) Com relação à pergunta anterior: caso tenha respondido "Outro(s)" mencione abaixo quais são essas tecnologias:</label>
676 749 <input type="hidden" name="hJustificativaAssistiva" value="25" />
677   - <textarea name="justificativaAssistiva" id="justificativaAssistiva" rows="8" cols="100" maxlength="600"><c:if test="${justificativaAssistiva != null}">${justificativaAssistiva}</c:if></textarea>
  750 + <textarea name="justificativaAssistiva"
  751 + id="justificativaAssistiva" rows="8" cols="100" maxlength="600"><c:if
  752 + test="${justificativaAssistiva != null}">${justificativaAssistiva}</c:if></textarea>
678 753  
679 754 <br><br>
680 755  
681 756 <label for="dificuldadePrazo">19) Mencione abaixo as dificuldades para o atendimento do prazo previsto na legislação para o estabelecimento da acessibilidade digital, caso o órgao esteja enfrentando estas dificuldades:</label>
682 757 <input type="hidden" name="hDificuldadePrazo" value="26" />
683   - <textarea name="dificuldadePrazo" id="dificuldadePrazo" rows="8" cols="100" maxlength="1000"><c:if test="${dificuldadePrazo != null}">${dificuldadePrazo}</c:if></textarea><br><br>
  758 + <textarea name="dificuldadePrazo" id="dificuldadePrazo" rows="8"
  759 + cols="100" maxlength="1000"><c:if
  760 + test="${dificuldadePrazo != null}">${dificuldadePrazo}</c:if></textarea>
  761 + <br><br>
684 762  
685   - <div><h3>Leis, Documentos e Sítios referenciados neste formulário:</h3>
  763 + <div>
  764 + <h3>Leis, Documentos e Sítios referenciados neste formulário:</h3>
686 765 <ul>
687   - <li><a href="http://www.governoeletronico.gov.br/documentos-e-arquivos/IN%204%202014_compilada.pdf">Instrução Normativa 04/2014 (IN 04/2014) - formato .pdf 319Kb</a></li>
688   - <li><a href="http://emag.governoeletronico.gov.br/cartilha-contratacao/">Cartilha de Boas Práticas para Acessibilidade Digital - link para um novo sítio</a></li>
689   - <li><a href="http://www.governoeletronico.gov.br/documentos-e-arquivos/eMAG-Checklist-acessibilidade-desenvolvedores.pdf">Checklist de Acessibilidade Manual para o Desenvolvedor - formato .pdf 552Kb</a></li>
690   - <li><a href="http://emag.governoeletronico.gov.br/cartilha-contratacao/arquivos/anexos/Anexo-B.ods">Anexo B – Recomendações e Pontos de checagem para atendimento do eMAG - formato .ods 18Kb</a></li>
691   - <li><a href="http://emag.governoeletronico.gov.br/cartilha-contratacao/arquivos/anexos/Anexo-A.ods"> Anexo A – eMAG com WCAG - formato .ods 20,2kb</a></li>
  766 + <li><a
  767 + href="http://www.governoeletronico.gov.br/documentos-e-arquivos/IN%204%202014_compilada.pdf">Instrução Normativa 04/2014 (IN 04/2014) - formato .pdf 319Kb</a></li>
  768 + <li><a
  769 + href="http://emag.governoeletronico.gov.br/cartilha-contratacao/">Cartilha de Boas Práticas para Acessibilidade Digital - link para um novo sítio</a></li>
  770 + <li><a
  771 + href="http://www.governoeletronico.gov.br/documentos-e-arquivos/eMAG-Checklist-acessibilidade-desenvolvedores.pdf">Checklist de Acessibilidade Manual para o Desenvolvedor - formato .pdf 552Kb</a></li>
  772 + <li><a
  773 + href="http://emag.governoeletronico.gov.br/cartilha-contratacao/arquivos/anexos/Anexo-B.ods">Anexo B – Recomendações e Pontos de checagem para atendimento do eMAG - formato .ods 18Kb</a></li>
  774 + <li><a
  775 + href="http://emag.governoeletronico.gov.br/cartilha-contratacao/arquivos/anexos/Anexo-A.ods"> Anexo A – eMAG com WCAG - formato .ods 20,2kb</a></li>
692 776 <li><a href="http://asesweb.governoeletronico.gov.br">ASESWEB - Avaliador e Simulador de Acessibilidade em Sítios - link para um novo sítio</a></li>
693   - <li><a href="http://www.acessibilidade.gov.pt/accessmonitor/">ACCESSMONITOR - Validador automático para WCAG - link para um novo sítio</a></li>
  777 + <li><a
  778 + href="http://www.acessibilidade.gov.pt/accessmonitor/">ACCESSMONITOR - Validador automático para WCAG - link para um novo sítio</a></li>
694 779 </ul>
695 780 </div>
696 781  
697 782 </fieldset>
698 783  
699   - <div id="botaoEnviar">
700   - <input type="submit" class="button" id="enviar" name="executar" value="Cadastrar">
701   - </div>
  784 + <c:if test="${flagEnviado == false}">
  785 + <div id="botaoEnviar">
  786 + <input type="submit" class="button" id="enviar" name="executar"
  787 + value="Cadastrar">
  788 + </div>
  789 + </c:if>
  790 +
  791 + <c:if test="${flagEnviado == true}">
  792 + <strong class="atencao">ATENÇÃO! O relatório não pode ser alterado, o mesmo já foi enviado à  PFDC/MPF.</strong>
  793 + </c:if>
702 794  
703   - <input type="hidden" name="idQuestionario" value="${questionario.idQuestionario}" />
704   - <input type="hidden" id="nomePessoa" name="nomePessoa" value="${nomePessoa}" />
705   - <input type="hidden" id="hNomePessoa" name="hNomePessoa" value="${hNomePessoa}" />
  795 + <input type="hidden" name="idQuestionario"
  796 + value="${questionario.idQuestionario}" />
  797 + <input type="hidden" id="nomePessoa" name="nomePessoa"
  798 + value="${nomePessoa}" />
  799 + <input type="hidden" id="hNomePessoa" name="hNomePessoa"
  800 + value="${hNomePessoa}" />
706 801 <input type="hidden" id="hCargo" name="hCargo" value="${hCargo}" />
707 802 <input type="hidden" id="cargo" name="cargo" value="${cargo}" />
708 803 <input type="hidden" id="telefone" name="telefone" value="${telefone}" />
709   - <input type="hidden" id="hTelefone" name="hTelefone" value="${hTelefone}" />
710   - <input type="hidden" id="email" name="email" value="${email}" />
711   - <input type="hidden" id="hEmail" name="hEmail" value="${hEmail}" />
  804 + <input type="hidden" id="hTelefone" name="hTelefone"
  805 + value="${hTelefone}" />
  806 + <input type="hidden" id="email" name="email" value="${email}" />
  807 + <input type="hidden" id="hEmail" name="hEmail" value="${hEmail}" />
712 808  
713 809 </form>
714 810  
715 811 <div id="botaoVoltar">
716   - <form method="post" action="${pageContext.request.contextPath}/formularioOrgao">
717   - <input type="hidden" id="valorHash" name="valorHash" value="${valorHash}"/>
718   - <input type="submit" class="button" id="voltarF" name="executar" value="Voltar">
  812 + <form method="post"
  813 + action="${pageContext.request.contextPath}/formularioOrgao">
  814 + <input type="hidden" id="valorHash" name="valorHash"
  815 + value="${valorHash}" />
  816 + <input type="submit" class="button" id="voltarF" name="executar"
  817 + value="Voltar">
719 818 </form>
720 819 </div>
721 820  
... ...
WebContent/WEB-INF/jsp/painel/painel.jsp 0 → 100644
... ... @@ -0,0 +1,192 @@
  1 +<%@page contentType="text/html" pageEncoding="UTF-8"%>
  2 +<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3 +<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  4 +<!DOCTYPE html>
  5 +<html lang=pt-br>
  6 +
  7 +<head>
  8 +<title>Relatório Circunstanciado de Acessibilidade Digital</title>
  9 +
  10 +
  11 +<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/imprimir.css" media="screen">
  12 +<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/default.css" media="screen">
  13 +<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/imprimir.css" media="print">
  14 +<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/default.css" media="print">
  15 +<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/botaoImprimir.css" media="print">
  16 +
  17 +
  18 +
  19 +</head>
  20 +<body id='imprimir'>
  21 + <div>
  22 + <div id="center">
  23 + <h1 class="maiusculo" >
  24 + RELATÓRIO CIRCUNSTANCIADO DE ACESSIBILIDADE DIGITAL (Art. 120 da Lei nº 13.146/2015)<br>
  25 + ${questionario.noOrgao}<br>
  26 + EXERCÍCIO 2016
  27 + </h1>
  28 + </div>
  29 + </div>
  30 + <div>
  31 +
  32 + <fieldset>
  33 + <legend>Dados Acessibilidade</legend>
  34 + <label>1) O Órgão
  35 + tem conhecimento da legislação que envolve o tema "acessibilidade"
  36 + bem como suas implicações?</label>
  37 + <p><strong>Sim: ${pergunta1_2}</strong></p>
  38 + <p><strong>Já Ouvi falar: ${pergunta1_4 }</strong></p>
  39 + <p><strong>Não: ${pergunta1_3}</strong></p>
  40 +
  41 + <label> 2) O Órgão já recebeu, formal ou informalmente, reclamações sobre
  42 + acessibilidade em seus ambientes digitais?</label>
  43 + <p><strong>Sim: ${pergunta2_2 }</strong></p>
  44 + <p><strong>Não: ${pergunta2_3 }</strong></p>
  45 +
  46 + <label>3) O Órgão
  47 + tem estimulado seus servidores e parceiros a realizarem
  48 + capacitações sobre acessibilidade em ambientes digitais?</label>
  49 + <p><strong>Sim: ${pergunta3_2 }</strong></p>
  50 + <p><strong>Não, por não priorizar o tema: ${pergunta3_5 }</strong></p>
  51 + <p><strong>Não, por não conhecer a oferta de cursos sobre o tema: ${pergunta3_6 }</strong></p>
  52 +
  53 + <label>4) Com
  54 + relação a pergunta anterior, caso tenha respondido 'Sim', mencione
  55 + abaixo os tipos de cursos estimulados pelo órgão:</label>
  56 + <p><strong>Escola(s) de ensino à distancia (EAD): ${pergunta4_7 }</strong></p>
  57 + <p><strong>EAD através da Escola Nacional de Administração Pública (ENAP): ${pergunta4_8 }</strong></p>
  58 + <p><strong>Escola(s) de ensino presencial: ${pergunta4_9 }</strong></p>
  59 + <p><strong>Ensino presencial através da ENAP: ${pergunta4_10 }</strong></p>
  60 +
  61 +
  62 + <label>5) O Órgão observa
  63 + em seu processo de desenvolvimento de sítios, portais e serviços
  64 + eletrônicos os requisitos de acessibilidade?</label>
  65 +<p><strong>Sim, observamos os requisitos do modelo brasileiro, ou seja, observamos o "Modelo de Acessibilidade em Governo Eletrônico (eMAG)": ${pergunta5_11 }</strong></p>
  66 +<p><strong>Sim, observamos os requisitos do modelo internacional, ou seja, observamos o "Web Content Accessibility Guidelines (WCAG)": ${pergunta5_12 }</strong></p>
  67 +<p><strong>Sim, observamos os requisitos de outros modelos que não os especificados acima: ${pergunta5_13 }</strong></p>
  68 +<p><strong>Não: ${pergunta5_3 }</strong></p>
  69 +
  70 + <label>6) Nas
  71 + contratações de fábrica de software e/ou parcerias firmadas para o
  72 + desenvolvimento de ambientes digitais há citação explícita sobre
  73 + os requisitos de acessibilidade assim como as sanções para o seu não atendimento?</label>
  74 +<p><strong>Sim, conforme especifica o estudo técnico preliminar da contratação da Instrução Normativa N° 04, de 11 de Setembro de 2014.: ${pergunta6_14 }</strong></p>
  75 +<p><strong>Sim, conforme sugere a "Cartilha de Boas Práticas para Acessibilidade Digital" na contratação de desenvolvimento WEB: ${pergunta6_15 }</strong></p>
  76 +<p><strong>Não: ${pergunta6_3 }</strong></p>
  77 +
  78 +<label>7)
  79 + O Órgão realiza validações de acessibilidade em seus ambientes
  80 + digitais?</label>
  81 +<p><strong>sim: ${pergunta7_2 }</strong></p>
  82 +<p><strong>Não: ${pergunta7_3 }</strong></p>
  83 +
  84 + <label>8) Com relação a pergunta anterior, no caso de 'Sim', mencione abaixo
  85 + as validações realizadas:</label>
  86 +<p><strong>Validações por ferramentas automáticas para homologações das entregas do desenvolvimento: ${pergunta8_16 }</strong></p>
  87 +<p><strong>Verificações humanas para homologações das entregas do desenvolvimento: ${pergunta8_17 }</strong></p>
  88 +<p><strong>Validações automáticas constantemente desde a entrega dos códigos: ${pergunta8_18 }</strong></p>
  89 +<p><strong>Verificações humanas constantemente desde a entrega dos códigos: ${pergunta8_19 }</strong></p>
  90 +
  91 + <label>9) Quais ferramentas são utilizadas no processo de validação de
  92 + acessibilidade em seus ambientes digitais?</label>
  93 +<p><strong>Nenhuma: ${pergunta9_20 }</strong></p>
  94 +<p><strong>Avaliador e Simulador de Acessibilidade em Sítios (ASES) Web (WAI e eMAG): ${pergunta9_21 }</strong></p>
  95 +<p><strong>Avaliador e Simulador de Acessibilidade em Sítios (ASES) Desktop (WAI e eMAG): ${pergunta9_22 }</strong></p>
  96 +<p><strong>Da Silva (WAI e eMAG): ${pergunta9_23 }</strong></p>
  97 +<p><strong>AccessMonitor (WAI): ${pergunta9_24 }</strong></p>
  98 +<p><strong>Web Accessibility Tool (WAVE) (WAI): ${pergunta9_25 }</strong></p>
  99 +<p><strong>Cynthia Says (WAI): ${pergunta9_26 }</strong></p>
  100 +<p><strong>Hera (WAI): ${pergunta9_27 }</strong></p>
  101 +<p><strong>Lift (WAI): ${pergunta9_28 }</strong></p>
  102 +<p><strong>TAW (WAI): ${pergunta9_29 }</strong></p>
  103 +<p><strong>Examinator (WAI): ${pergunta9_30 }</strong></p>
  104 +<p><strong>Functional Accessibility Evaluator 1.1(WAI e Section 508): ${pergunta9_31 }</strong></p>
  105 +<p><strong>Checklist de Avaliação Manual (Checklist de Acessibilidade Manual para o Desenvolvedor): ${pergunta9_32 }</strong></p>
  106 +<p><strong>Checklist de Avaliação Manual (Anexo B – Recomendações e Pontos de checagem para atendimento do eMAG): ${pergunta9_33 }</strong></p>
  107 +<p><strong>Outro(s): ${pergunta9_34 }</strong></p>
  108 +
  109 +
  110 +<label>10) Informe abaixo, pelo menos um Ambiente Digital (sítio ou portal) e quatro páginas deste mesmo ambiente. Informe a nota Ases e a nota AccessMonitor (utilize o WCAG 2.0) para cada ambiente e página informada:</label>
  111 +
  112 +
  113 +<p><strong>Total de ambientes: ${totalAmbientes }</strong></p>
  114 +<p><strong>Nota ASES (menor ou igual 10%): ${notaAsesMenorIgual_10 }</strong></p>
  115 +<p><strong>Nota ASES (maior que 10% e menor ou igual 20%): ${notaAsesMaior_10_menorIgual_20 }</strong></p>
  116 +<p><strong>Nota ASES (maior que 20% e menor ou igual 30%): ${notaAsesMaior_20_menorIgual_30 }</strong></p>
  117 +<p><strong>Nota ASES (maior que 30% e menor ou igual 40%): ${notaAsesMaior_30_menorIgual_40 }</strong></p>
  118 +<p><strong>Nota ASES (maior que 40% e menor ou igual 50%): ${notaAsesMaior_40_menorIgual_50 }</strong></p>
  119 +<p><strong>Nota ASES (maior que 50% e menor ou igual 60%): ${notaAsesMaior_50_menorIgual_60 }</strong></p>
  120 +<p><strong>Nota ASES (maior que 60% e menor ou igual 70%): ${notaAsesMaior_60_menorIgual_70 }</strong></p>
  121 +<p><strong>Nota ASES (maior que 70% e menor ou igual 80%): ${notaAsesMaior_70_menorIgual_80 }</strong></p>
  122 +<p><strong>Nota ASES (maior que 80% e menor ou igual 90%): ${notaAsesMaior_80_menorIgual_90 }</strong></p>
  123 +<p><strong>Nota ASES (maior que 90% e menor ou igual 100%): ${notaAsesMaior_90_menor_100 }</strong></p>
  124 +<p><strong>Nota ASES (igual a 100%): ${notaAsesIgual_100 }</strong></p>
  125 +
  126 +
  127 +
  128 +<p><strong>Nota AccessMonitor (menor ou igual 1): ${notaAccessMonitorMenorIgual_1 }</strong></p>
  129 +<p><strong>Nota AccessMonitor (maior que 1 e menor ou igual 2): ${notaAccessMonitorMaior_1_menorIgual_2 }</strong></p>
  130 +<p><strong>Nota AccessMonitor (maior que 2 e menor ou igual 3): ${notaAccessMonitorMaior_2_menorIgual_3 }</strong></p>
  131 +<p><strong>Nota AccessMonitor (maior que 3 e menor ou igual 4): ${notaAccessMonitorMaior_3_menorIgual_4 }</strong></p>
  132 +<p><strong>Nota AccessMonitor (maior que 4 e menor ou igual 5): ${notaAccessMonitorMaior_4_menorIgual_5 }</strong></p>
  133 +<p><strong>Nota AccessMonitor (maior que 5 e menor ou igual 6): ${notaAccessMonitorMaior_5_menorIgual_6 }</strong></p>
  134 +<p><strong>Nota AccessMonitor (maior que 6 e menor ou igual 7): ${notaAccessMonitorMaior_6_menorIgual_7 }</strong></p>
  135 +<p><strong>Nota AccessMonitor (maior que 7 e menor ou igual 8): ${notaAccessMonitorMaior_7_menorIgual_8 }</strong></p>
  136 +<p><strong>Nota AccessMonitor (maior que 8 e menor ou igual 9): ${notaAccessMonitorMaior_8_menorIgual_9 }</strong></p>
  137 +<p><strong>Nota AccessMonitor (maior que 9 e menor 10): ${notaAccessMonitorMaior_9_menor_10 }</strong></p>
  138 +<p><strong>Nota AccessMonitor (igual a 10): ${notaAccessMonitorIgual_10 }</strong></p>
  139 +
  140 +
  141 +<label>11) Quanto aos
  142 + itens de acessibilidade que não podem ser verificados por máquina,
  143 + como o atendimento, quanto às normas de acessibilidade, é
  144 + validado?</label>
  145 +<p><strong>Não é feito a validação de itens que não podem ser validados de maneira automática: ${pergunta11_50 }</strong></p>
  146 +<p><strong>A validação é feita pelo responsável técnico do contrato, seguindo um checklist de validação manual em todas as páginas: ${pergunta11_51 }</strong></p>
  147 +<p><strong>A validação é feita pelo responsável técnico do contrato, seguindo um checklist de validação manual em amostras do conjunto de páginas: ${pergunta11_52 }</strong></p>
  148 +<p><strong>A validação é feita por empresa terceirizada, contratada para ajudar na garantia da qualidade do software, seguindo um checklist de validação manual: ${pergunta11_53 }</strong></p>
  149 +<p><strong>A validação é feita através do teste de atendimento das exigências contratuais pela empresa desenvolvedora do produto, que
  150 +entrega, para cada página desenvolvida, um checklist que especifica os testes manuais que foram executados: ${pergunta11_54 }</strong></p>
  151 +
  152 +<label>12) Caso o órgão realize validações com pessoas com deficiência, selecione abaixo quais pessoas fazem essas validações:</label>
  153 +
  154 +<p><strong>Pessoa cega ou com baixa visão: ${pergunta12_65 }</strong></p>
  155 +<p><strong>Pessoa surda ou com deficiência auditiva: ${pergunta12_66 }</strong></p>
  156 +<p><strong>Pessoa com deficiência intelectual: ${pergunta12_67 }</strong></p>
  157 +<p><strong>Pessoa com deficiência física ou motora: ${pergunta12_68 }</strong></p>
  158 +
  159 +
  160 + <label>13) O órgão mantém, em seus ambientes, link para página onde são descritos os recursos de acessibilidade existentes?</label>
  161 +
  162 +<p><strong>Sim: ${pergunta13_2 }</strong></p>
  163 +<p><strong>Sim, somente no meu ambiente institucional: ${pergunta13_55 }</strong></p>
  164 +<p><strong>Não: ${pergunta13_3}</strong></p>
  165 +
  166 + <label>14) Dentre as tecnologias assistivas baseadas em softwares, marque qual delas o órgão indica ou implementa em seus ambientes digitais:</label>
  167 +
  168 +<p><strong>Nenhuma: ${pergunta14_20 }</strong></p>
  169 +<p><strong>DOSVOX: ${pergunta14_56 }</strong></p>
  170 +<p><strong>ORCA: ${pergunta14_57 }</strong></p>
  171 +<p><strong>JAWS: ${pergunta14_58 }</strong></p>
  172 +<p><strong>Rybená: ${pergunta14_59 }</strong></p>
  173 +<p><strong>Hand Talk: ${pergunta14_60 }</strong></p>
  174 +<p><strong>Prodeaf: ${pergunta14_61 }</strong></p>
  175 +<p><strong>VLibras: ${pergunta14_62 }</strong></p>
  176 +<p><strong>NVDA: ${pergunta14_69 }</strong></p>
  177 +<p><strong>Outro(s): ${pergunta14_34 }</strong></p>
  178 + </fieldset>
  179 +
  180 +
  181 + </div>
  182 +
  183 + <br>
  184 +
  185 +</body>
  186 +
  187 +<div id="divButton">
  188 + <a class="button" id="pPrincipal" href="${pageContext.request.contextPath}/">Página Inicial</a>
  189 + <input type="button" class="button" value="Imprimir" id="bImprimir" name="bImprimir" onClick="javascript:window.print()">
  190 +</div>
  191 +
  192 +</html>
0 193 \ No newline at end of file
... ...
WebContent/WEB-INF/jsp/planoTrabalho/planoTrabalho.jsp
... ... @@ -101,7 +101,14 @@
101 101 <a href="${pageContext.request.contextPath}/recuperar-relatorio/${questionario.idQuestionario}">${planoTrabalho.nomeRelatorioAss }</a>
102 102 </c:if>
103 103 </label><br>
104   - <input type="file" id="fileRelatorio" name="fileRelatorio" accept="application/msword, application/zip, application/octet-stream, application/x-rar-compressed, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,text/plain, application/pdf, image/*"><br>
  104 + <c:if test="${questionario.flagEnviado == false}">
  105 + <input type="file" id="fileRelatorio" name="fileRelatorio" accept="application/msword, application/zip, application/octet-stream, application/x-rar-compressed, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,text/plain, application/pdf, image/*"><br>
  106 + </c:if>
  107 +
  108 + <c:if test="${questionario.flagEnviado == true}">
  109 + <input type="file" id="fileRelatorio" name="fileRelatorio" accept="application/msword, application/zip, application/octet-stream, application/x-rar-compressed, application/vnd.ms-excel, application/vnd.oasis.opendocument.text ,text/plain, application/pdf, image/*" disabled="disabled"><br>
  110 + </c:if>
  111 +
105 112 <hr>
106 113 <label for="filePlano">Plano de Trabalho: (tamanho máximo: 50Mb)
107 114 <c:if test="${not empty planoTrabalho.nomePlanoTrabalho}">
... ...
src/br/com/controller/PainelController.java 0 → 100644
... ... @@ -0,0 +1,303 @@
  1 +package br.com.controller;
  2 +
  3 +import java.sql.ResultSet;
  4 +import java.sql.SQLException;
  5 +
  6 +import javax.servlet.ServletContext;
  7 +
  8 +import br.com.caelum.vraptor.Path;
  9 +import br.com.caelum.vraptor.Resource;
  10 +import br.com.caelum.vraptor.Result;
  11 +import br.com.caelum.vraptor.Validator;
  12 +import br.com.dao.PainelDao;
  13 +
  14 +@Resource
  15 +public class PainelController {
  16 +
  17 + private String path;
  18 + private ServletContext application;
  19 + private Result result;
  20 +
  21 + public PainelController(Result result, ServletContext application) {
  22 + this.result = result;
  23 + this.application = application;
  24 + this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties";
  25 + }
  26 +
  27 + @Path("/painel")
  28 + public void painel() {
  29 +
  30 + PainelDao painelDao = new PainelDao();
  31 +
  32 + //pergunta 1
  33 + result.include("pergunta1_2", painelDao.retornarTotalResposta(path, 7,2));
  34 + result.include("pergunta1_4", painelDao.retornarTotalResposta(path, 7,4));
  35 + result.include("pergunta1_3", painelDao.retornarTotalResposta(path, 7,3));
  36 +
  37 + //pergunta 2
  38 + result.include("pergunta2_2", painelDao.retornarTotalResposta(path, 8,2));
  39 + result.include("pergunta2_3", painelDao.retornarTotalResposta(path, 8,3));
  40 +
  41 + //pergunta 3
  42 + result.include("pergunta3_2", painelDao.retornarTotalResposta(path, 10,2));
  43 + result.include("pergunta3_5", painelDao.retornarTotalResposta(path, 10,5));
  44 + result.include("pergunta3_6", painelDao.retornarTotalResposta(path, 10,6));
  45 +
  46 + //pergunta 4
  47 + result.include("pergunta4_7", painelDao.retornarTotalResposta(path, 11,7));
  48 + result.include("pergunta4_8", painelDao.retornarTotalResposta(path, 11,8));
  49 + result.include("pergunta4_9", painelDao.retornarTotalResposta(path, 11,9));
  50 + result.include("pergunta4_10", painelDao.retornarTotalResposta(path, 11,10));
  51 +
  52 + //pergunta 5
  53 + result.include("pergunta5_11", painelDao.retornarTotalResposta(path, 12,11));
  54 + result.include("pergunta5_12", painelDao.retornarTotalResposta(path, 12,12));
  55 + result.include("pergunta5_13", painelDao.retornarTotalResposta(path, 12,13));
  56 + result.include("pergunta5_3", painelDao.retornarTotalResposta(path, 12,3));
  57 +
  58 + //pergunta 6
  59 + result.include("pergunta6_14", painelDao.retornarTotalResposta(path, 14,14));
  60 + result.include("pergunta6_15", painelDao.retornarTotalResposta(path, 14,15));
  61 + result.include("pergunta6_3", painelDao.retornarTotalResposta(path, 14,3));
  62 +
  63 + //pergunta 7
  64 + result.include("pergunta7_2", painelDao.retornarTotalResposta(path, 15,2));
  65 + result.include("pergunta7_3", painelDao.retornarTotalResposta(path, 15,3));
  66 +
  67 + //pergunta 8
  68 + result.include("pergunta8_16", painelDao.retornarTotalResposta(path, 16,16));
  69 + result.include("pergunta8_17", painelDao.retornarTotalResposta(path, 16,17));
  70 + result.include("pergunta8_18", painelDao.retornarTotalResposta(path, 16,18));
  71 + result.include("pergunta8_19", painelDao.retornarTotalResposta(path, 16,19));
  72 +
  73 + //pergunta 9
  74 + result.include("pergunta9_20", painelDao.retornarTotalResposta(path, 17,20));
  75 + result.include("pergunta9_21", painelDao.retornarTotalResposta(path, 17,21));
  76 + result.include("pergunta9_22", painelDao.retornarTotalResposta(path, 17,22));
  77 + result.include("pergunta9_23", painelDao.retornarTotalResposta(path, 17,23));
  78 + result.include("pergunta9_24", painelDao.retornarTotalResposta(path, 17,24));
  79 + result.include("pergunta9_25", painelDao.retornarTotalResposta(path, 17,25));
  80 + result.include("pergunta9_26", painelDao.retornarTotalResposta(path, 17,26));
  81 + result.include("pergunta9_27", painelDao.retornarTotalResposta(path, 17,27));
  82 + result.include("pergunta9_28", painelDao.retornarTotalResposta(path, 17,28));
  83 + result.include("pergunta9_29", painelDao.retornarTotalResposta(path, 17,29));
  84 + result.include("pergunta9_30", painelDao.retornarTotalResposta(path, 17,30));
  85 + result.include("pergunta9_31", painelDao.retornarTotalResposta(path, 17,31));
  86 + result.include("pergunta9_32", painelDao.retornarTotalResposta(path, 17,32));
  87 + result.include("pergunta9_33", painelDao.retornarTotalResposta(path, 17,33));
  88 + result.include("pergunta9_34", painelDao.retornarTotalResposta(path, 17,34));
  89 +
  90 +
  91 + //pergunta 10 NOTAS
  92 +
  93 +
  94 + //pergunta 11
  95 + result.include("pergunta11_50", painelDao.retornarTotalResposta(path, 21,50));
  96 + result.include("pergunta11_51", painelDao.retornarTotalResposta(path, 21,51));
  97 + result.include("pergunta11_52", painelDao.retornarTotalResposta(path, 21,52));
  98 + result.include("pergunta11_53", painelDao.retornarTotalResposta(path, 21,53));
  99 + result.include("pergunta11_54", painelDao.retornarTotalResposta(path, 21,54));
  100 +
  101 + //pergunta 12
  102 + result.include("pergunta12_65", painelDao.retornarTotalResposta(path, 22,65));
  103 + result.include("pergunta12_66", painelDao.retornarTotalResposta(path, 22,66));
  104 + result.include("pergunta12_67", painelDao.retornarTotalResposta(path, 22,67));
  105 + result.include("pergunta12_68", painelDao.retornarTotalResposta(path, 22,68));
  106 +
  107 + //pergunta 13
  108 + result.include("pergunta13_2", painelDao.retornarTotalResposta(path, 23,2));
  109 + result.include("pergunta13_55", painelDao.retornarTotalResposta(path, 23,55));
  110 + result.include("pergunta13_3", painelDao.retornarTotalResposta(path, 23,3));
  111 +
  112 + //pergunta 14
  113 + result.include("pergunta14_20", painelDao.retornarTotalResposta(path, 24,20));
  114 + result.include("pergunta14_56", painelDao.retornarTotalResposta(path, 24,56));
  115 + result.include("pergunta14_57", painelDao.retornarTotalResposta(path, 24,57));
  116 + result.include("pergunta14_58", painelDao.retornarTotalResposta(path, 24,58));
  117 + result.include("pergunta14_59", painelDao.retornarTotalResposta(path, 24,59));
  118 + result.include("pergunta14_60", painelDao.retornarTotalResposta(path, 24,60));
  119 + result.include("pergunta14_61", painelDao.retornarTotalResposta(path, 24,61));
  120 + result.include("pergunta14_62", painelDao.retornarTotalResposta(path, 24,62));
  121 + result.include("pergunta14_69", painelDao.retornarTotalResposta(path, 24,69));
  122 + result.include("pergunta14_34", painelDao.retornarTotalResposta(path, 24,34));
  123 +
  124 + ResultSet rset = null;
  125 +
  126 + //Notas Ases
  127 + rset = painelDao.retornarTotalNotas(path, 63);
  128 + String nota = null;
  129 + int notaAsesMenorIgual_10 = 0;
  130 + int notaAsesMaior_10_menorIgual_20 = 0;
  131 + int notaAsesMaior_20_menorIgual_30 = 0;
  132 + int notaAsesMaior_30_menorIgual_40 = 0;
  133 + int notaAsesMaior_40_menorIgual_50 = 0;
  134 + int notaAsesMaior_50_menorIgual_60 = 0;
  135 + int notaAsesMaior_60_menorIgual_70 = 0;
  136 + int notaAsesMaior_70_menorIgual_80 = 0;
  137 + int notaAsesMaior_80_menorIgual_90 = 0;
  138 + int notaAsesMaior_90_menor_100 = 0;
  139 + int notaAsesIgual_100 = 0;
  140 + int totalAmbientes = 0;
  141 +
  142 + Double notaConvertidaAses;
  143 +
  144 + if(rset != null)
  145 + {
  146 + try {
  147 + while (rset.next()) {
  148 + notaConvertidaAses = Double.parseDouble(rset.getString("texto_resposta").replace(",", "."));
  149 + totalAmbientes++;
  150 +
  151 + if(notaConvertidaAses <= 10)
  152 + {
  153 + notaAsesMenorIgual_10++;
  154 +
  155 + }else if(notaConvertidaAses > 10 && notaConvertidaAses <= 20)
  156 + {
  157 + notaAsesMaior_10_menorIgual_20++;
  158 +
  159 + }else if(notaConvertidaAses > 20 && notaConvertidaAses <= 30)
  160 + {
  161 + notaAsesMaior_20_menorIgual_30++;
  162 +
  163 + }else if(notaConvertidaAses > 30 && notaConvertidaAses <= 40)
  164 + {
  165 + notaAsesMaior_30_menorIgual_40++;
  166 +
  167 + }else if(notaConvertidaAses > 40 && notaConvertidaAses <= 50)
  168 + {
  169 + notaAsesMaior_40_menorIgual_50++;
  170 +
  171 + }else if(notaConvertidaAses > 50 && notaConvertidaAses <= 60)
  172 + {
  173 + notaAsesMaior_50_menorIgual_60++;
  174 +
  175 + }else if(notaConvertidaAses > 60 && notaConvertidaAses <= 70)
  176 + {
  177 + notaAsesMaior_60_menorIgual_70++;
  178 +
  179 + }else if(notaConvertidaAses > 70 && notaConvertidaAses <= 80)
  180 + {
  181 + notaAsesMaior_70_menorIgual_80++;
  182 +
  183 + }else if(notaConvertidaAses > 80 && notaConvertidaAses <= 90)
  184 + {
  185 + notaAsesMaior_80_menorIgual_90++;
  186 +
  187 + }else if(notaConvertidaAses > 90 && notaConvertidaAses < 100)
  188 + {
  189 + notaAsesMaior_90_menor_100++;
  190 +
  191 + }else if(notaConvertidaAses == 100)
  192 + {
  193 + notaAsesIgual_100++;
  194 + }
  195 + }
  196 + } catch (SQLException e) {
  197 + e.printStackTrace();
  198 + }
  199 + }
  200 +
  201 +
  202 + result.include("notaAsesMenorIgual_10", notaAsesMenorIgual_10);
  203 + result.include("notaAsesMaior_10_menorIgual_20", notaAsesMaior_10_menorIgual_20);
  204 + result.include("notaAsesMaior_20_menorIgual_30", notaAsesMaior_20_menorIgual_30);
  205 + result.include("notaAsesMaior_30_menorIgual_40", notaAsesMaior_30_menorIgual_40);
  206 + result.include("notaAsesMaior_40_menorIgual_50", notaAsesMaior_40_menorIgual_50);
  207 + result.include("notaAsesMaior_50_menorIgual_60", notaAsesMaior_50_menorIgual_60);
  208 + result.include("notaAsesMaior_60_menorIgual_70", notaAsesMaior_60_menorIgual_70);
  209 + result.include("notaAsesMaior_70_menorIgual_80", notaAsesMaior_70_menorIgual_80);
  210 + result.include("notaAsesMaior_80_menorIgual_90", notaAsesMaior_80_menorIgual_90);
  211 + result.include("notaAsesMaior_90_menor_100", notaAsesMaior_90_menor_100);
  212 + result.include("notaAsesIgual_100", notaAsesIgual_100);
  213 + result.include("totalAmbientes", totalAmbientes);
  214 +
  215 + //Notas AccessMonitor
  216 + rset = painelDao.retornarTotalNotas(path, 64);
  217 +
  218 + int notaAccessMonitorMenorIgual_1 = 0;
  219 + int notaAccessMonitorMaior_1_menorIgual_2 = 0;
  220 + int notaAccessMonitorMaior_2_menorIgual_3 = 0;
  221 + int notaAccessMonitorMaior_3_menorIgual_4 = 0;
  222 + int notaAccessMonitorMaior_4_menorIgual_5 = 0;
  223 + int notaAccessMonitorMaior_5_menorIgual_6 = 0;
  224 + int notaAccessMonitorMaior_6_menorIgual_7 = 0;
  225 + int notaAccessMonitorMaior_7_menorIgual_8 = 0;
  226 + int notaAccessMonitorMaior_8_menorIgual_9 = 0;
  227 + int notaAccessMonitorMaior_9_menor_10 = 0;
  228 + int notaAccessMonitorIgual_10 = 0;
  229 +
  230 +
  231 + Double notaConvertidaAccessMonitor;
  232 +
  233 + if(rset != null)
  234 + {
  235 + try {
  236 + while (rset.next()) {
  237 + notaConvertidaAccessMonitor = Double.parseDouble(rset.getString("texto_resposta").replace(",", "."));
  238 + totalAmbientes++;
  239 +
  240 + if(notaConvertidaAccessMonitor <= 1)
  241 + {
  242 + notaAccessMonitorMenorIgual_1++;
  243 +
  244 + }else if(notaConvertidaAccessMonitor > 2 && notaConvertidaAccessMonitor <= 3)
  245 + {
  246 + notaAccessMonitorMaior_1_menorIgual_2++;
  247 +
  248 + }else if(notaConvertidaAccessMonitor > 3 && notaConvertidaAccessMonitor <= 4)
  249 + {
  250 + notaAccessMonitorMaior_3_menorIgual_4++;
  251 +
  252 + }else if(notaConvertidaAccessMonitor > 4 && notaConvertidaAccessMonitor <= 5)
  253 + {
  254 + notaAccessMonitorMaior_4_menorIgual_5++;
  255 +
  256 + }else if(notaConvertidaAccessMonitor > 5 && notaConvertidaAccessMonitor <= 6)
  257 + {
  258 + notaAccessMonitorMaior_5_menorIgual_6++;
  259 +
  260 + }else if(notaConvertidaAccessMonitor > 6 && notaConvertidaAccessMonitor <= 7)
  261 + {
  262 + notaAccessMonitorMaior_6_menorIgual_7++;
  263 +
  264 + }else if(notaConvertidaAccessMonitor > 7 && notaConvertidaAccessMonitor <= 8)
  265 + {
  266 + notaAccessMonitorMaior_7_menorIgual_8++;
  267 +
  268 + }else if(notaConvertidaAccessMonitor > 8 && notaConvertidaAccessMonitor <= 9)
  269 + {
  270 + notaAccessMonitorMaior_8_menorIgual_9++;
  271 +
  272 + }else if(notaConvertidaAccessMonitor > 9 && notaConvertidaAccessMonitor < 10)
  273 + {
  274 + notaAccessMonitorMaior_9_menor_10++;
  275 +
  276 + }else if(notaConvertidaAccessMonitor == 10)
  277 + {
  278 + notaAccessMonitorIgual_10++;
  279 + }
  280 +
  281 + }
  282 + } catch (SQLException e) {
  283 + e.printStackTrace();
  284 + }
  285 + }
  286 +
  287 +
  288 + result.include("notaAccessMonitorMenorIgual_1", notaAccessMonitorMenorIgual_1);
  289 + result.include("notaAccessMonitorMaior_1_menorIgual_2", notaAccessMonitorMaior_1_menorIgual_2);
  290 + result.include("notaAccessMonitorMaior_2_menorIgual_3", notaAccessMonitorMaior_2_menorIgual_3);
  291 + result.include("notaAccessMonitorMaior_3_menorIgual_4", notaAccessMonitorMaior_3_menorIgual_4);
  292 + result.include("notaAccessMonitorMaior_4_menorIgual_5", notaAccessMonitorMaior_4_menorIgual_5);
  293 + result.include("notaAccessMonitorMaior_5_menorIgual_6", notaAccessMonitorMaior_5_menorIgual_6);
  294 + result.include("notaAccessMonitorMaior_6_menorIgual_7", notaAccessMonitorMaior_6_menorIgual_7);
  295 + result.include("notaAccessMonitorMaior_7_menorIgual_8", notaAccessMonitorMaior_7_menorIgual_8);
  296 + result.include("notaAccessMonitorMaior_8_menorIgual_9", notaAccessMonitorMaior_8_menorIgual_9);
  297 + result.include("notaAccessMonitorMaior_2_menorIgual_3", notaAccessMonitorMaior_2_menorIgual_3);
  298 + result.include("notaAccessMonitorMaior_9_menor_10", notaAccessMonitorMaior_9_menor_10);
  299 + result.include("notaAccessMonitorIgual_10", notaAccessMonitorIgual_10);
  300 +
  301 + }
  302 +
  303 +}
... ...
src/br/com/controller/PlanoTrabalhoController.java
... ... @@ -28,585 +28,607 @@ import br.com.model.utilities.Email;
28 28 import br.com.util.DateUtil;
29 29 import br.com.util.Validacao;
30 30  
31   -
32 31 @Resource
33 32 public class PlanoTrabalhoController extends DefaultMultipartConfig {
34 33  
35   - private List<Validacao> mensagemValidacaoCampos = new ArrayList<Validacao>();
36   - private Validator validator;
37   - private Result result;
38   - private ServletContext application;
39   - private String path;
40   -
41   - public PlanoTrabalhoController(Result result, Validator validator, ServletContext application) {
42   - this.validator = validator;
43   - this.application = application;
44   - this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties";
45   - this.result = result;
46   - }
47   -
48   - // alteramos o tamanho total do upload para 50MB
49   - public long getSizeLimit() {
50   - return 50 * 1024 * 1024;
51   - }
52   -
53   - @Path("/planoTrabalho-site")
54   - public void planoTrabalho() {
55   -
56   - Questionario questionario = new Questionario();
57   -
58   - questionario = (Questionario) VRaptorRequestHolder.currentRequest().getServletContext()
59   - .getAttribute("questionario");
60   -
61   - if(questionario == null)
62   - {
63   - Validacao validacao = new Validacao();
64   - validacao.setCampo("valorHash");
65   - validacao.setMensagem("ATENÇÃO: Você precisa estar logado para anexar os documentos.");
66   -
67   - mensagemValidacaoCampos.add(validacao);
68   -
69   - result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
70   - this.validator.add(new ValidationMessage("", ""));
71   - this.validator.onErrorUsePageOf(loginController.class).login();
72   -
73   - }
74   - else
75   - {
76   - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
77   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
78   -
79   - planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
80   -
81   - result.include("planoTrabalho", planoTrabalho);
82   - }
83   -
84   - }
85   -
86   - @Path("/plano-trabalho-confirmacao")
87   - public void planoTrabalhoConfirmacao() {
88   -
89   - }
90   -
91   -
92   - @Path("/salvar-plano-trabalho")
93   - public void enviarPlanoTrabalho(String valorHash, UploadedFile filePlano,
94   - UploadedFile fileRelatorio) {
95   -
96   - String mensagemPlano = null;
97   - String mensagemRelatorio = null;
98   - boolean statusPlano = false;
99   - boolean statusRelatorio = false;
100   - boolean existeRelatorioAnexado = false;
101   - Questionario questionario = new Questionario();
102   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
103   - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
104   -
105   - if (filePlano != null) {
106   - String tipoArquivo = filePlano.getContentType();
107   -
108   -
109   - if (!tipoArquivo.equalsIgnoreCase("application/msword")
110   - && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel")
111   - && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text")
112   - && !tipoArquivo.equalsIgnoreCase("text/plain")
113   - && !tipoArquivo.equalsIgnoreCase("application/pdf")
114   - && !tipoArquivo.equalsIgnoreCase("image/png")
115   - && !tipoArquivo.equalsIgnoreCase("image/gif")
116   - && !tipoArquivo.equalsIgnoreCase("image/jpeg")
117   - && !tipoArquivo.equalsIgnoreCase("application/zip")
118   - && !tipoArquivo.equalsIgnoreCase("application/x-rar-compressed")
119   - && !tipoArquivo.equalsIgnoreCase("application/octet-stream")) {
120   -
121   - mensagemPlano = "Formato de Arquivo para plano de trabalho inválido!";
122   - statusPlano = false;
123   -
124   - } else {
125   - HashDao hashDao = new HashDao();
126   - questionario = new Questionario();
127   - questionario = hashDao.verificarHash(path, valorHash);
128   - String nomeExtensaoPlanoTrabalho = filePlano.getContentType();
129   -
130   - if (questionario != null && questionario.getDtInicioQuestionario() != null) {
131   - planoTrabalhoDao = new PlanoTrabalhoDao();
132   -
133   - planoTrabalho =
134   - planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
135   -
136   - if (planoTrabalho.getIdPlanoTrabalho() == 0) {
137   - if (planoTrabalhoDao.salvarPlanoTrabalho(path, filePlano.getFile(), questionario,
138   - filePlano.getFileName(), nomeExtensaoPlanoTrabalho)) {
139   - mensagemPlano = "Plano de trabalho anexado com sucesso!";
140   - statusPlano = true;
141   - } else {
142   - mensagemPlano = "Não foi possível anexar o plano de trabalho!";
143   - }
144   - } else {
145   - if (planoTrabalhoDao.atualizarPlanoTrabalho(path, filePlano.getFile(), questionario,
146   - planoTrabalho.getIdPlanoTrabalho(), filePlano.getFileName(),nomeExtensaoPlanoTrabalho)) {
147   - mensagemPlano = "Plano de trabalho anexado com sucesso!";
148   - statusPlano = true;
149   - } else {
150   - mensagemPlano = "Não foi possível anexar o plano de trabalho!";
151   - }
152   - }
153   -
154   - } else {
155   - mensagemPlano = "Favor verificar o Código de Acesso!";
156   - }
157   -
158   - }
159   -
160   -
161   - result.include("mensagemPlano", mensagemPlano);
162   - result.include("statusPlano", statusPlano);
163   -
164   - }
165   -
166   -
167   - // /Relatório Assinado
168   -
169   - if (fileRelatorio != null) {
170   - String tipoArquivo = fileRelatorio.getContentType();
171   -
172   - if (!tipoArquivo.equalsIgnoreCase("application/msword")
173   - && !tipoArquivo.equalsIgnoreCase("application/vnd.ms-excel")
174   - && !tipoArquivo.equalsIgnoreCase("application/vnd.oasis.opendocument.text")
175   - && !tipoArquivo.equalsIgnoreCase("text/plain")
176   - && !tipoArquivo.equalsIgnoreCase("application/pdf")
177   - && !tipoArquivo.equalsIgnoreCase("image/png")
178   - && !tipoArquivo.equalsIgnoreCase("image/gif")
179   - && !tipoArquivo.equalsIgnoreCase("image/jpeg")
180   - && !tipoArquivo.equalsIgnoreCase("application/zip")
181   - && !tipoArquivo.equalsIgnoreCase("application/x-rar-compressed")
182   - && !tipoArquivo.equalsIgnoreCase("application/octet-stream")) {
183   -
184   - mensagemRelatorio = "Formato de Arquivo para Relatório é inválido!";
185   - statusRelatorio = false;
186   -
187   - } else {
188   - HashDao hashDao = new HashDao();
189   - questionario = new Questionario();
190   - questionario = hashDao.verificarHash(path, valorHash);
191   - String nomeExtensaoRelatorio = fileRelatorio.getContentType();
192   -
193   - if (questionario != null && questionario.getDtInicioQuestionario() != null) {
194   - planoTrabalhoDao = new PlanoTrabalhoDao();
195   - planoTrabalho = new PlanoTrabalho();
196   -
197   - planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
198   -
199   - if (planoTrabalho.getIdPlanoTrabalho() == 0) {
200   - if (planoTrabalhoDao.salvarRelatorioAss(path, fileRelatorio.getFile(), questionario,
201   - fileRelatorio.getFileName(), nomeExtensaoRelatorio)) {
202   - mensagemRelatorio = "FAD anexado com sucesso!";
203   - existeRelatorioAnexado = true;
204   - statusRelatorio = true;
205   - } else {
206   - mensagemRelatorio = "Não foi possível anexar o FAD!";
207   - }
208   - } else {
209   - if (planoTrabalhoDao.atualizarRelatorioAss(path, fileRelatorio.getFile(), questionario,
210   - planoTrabalho.getIdPlanoTrabalho(), fileRelatorio.getFileName(), nomeExtensaoRelatorio)) {
211   - mensagemRelatorio = "FAD anexado com sucesso!";
212   - statusRelatorio = true;
213   - } else {
214   - mensagemRelatorio = "Não foi possível anexar o FAD!";
215   - }
216   - }
217   -
218   - } else {
219   - mensagemRelatorio = "Favor verificar o Código de Acesso!";
220   - }
221   -
222   - }
223   -
224   -
225   -
226   - result.include("mensagemRelatorio", mensagemRelatorio);
227   - result.include("statusRelatorio", statusRelatorio);
228   - VRaptorRequestHolder.currentRequest().getServletContext()
229   - .setAttribute("questionario", questionario);
230   - VRaptorRequestHolder.currentRequest().getServletContext()
231   - .setAttribute("fileRelatorio", fileRelatorio);
232   - }
233   -
234   - planoTrabalho =
235   - planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
236   -
237   - if(planoTrabalho.getArquivoRelatorioAss() != null && planoTrabalho.getArquivoPlanoTrabalho() != null)
238   - {
239   - existeRelatorioAnexado = true;
240   - }
241   -
242   - result.include("existeRelatorioAnexado", existeRelatorioAnexado);
243   -
244   - if (filePlano == null && fileRelatorio == null) {
245   - mensagemPlano = "Não foi possível anexar o Plano de Trabalho!";
246   - mensagemRelatorio = "Não foi possível anexar o FAD!";
247   - result.include("mensagemPlano", mensagemPlano);
248   - result.include("statusPlano", statusPlano);
249   - result.include("mensagemRelatorio", mensagemRelatorio);
250   - result.include("statusRelatorio", statusRelatorio);
251   - }
252   -
253   - formularioOrgaoController formularioOrgao = new formularioOrgaoController();
254   -
255   - HashDao hashDao = new HashDao();
256   - Questionario novoQuestionario = new Questionario();
257   -
258   - novoQuestionario = hashDao.verificarQuestionario(path ,questionario.getIdQuestionario());
259   -
260   - verificarPosicaoUsuario(novoQuestionario);
261   -
262   - this.validator.add(new ValidationMessage("", ""));
263   - this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).planoTrabalhoConfirmacao();
264   - }
265   -
266   - @Get("/recuperar-plano-trabalho/{id}")
267   - public void recuperarPlanoTrabalho(int id, HttpServletResponse response) throws IOException {
268   -
269   - Questionario questionario = new Questionario(path, id);
270   -
271   - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
272   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
273   -
274   - byte[] dados = null;
275   -
276   - if (questionario != null && questionario.getIdQuestionario() > 0) {
277   - planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
278   -
279   - if (planoTrabalho != null && planoTrabalho.getArquivoPlanoTrabalho() != null) {
280   - try {
281   - String nome = planoTrabalho.getNomePlanoTrabalho();
282   - dados = planoTrabalho.getArquivoPlanoTrabalho();
283   - response.setContentType("inline/download");
284   - String arq = "attachment;filename=" + nome;
285   - response.setHeader("Content-Disposition", arq);
286   - ServletOutputStream os = response.getOutputStream();
287   - os.write(dados);
288   - os.flush();
289   - os.close();
290   - } catch (Exception e) {
291   -
292   - }
293   - }
294   - else
295   - {
296   - this.validator.add(new ValidationMessage("", ""));
297   - this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
298   - }
299   - }
300   - else
301   - {
302   - this.validator.add(new ValidationMessage("", ""));
303   - this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
304   - }
305   - }
306   -
307   - @Get("/recuperar-relatorio/{id}")
308   - public void recuperarRelatorio(int id, HttpServletResponse response) throws IOException {
309   -
310   - Questionario questionario = new Questionario(path, id);
311   -
312   - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
313   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
314   -
315   - byte[] dados = null;
316   -
317   - if (questionario != null && questionario.getIdQuestionario() > 0) {
318   - planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
319   -
320   - if (planoTrabalho != null && planoTrabalho.getArquivoRelatorioAss() != null) {
321   - try {
322   - String nome = planoTrabalho.getNomeRelatorioAss();
323   - dados = planoTrabalho.getArquivoRelatorioAss();
324   - response.setContentType("inline/download");
325   - String arq = "attachment;filename=" + nome;
326   - response.setHeader("Content-Disposition", arq);
327   - ServletOutputStream os = response.getOutputStream();
328   - os.write(dados);
329   - os.flush();
330   - os.close();
331   - } catch (Exception e) {
332   -
333   - }
334   - }
335   - else
336   - {
337   - this.validator.add(new ValidationMessage("", ""));
338   - this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
339   - }
340   - }
341   - else
342   - {
343   - this.validator.add(new ValidationMessage("", ""));
344   - this.validator.onErrorUsePageOf(QuestionarioController.class).listaQuestionario();
345   - }
346   - }
347   -
348   - @Path("/enviar-relatorio")
349   - public void enviarRelatorioPlanoTrabalho() {
350   -
351   - Questionario questionario = new Questionario();
352   -
353   - questionario = (Questionario) VRaptorRequestHolder.currentRequest().getServletContext()
354   - .getAttribute("questionario");
355   -
356   - if(questionario == null)
357   - {
358   - Validacao validacao = new Validacao();
359   - validacao.setCampo("valorHash");
360   - validacao.setMensagem("ATENÇÃO: Você precisa estar logado para enviar Relatório à PFDC/MPF.");
361   -
362   - mensagemValidacaoCampos.add(validacao);
363   -
364   - result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
365   - this.validator.add(new ValidationMessage("", ""));
366   - this.validator.onErrorUsePageOf(loginController.class).login();
367   -
368   - }
369   - }
370   -
371   - private void enviarEmail(Questionario questionario) {
372   - QuestionarioDao questionarioDao;
373   -
374   - StringBuffer mensagemMPF = new StringBuffer();
375   - StringBuffer mensagemOrgao = new StringBuffer();
376   - String assuntoMPF = "";
377   - String assuntoOrgao = "";
378   -
379   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
380   - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
381   -
382   - planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
383   -
384   - if(planoTrabalho != null && planoTrabalho.getArquivoPlanoTrabalho() != null && planoTrabalho.getArquivoRelatorioAss() != null)
385   - {
386   - DataHandler dataHandlerRelatorio;
387   - DataHandler dataHandlerPlano;
388   -
389   - dataHandlerRelatorio =
390   - new DataHandler(planoTrabalho.getArquivoRelatorioAss(),
391   - planoTrabalho.getNomeExtensaoRelatorioAss());
392   - dataHandlerPlano =
393   - new DataHandler(planoTrabalho.getArquivoPlanoTrabalho(),
394   - planoTrabalho.getNomeExtensaoPlanoTrabalho());
395   -
396   - Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties");
397   -
398   - EnvioEmailSemAutenticacao envioEmailSemAutenticacao =
399   - new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort()));
400   -
401   - assuntoMPF = "Registro de Encaminhamento do Relatório Circunstanciado de Acessibilidade Digital - " + questionario.getNoOrgao();
402   -
403   - mensagemMPF.append("À Procuradoria Federal dos Diretos do Cidadão,<br>");
404   - mensagemMPF.append("<p>O(A) " + questionario.getNoOrgao() +" encaminha o Relatório Circunstanciado relativo aos ambientes digitais desta instituição.</p>");
405   -
406   - mensagemMPF.append("Dados do Responsável:<br>");
407   - mensagemMPF.append("Nome: " + questionario.getResponsavel() +"<br>");
408   - mensagemMPF.append("Cargo: "+ questionario.getCargoResponsavel() + "<br>");
409   - mensagemMPF.append("Telefone: " + questionario.getTelefone() + "<br>");
410   - mensagemMPF.append("email: "+ questionario.getEmailDestinoOrgao() + "<br>");
411   - mensagemMPF.append("<p>Brasília, "+ DateUtil.dataHoraAtual() +".</p>");
412   - mensagemMPF.append("<p>Encaminhado por:</p>");
413   - mensagemMPF.append("<p><a href=\"http://fad.governoeletronico.gov.br​\">http://fad.governoeletronico.gov.br​</a></p>");
414   - mensagemMPF.append("<p>Coordenação-Geral de Padrões de Governo Digital</p>");
415   - mensagemMPF.append("<p>Departamento de Governo Digital</p>");
416   - mensagemMPF.append("<p>Secretaria de Tecnologia da Informação</p>");
417   - mensagemMPF.append("<p>Ministério do Planejamento, Desenvolvimento e Gestão</p>");
418   -
419   - String mensagemRetornoMPF =
420   - envioEmailSemAutenticacao.sendMailComAnexo(questionario.getEmailDestinoOrgao(),
421   - email.getAnexosTo(), assuntoMPF, mensagemMPF.toString(), email.getAuth(), email.getAuthUser(),
422   - email.getAuthPass(), dataHandlerRelatorio, planoTrabalho.getNomeRelatorioAss(),
423   - dataHandlerPlano, planoTrabalho.getNomePlanoTrabalho());
424   -
425   -
426   -
427   - if (mensagemRetornoMPF.equalsIgnoreCase("")) {
428   -
429   -
430   - assuntoOrgao = "Registro de Encaminhamento do Relatório Circunstanciado de Acessibilidade Digital - " + questionario.getNoOrgao();
431   -
432   - mensagemOrgao.append("<p>Prezado(a) "+ questionario.getResponsavel() +", "+ questionario.getCargoResponsavel() +" do "+ questionario.getNoOrgao() +", você concluiu com sucesso o processo de ");
433   - mensagemOrgao.append("envio do Relatório Circunstanciado (Formulário Eletrônico de Acessibilidade Digital e ");
434   - mensagemOrgao.append("Plano de Trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério ");
435   - mensagemOrgao.append("Público Federal.</p>");
436   - mensagemOrgao.append("<p>Além do envio, o relatório circunstanciado deverá ser publicado no portal do órgão/entidade e o seu ");
437   - mensagemOrgao.append("reporte , na forma de síntese, deverá ser registrado na seção \"Medidas Relativas à Acessibilidade\" do ");
438   - mensagemOrgao.append("Relatório de Gestão referente a 2016 e, nos anos subsequentes, indicar nessa seção o monitoramento ");
439   - mensagemOrgao.append("das metas propostas nos planos de trabalho.</p> ");
440   - 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>");
441   - mensagemOrgao.append("<p>Brasília, "+ DateUtil.dataHoraAtual() +".</p>");
442   - mensagemOrgao.append("<p>Encaminhado por:</p>");
443   - mensagemOrgao.append("<p><a href=\"http://fad.governoeletronico.gov.br​\">http://fad.governoeletronico.gov.br​</a></p>");
444   - mensagemOrgao.append("<p>Coordenação-Geral de Padrões de Governo Digital</p>");
445   - mensagemOrgao.append("<p>Departamento de Governo Digital</p>");
446   - mensagemOrgao.append("<p>Secretaria de Tecnologia da Informação</p>");
447   - mensagemOrgao.append("<p>Ministério do Planejamento, Desenvolvimento e Gestão</p>");
448   -
449   -
450   - String mensagemRetornoOrgao =
451   - envioEmailSemAutenticacao.sendMailComAnexo(email.getFrom(),
452   - questionario.getEmailDestinoOrgao(), assuntoOrgao, mensagemOrgao.toString(), email.getAuth(),
453   - email.getAuthUser(), email.getAuthPass(), dataHandlerRelatorio,
454   - planoTrabalho.getNomeRelatorioAss(), dataHandlerPlano,
455   - planoTrabalho.getNomePlanoTrabalho());
456   -
457   -
458   - if (mensagemRetornoOrgao.equalsIgnoreCase("")) {
459   -
460   - questionarioDao = new QuestionarioDao();
461   -
462   - if (questionarioDao.atualizarFlagEnviado(path, questionario.getIdQuestionario())) {
463   -
464   - result.include("mensagemEnvio",
465   - "Mensagem enviada com Sucesso, você recebeu um email com os anexos!");
466   -
467   - result.include("statusEnvio", true);
468   - }
469   - }
470   - } else {
471   - result.include("mensagemEnvio", "Não foi possível enviar o email com os anexos!");
472   - result.include("statusEnvio", false);
473   - }
474   - }else
475   - {
476   - result.include("mensagemEnvio", "É preciso ter o Relatório e o Plano de Trabalho anexados!");
477   - result.include("statusEnvio", false);
478   - }
479   -
480   - HashDao hashDao = new HashDao();
481   - Questionario novoQuestionario = new Questionario();
482   -
483   - novoQuestionario = hashDao.verificarQuestionario(path ,questionario.getIdQuestionario());
484   -
485   - verificarPosicaoUsuario(novoQuestionario);
486   - this.validator.add(new ValidationMessage("", ""));
487   - this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).confirmacaoEnvioEmailMPF();
488   - }
489   -
490   - @Path("/enviar-email-mpf-alternativo")
491   - public void enviarEmailMPFAlternativo(String valorHash) {
492   -
493   - Validacao validacao = new Validacao();
494   - mensagemValidacaoCampos = new ArrayList<Validacao>();
495   - mensagemValidacaoCampos = validacao.validarHash(path, valorHash);
496   -
497   - if (mensagemValidacaoCampos.size() > 0) {
498   - result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
499   - this.validator.add(new ValidationMessage("", ""));
500   - this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).enviarRelatorioPlanoTrabalho();
501   - }
502   -
503   - HashDao hashDao = new HashDao();
504   - Questionario questionario = new Questionario();
505   - questionario = hashDao.verificarHash(path, valorHash);
506   -
507   -
508   - if (questionario != null && questionario.getIdQuestionario() > 0) {
509   -
510   - if(questionario.isFlagEnviado())
511   - {
512   - result.include("mensagemEnvio", "O Relatório já foi enviado para MPF!");
513   - result.include("statusEnvio", false);
514   -
515   - this.validator.add(new ValidationMessage("", ""));
516   - this.validator.onErrorUsePageOf(PlanoTrabalhoController.class).confirmacaoEnvioEmailMPF();
517   - }
518   - else
519   - {
520   - enviarEmail(questionario);
521   - }
522   -
523   -
524   - }
525   -
526   - }
527   -
528   -
529   - @Path("/enviar-email-mpf")
530   - public void enviarEmailMPF() {
531   - Questionario questionario = new Questionario();
532   -
533   - questionario =
534   - (Questionario) VRaptorRequestHolder.currentRequest().getServletContext()
535   - .getAttribute("questionario");
536   -
537   - if (questionario != null && questionario.getIdQuestionario() > 0) {
538   -
539   - enviarEmail(questionario);
540   -
541   -
542   - }
543   -
544   - }
545   -
546   - public void verificarPosicaoUsuario(Questionario questionario)
547   - {
548   - PlanoTrabalho planoTrabalho = new PlanoTrabalho();
549   - PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
550   -
551   - //Solicitou código de Acesso?
552   - VRaptorRequestHolder.currentRequest().getServletContext()
553   - .setAttribute("nivel_01", true);
554   -
555   - //Respondeu FAD?
556   - if(questionario.isQuestionario_respondido())
557   - {
558   - VRaptorRequestHolder.currentRequest().getServletContext()
559   - .setAttribute("nivel_02", true);
560   - }
561   - else
562   - {
563   - VRaptorRequestHolder.currentRequest().getServletContext()
564   - .setAttribute("nivel_02", false);
565   - }
566   -
567   - planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path, questionario);
568   -
569   - //Anexou Fad?
570   - if(planoTrabalho.getArquivoRelatorioAss() != null)
571   - {
572   - VRaptorRequestHolder.currentRequest().getServletContext()
573   - .setAttribute("nivel_03", true);
574   - }
575   - else
576   - {
577   - VRaptorRequestHolder.currentRequest().getServletContext()
578   - .setAttribute("nivel_03", false);
579   - }
580   -
581   - //Anexou Plano de Trabalho?
582   - if(planoTrabalho.getArquivoPlanoTrabalho() != null)
583   - {
584   - VRaptorRequestHolder.currentRequest().getServletContext()
585   - .setAttribute("nivel_04", true);
586   - }
587   - else
588   - {
589   - VRaptorRequestHolder.currentRequest().getServletContext()
590   - .setAttribute("nivel_04", false);
591   - }
592   -
593   - //Processo finalizado?
594   - if(questionario.isFlagEnviado())
595   - {
596   - VRaptorRequestHolder.currentRequest().getServletContext()
597   - .setAttribute("nivel_05", true);
598   - }
599   - else
600   - {
601   - VRaptorRequestHolder.currentRequest().getServletContext()
602   - .setAttribute("nivel_05", false);
603   - }
604   -
605   - }
606   -
607   - public void confirmacaoEnvioEmailMPF() {
608   -
609   - }
610   -
611   -
  34 + private List<Validacao> mensagemValidacaoCampos = new ArrayList<Validacao>();
  35 + private Validator validator;
  36 + private Result result;
  37 + private ServletContext application;
  38 + private String path;
  39 +
  40 + public PlanoTrabalhoController(Result result, Validator validator,
  41 + ServletContext application) {
  42 + this.validator = validator;
  43 + this.application = application;
  44 + this.path = this.application.getRealPath("")
  45 + + "/WEB-INF/conexao.properties";
  46 + this.result = result;
  47 + }
  48 +
  49 + // alteramos o tamanho total do upload para 50MB
  50 + public long getSizeLimit() {
  51 + return 50 * 1024 * 1024;
  52 + }
  53 +
  54 + @Path("/planoTrabalho-site")
  55 + public void planoTrabalho() {
  56 +
  57 + Questionario questionario = new Questionario();
  58 +
  59 + questionario = (Questionario) VRaptorRequestHolder.currentRequest()
  60 + .getServletContext().getAttribute("questionario");
  61 +
  62 + if (questionario == null) {
  63 + Validacao validacao = new Validacao();
  64 + validacao.setCampo("valorHash");
  65 + validacao
  66 + .setMensagem("ATEN��O: Voc� precisa estar logado para anexar os documentos.");
  67 +
  68 + mensagemValidacaoCampos.add(validacao);
  69 +
  70 + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  71 + this.validator.add(new ValidationMessage("", ""));
  72 + this.validator.onErrorUsePageOf(loginController.class).login();
  73 +
  74 + } else {
  75 + if (!questionario.isQuestionario_respondido()) {
  76 + Validacao validacao = new Validacao();
  77 + validacao.setCampo("valorHash");
  78 + validacao
  79 + .setMensagem("ATEN��O: � preciso responder o FAD antes de anexar os arquivos.");
  80 +
  81 + mensagemValidacaoCampos.add(validacao);
  82 +
  83 + result.include("mensagemValidacaoCampos",
  84 + mensagemValidacaoCampos);
  85 + this.validator.add(new ValidationMessage("", ""));
  86 + this.validator.onErrorUsePageOf(loginController.class).login();
  87 + } else {
  88 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  89 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  90 +
  91 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path,
  92 + questionario);
  93 +
  94 + result.include("planoTrabalho", planoTrabalho);
  95 + }
  96 + }
  97 + }
  98 +
  99 + @Path("/plano-trabalho-confirmacao")
  100 + public void planoTrabalhoConfirmacao() {
  101 +
  102 + }
  103 +
  104 + @Path("/salvar-plano-trabalho")
  105 + public void enviarPlanoTrabalho(String valorHash, UploadedFile filePlano,
  106 + UploadedFile fileRelatorio) {
  107 +
  108 + String mensagemPlano = null;
  109 + String mensagemRelatorio = null;
  110 + boolean statusPlano = false;
  111 + boolean statusRelatorio = false;
  112 + boolean existeRelatorioAnexado = false;
  113 + Questionario questionario = new Questionario();
  114 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  115 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  116 +
  117 + if (filePlano != null) {
  118 + String tipoArquivo = filePlano.getContentType();
  119 +
  120 + if (!tipoArquivo.equalsIgnoreCase("application/msword")
  121 + && !tipoArquivo
  122 + .equalsIgnoreCase("application/vnd.ms-excel")
  123 + && !tipoArquivo
  124 + .equalsIgnoreCase("application/vnd.oasis.opendocument.text")
  125 + && !tipoArquivo.equalsIgnoreCase("text/plain")
  126 + && !tipoArquivo.equalsIgnoreCase("application/pdf")
  127 + && !tipoArquivo.equalsIgnoreCase("image/png")
  128 + && !tipoArquivo.equalsIgnoreCase("image/gif")
  129 + && !tipoArquivo.equalsIgnoreCase("image/jpeg")
  130 + && !tipoArquivo.equalsIgnoreCase("application/zip")
  131 + && !tipoArquivo
  132 + .equalsIgnoreCase("application/x-rar-compressed")
  133 + && !tipoArquivo
  134 + .equalsIgnoreCase("application/octet-stream")) {
  135 +
  136 + mensagemPlano = "Formato de Arquivo para plano de trabalho inválido!";
  137 + statusPlano = false;
  138 +
  139 + } else {
  140 + HashDao hashDao = new HashDao();
  141 + questionario = new Questionario();
  142 + questionario = hashDao.verificarHash(path, valorHash);
  143 + String nomeExtensaoPlanoTrabalho = filePlano.getContentType();
  144 +
  145 + if (questionario != null
  146 + && questionario.getDtInicioQuestionario() != null) {
  147 + planoTrabalhoDao = new PlanoTrabalhoDao();
  148 +
  149 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(
  150 + path, questionario);
  151 +
  152 + if (planoTrabalho.getIdPlanoTrabalho() == 0) {
  153 + if (planoTrabalhoDao.salvarPlanoTrabalho(path,
  154 + filePlano.getFile(), questionario,
  155 + filePlano.getFileName(),
  156 + nomeExtensaoPlanoTrabalho)) {
  157 + mensagemPlano = "Plano de trabalho anexado com sucesso!";
  158 + statusPlano = true;
  159 + } else {
  160 + mensagemPlano = "N�o foi poss�vel anexar o plano de trabalho!";
  161 + }
  162 + } else {
  163 + if (planoTrabalhoDao.atualizarPlanoTrabalho(path,
  164 + filePlano.getFile(), questionario,
  165 + planoTrabalho.getIdPlanoTrabalho(),
  166 + filePlano.getFileName(),
  167 + nomeExtensaoPlanoTrabalho)) {
  168 + mensagemPlano = "Plano de trabalho anexado com sucesso!";
  169 + statusPlano = true;
  170 + } else {
  171 + mensagemPlano = "N�o foi poss�vel anexar o plano de trabalho!";
  172 + }
  173 + }
  174 +
  175 + } else {
  176 + mensagemPlano = "Favor verificar o C�digo de Acesso!";
  177 + }
  178 +
  179 + }
  180 +
  181 + result.include("mensagemPlano", mensagemPlano);
  182 + result.include("statusPlano", statusPlano);
  183 +
  184 + }
  185 +
  186 + // /Relatório Assinado
  187 +
  188 + if (fileRelatorio != null) {
  189 + String tipoArquivo = fileRelatorio.getContentType();
  190 +
  191 + if (!tipoArquivo.equalsIgnoreCase("application/msword")
  192 + && !tipoArquivo
  193 + .equalsIgnoreCase("application/vnd.ms-excel")
  194 + && !tipoArquivo
  195 + .equalsIgnoreCase("application/vnd.oasis.opendocument.text")
  196 + && !tipoArquivo.equalsIgnoreCase("text/plain")
  197 + && !tipoArquivo.equalsIgnoreCase("application/pdf")
  198 + && !tipoArquivo.equalsIgnoreCase("image/png")
  199 + && !tipoArquivo.equalsIgnoreCase("image/gif")
  200 + && !tipoArquivo.equalsIgnoreCase("image/jpeg")
  201 + && !tipoArquivo.equalsIgnoreCase("application/zip")
  202 + && !tipoArquivo
  203 + .equalsIgnoreCase("application/x-rar-compressed")
  204 + && !tipoArquivo
  205 + .equalsIgnoreCase("application/octet-stream")) {
  206 +
  207 + mensagemRelatorio = "Formato de Arquivo para Relat�rio � inv�lido!";
  208 + statusRelatorio = false;
  209 +
  210 + } else {
  211 + HashDao hashDao = new HashDao();
  212 + questionario = new Questionario();
  213 + questionario = hashDao.verificarHash(path, valorHash);
  214 + String nomeExtensaoRelatorio = fileRelatorio.getContentType();
  215 +
  216 + if (questionario != null
  217 + && questionario.getDtInicioQuestionario() != null) {
  218 + planoTrabalhoDao = new PlanoTrabalhoDao();
  219 + planoTrabalho = new PlanoTrabalho();
  220 +
  221 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(
  222 + path, questionario);
  223 +
  224 + if (planoTrabalho.getIdPlanoTrabalho() == 0) {
  225 + if (planoTrabalhoDao.salvarRelatorioAss(path,
  226 + fileRelatorio.getFile(), questionario,
  227 + fileRelatorio.getFileName(),
  228 + nomeExtensaoRelatorio)) {
  229 + mensagemRelatorio = "FAD anexado com sucesso!";
  230 + existeRelatorioAnexado = true;
  231 + statusRelatorio = true;
  232 + } else {
  233 + mensagemRelatorio = "N�o foi poss�vel anexar o FAD!";
  234 + }
  235 + } else {
  236 + if (planoTrabalhoDao.atualizarRelatorioAss(path,
  237 + fileRelatorio.getFile(), questionario,
  238 + planoTrabalho.getIdPlanoTrabalho(),
  239 + fileRelatorio.getFileName(),
  240 + nomeExtensaoRelatorio)) {
  241 + mensagemRelatorio = "FAD anexado com sucesso!";
  242 + statusRelatorio = true;
  243 + } else {
  244 + mensagemRelatorio = "N�o foi poss�vel anexar o FAD!";
  245 + }
  246 + }
  247 +
  248 + } else {
  249 + mensagemRelatorio = "Favor verificar o C�digo de Acesso!";
  250 + }
  251 +
  252 + }
  253 +
  254 + result.include("mensagemRelatorio", mensagemRelatorio);
  255 + result.include("statusRelatorio", statusRelatorio);
  256 + VRaptorRequestHolder.currentRequest().getServletContext()
  257 + .setAttribute("questionario", questionario);
  258 + VRaptorRequestHolder.currentRequest().getServletContext()
  259 + .setAttribute("fileRelatorio", fileRelatorio);
  260 + }
  261 +
  262 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path,
  263 + questionario);
  264 +
  265 + if (planoTrabalho.getArquivoRelatorioAss() != null) {
  266 + existeRelatorioAnexado = true;
  267 + }
  268 +
  269 + result.include("existeRelatorioAnexado", existeRelatorioAnexado);
  270 +
  271 + if (filePlano == null && fileRelatorio == null) {
  272 + mensagemPlano = "N�o foi poss�vel anexar o Plano de Trabalho!";
  273 + mensagemRelatorio = "N�o foi poss�vel anexar o FAD!";
  274 + result.include("mensagemPlano", mensagemPlano);
  275 + result.include("statusPlano", statusPlano);
  276 + result.include("mensagemRelatorio", mensagemRelatorio);
  277 + result.include("statusRelatorio", statusRelatorio);
  278 + }
  279 +
  280 + formularioOrgaoController formularioOrgao = new formularioOrgaoController(
  281 + result, validator, application);
  282 +
  283 + HashDao hashDao = new HashDao();
  284 + Questionario novoQuestionario = new Questionario();
  285 +
  286 + novoQuestionario = hashDao.verificarQuestionario(path,
  287 + questionario.getIdQuestionario());
  288 +
  289 + verificarPosicaoUsuario(novoQuestionario);
  290 +
  291 + this.validator.add(new ValidationMessage("", ""));
  292 + this.validator.onErrorUsePageOf(PlanoTrabalhoController.class)
  293 + .planoTrabalhoConfirmacao();
  294 + }
  295 +
  296 + @Get("/recuperar-plano-trabalho/{id}")
  297 + public void recuperarPlanoTrabalho(int id, HttpServletResponse response)
  298 + throws IOException {
  299 +
  300 + Questionario questionario = new Questionario(path, id);
  301 +
  302 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  303 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  304 +
  305 + byte[] dados = null;
  306 +
  307 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  308 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path,
  309 + questionario);
  310 +
  311 + if (planoTrabalho != null
  312 + && planoTrabalho.getArquivoPlanoTrabalho() != null) {
  313 + try {
  314 + String nome = planoTrabalho.getNomePlanoTrabalho();
  315 + dados = planoTrabalho.getArquivoPlanoTrabalho();
  316 + response.setContentType("inline/download");
  317 + String arq = "attachment;filename=" + nome;
  318 + response.setHeader("Content-Disposition", arq);
  319 + ServletOutputStream os = response.getOutputStream();
  320 + os.write(dados);
  321 + os.flush();
  322 + os.close();
  323 + } catch (Exception e) {
  324 +
  325 + }
  326 + } else {
  327 + this.validator.add(new ValidationMessage("", ""));
  328 + this.validator.onErrorUsePageOf(QuestionarioController.class)
  329 + .listaQuestionario();
  330 + }
  331 + } else {
  332 + this.validator.add(new ValidationMessage("", ""));
  333 + this.validator.onErrorUsePageOf(QuestionarioController.class)
  334 + .listaQuestionario();
  335 + }
  336 + }
  337 +
  338 + @Get("/recuperar-relatorio/{id}")
  339 + public void recuperarRelatorio(int id, HttpServletResponse response)
  340 + throws IOException {
  341 +
  342 + Questionario questionario = new Questionario(path, id);
  343 +
  344 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  345 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  346 +
  347 + byte[] dados = null;
  348 +
  349 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  350 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path,
  351 + questionario);
  352 +
  353 + if (planoTrabalho != null
  354 + && planoTrabalho.getArquivoRelatorioAss() != null) {
  355 + try {
  356 + String nome = planoTrabalho.getNomeRelatorioAss();
  357 + dados = planoTrabalho.getArquivoRelatorioAss();
  358 + response.setContentType("inline/download");
  359 + String arq = "attachment;filename=" + nome;
  360 + response.setHeader("Content-Disposition", arq);
  361 + ServletOutputStream os = response.getOutputStream();
  362 + os.write(dados);
  363 + os.flush();
  364 + os.close();
  365 + } catch (Exception e) {
  366 +
  367 + }
  368 + } else {
  369 + this.validator.add(new ValidationMessage("", ""));
  370 + this.validator.onErrorUsePageOf(QuestionarioController.class)
  371 + .listaQuestionario();
  372 + }
  373 + } else {
  374 + this.validator.add(new ValidationMessage("", ""));
  375 + this.validator.onErrorUsePageOf(QuestionarioController.class)
  376 + .listaQuestionario();
  377 + }
  378 + }
  379 +
  380 + @Path("/enviar-relatorio")
  381 + public void enviarRelatorioPlanoTrabalho() {
  382 +
  383 + Questionario questionario = new Questionario();
  384 +
  385 + questionario = (Questionario) VRaptorRequestHolder.currentRequest()
  386 + .getServletContext().getAttribute("questionario");
  387 +
  388 + if (questionario == null) {
  389 + Validacao validacao = new Validacao();
  390 + validacao.setCampo("valorHash");
  391 + validacao
  392 + .setMensagem("ATEN��O: Voc� precisa estar logado para enviar Relat�rio � PFDC/MPF.");
  393 +
  394 + mensagemValidacaoCampos.add(validacao);
  395 +
  396 + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  397 + this.validator.add(new ValidationMessage("", ""));
  398 + this.validator.onErrorUsePageOf(loginController.class).login();
  399 +
  400 + }
  401 + }
  402 +
  403 + private void enviarEmail(Questionario questionario) {
  404 + QuestionarioDao questionarioDao;
  405 +
  406 + StringBuffer mensagemMPF = new StringBuffer();
  407 + StringBuffer mensagemOrgao = new StringBuffer();
  408 + String assuntoMPF = "";
  409 + String assuntoOrgao = "";
  410 +
  411 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  412 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  413 +
  414 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path,
  415 + questionario);
  416 +
  417 + if (planoTrabalho.getArquivoRelatorioAss() != null) {
  418 + DataHandler dataHandlerRelatorio = null;
  419 + DataHandler dataHandlerPlano = null;
  420 +
  421 + dataHandlerRelatorio = new DataHandler(
  422 + planoTrabalho.getArquivoRelatorioAss(),
  423 + planoTrabalho.getNomeExtensaoRelatorioAss());
  424 +
  425 + if (planoTrabalho != null &&
  426 + planoTrabalho.getArquivoPlanoTrabalho() != null)
  427 + {
  428 + dataHandlerPlano = new DataHandler(
  429 + planoTrabalho.getArquivoPlanoTrabalho(),
  430 + planoTrabalho.getNomeExtensaoPlanoTrabalho());
  431 + }
  432 +
  433 +
  434 + Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties");
  435 +
  436 + EnvioEmailSemAutenticacao envioEmailSemAutenticacao =
  437 + new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort()));
  438 +
  439 + assuntoMPF = "Registro de Encaminhamento do Relatório Circunstanciado de Acessibilidade Digital - " + questionario.getNoOrgao();
  440 +
  441 + mensagemMPF.append("À Procuradoria Federal dos Diretos do Cidadão,<br>");
  442 + mensagemMPF.append("<p>O(A) " + questionario.getNoOrgao() +" encaminha o Relatório Circunstanciado relativo aos ambientes digitais desta instituição.</p>");
  443 +
  444 + mensagemMPF.append("Dados do Responsável:<br>");
  445 + mensagemMPF.append("Nome: " + questionario.getResponsavel() +"<br>");
  446 + mensagemMPF.append("Cargo: "+ questionario.getCargoResponsavel() + "<br>");
  447 + mensagemMPF.append("Telefone: " + questionario.getTelefone() + "<br>");
  448 + mensagemMPF.append("email: "+ questionario.getEmailDestinoOrgao() + "<br>");
  449 + mensagemMPF.append("<p>Brasília, "+ DateUtil.dataHoraAtual() +".</p>");
  450 + mensagemMPF.append("<p>Encaminhado por:</p>");
  451 + mensagemMPF.append("<p><a href=\"http://fad.governoeletronico.gov.br​\">http://fad.governoeletronico.gov.br​</a></p>");
  452 + mensagemMPF.append("<p>Coordenação-Geral de Padrões de Governo Digital</p>");
  453 + mensagemMPF.append("<p>Departamento de Governo Digital</p>");
  454 + mensagemMPF.append("<p>Secretaria de Tecnologia da Informação</p>");
  455 + mensagemMPF.append("<p>Ministério do Planejamento, Desenvolvimento e Gestão</p>");
  456 +
  457 + String mensagemRetornoMPF =
  458 + envioEmailSemAutenticacao.sendMailComAnexo(questionario.getEmailDestinoOrgao(),
  459 + email.getAnexosTo(), assuntoMPF, mensagemMPF.toString(), email.getAuth(), email.getAuthUser(),
  460 + email.getAuthPass(), dataHandlerRelatorio, planoTrabalho.getNomeRelatorioAss(),
  461 + dataHandlerPlano, planoTrabalho.getNomePlanoTrabalho());
  462 +
  463 +
  464 +
  465 + if (mensagemRetornoMPF.equalsIgnoreCase("")) {
  466 +
  467 +
  468 + assuntoOrgao = "Registro de Encaminhamento do Relatório Circunstanciado de Acessibilidade Digital - " + questionario.getNoOrgao();
  469 +
  470 + mensagemOrgao.append("<p>Prezado(a) "+ questionario.getResponsavel() +", "+ questionario.getCargoResponsavel() +" do "+ questionario.getNoOrgao() +", você concluiu com sucesso o processo de ");
  471 + mensagemOrgao.append("envio do Relatório Circunstanciado (Formulário Eletrônico de Acessibilidade Digital e ");
  472 + mensagemOrgao.append("Plano de Trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério ");
  473 + mensagemOrgao.append("Público Federal.</p>");
  474 + mensagemOrgao.append("<p>Além do envio, o relatório circunstanciado deverá ser publicado no portal do órgão/entidade e o seu ");
  475 + mensagemOrgao.append("reporte , na forma de síntese, deverá ser registrado na seção \"Medidas Relativas à Acessibilidade\" do ");
  476 + mensagemOrgao.append("Relatório de Gestão referente a 2016 e, nos anos subsequentes, indicar nessa seção o monitoramento ");
  477 + mensagemOrgao.append("das metas propostas nos planos de trabalho.</p> ");
  478 + 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>");
  479 + mensagemOrgao.append("<p>Brasília, "+ DateUtil.dataHoraAtual() +".</p>");
  480 + mensagemOrgao.append("<p>Encaminhado por:</p>");
  481 + mensagemOrgao.append("<p><a href=\"http://fad.governoeletronico.gov.br​\">http://fad.governoeletronico.gov.br​</a></p>");
  482 + mensagemOrgao.append("<p>Coordenação-Geral de Padrões de Governo Digital</p>");
  483 + mensagemOrgao.append("<p>Departamento de Governo Digital</p>");
  484 + mensagemOrgao.append("<p>Secretaria de Tecnologia da Informação</p>");
  485 + mensagemOrgao.append("<p>Ministério do Planejamento, Desenvolvimento e Gestão</p>");
  486 +
  487 +
  488 + String mensagemRetornoOrgao =
  489 + envioEmailSemAutenticacao.sendMailComAnexo(email.getFrom(),
  490 + questionario.getEmailDestinoOrgao(), assuntoOrgao, mensagemOrgao.toString(), email.getAuth(),
  491 + email.getAuthUser(), email.getAuthPass(), dataHandlerRelatorio,
  492 + planoTrabalho.getNomeRelatorioAss(), dataHandlerPlano,
  493 + planoTrabalho.getNomePlanoTrabalho());
  494 +
  495 +
  496 + if (mensagemRetornoOrgao.equalsIgnoreCase("")) {
  497 +
  498 + questionarioDao = new QuestionarioDao();
  499 +
  500 + if (questionarioDao.atualizarFlagEnviado(path, questionario.getIdQuestionario())) {
  501 +
  502 + result.include("mensagemEnvio",
  503 + "Mensagem enviada com Sucesso, você recebeu um email com os anexos!");
  504 +
  505 + result.include("statusEnvio", true);
  506 + }
  507 + }
  508 + } else {
  509 + result.include("mensagemEnvio", "Não foi possível enviar o email com os anexos!");
  510 + result.include("statusEnvio", false);
  511 + }
  512 + }else
  513 + {
  514 + result.include("mensagemEnvio", "É preciso ter o Relatório e o Plano de Trabalho anexados!");
  515 + result.include("statusEnvio", false);
  516 + }
  517 +
  518 + HashDao hashDao = new HashDao();
  519 + Questionario novoQuestionario = new Questionario();
  520 +
  521 + novoQuestionario = hashDao.verificarQuestionario(path,
  522 + questionario.getIdQuestionario());
  523 +
  524 + verificarPosicaoUsuario(novoQuestionario);
  525 + this.validator.add(new ValidationMessage("", ""));
  526 + this.validator.onErrorUsePageOf(PlanoTrabalhoController.class)
  527 + .confirmacaoEnvioEmailMPF();
  528 + }
  529 +
  530 + @Path("/enviar-email-mpf-alternativo")
  531 + public void enviarEmailMPFAlternativo(String valorHash) {
  532 +
  533 + Validacao validacao = new Validacao();
  534 + mensagemValidacaoCampos = new ArrayList<Validacao>();
  535 + mensagemValidacaoCampos = validacao.validarHash(path, valorHash);
  536 +
  537 + if (mensagemValidacaoCampos.size() > 0) {
  538 + result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  539 + this.validator.add(new ValidationMessage("", ""));
  540 + this.validator.onErrorUsePageOf(PlanoTrabalhoController.class)
  541 + .enviarRelatorioPlanoTrabalho();
  542 + }
  543 +
  544 + HashDao hashDao = new HashDao();
  545 + Questionario questionario = new Questionario();
  546 + questionario = hashDao.verificarHash(path, valorHash);
  547 +
  548 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  549 +
  550 + if (questionario.isFlagEnviado()) {
  551 + result.include("mensagemEnvio",
  552 + "O Relatório já foi enviado para MPF!");
  553 + result.include("statusEnvio", false);
  554 +
  555 + this.validator.add(new ValidationMessage("", ""));
  556 + this.validator.onErrorUsePageOf(PlanoTrabalhoController.class)
  557 + .confirmacaoEnvioEmailMPF();
  558 + } else {
  559 + enviarEmail(questionario);
  560 + }
  561 +
  562 + }
  563 +
  564 + }
  565 +
  566 + @Path("/enviar-email-mpf")
  567 + public void enviarEmailMPF() {
  568 + Questionario questionario = new Questionario();
  569 +
  570 + questionario = (Questionario) VRaptorRequestHolder.currentRequest()
  571 + .getServletContext().getAttribute("questionario");
  572 +
  573 + if (questionario != null && questionario.getIdQuestionario() > 0) {
  574 +
  575 + enviarEmail(questionario);
  576 +
  577 + }
  578 +
  579 + }
  580 +
  581 + public void verificarPosicaoUsuario(Questionario questionario) {
  582 + PlanoTrabalho planoTrabalho = new PlanoTrabalho();
  583 + PlanoTrabalhoDao planoTrabalhoDao = new PlanoTrabalhoDao();
  584 +
  585 + // Solicitou código de Acesso?
  586 + VRaptorRequestHolder.currentRequest().getServletContext()
  587 + .setAttribute("nivel_01", true);
  588 +
  589 + // Respondeu FAD?
  590 + if (questionario.isQuestionario_respondido()) {
  591 + VRaptorRequestHolder.currentRequest().getServletContext()
  592 + .setAttribute("nivel_02", true);
  593 + } else {
  594 + VRaptorRequestHolder.currentRequest().getServletContext()
  595 + .setAttribute("nivel_02", false);
  596 + }
  597 +
  598 + planoTrabalho = planoTrabalhoDao.recuperarPlanoTrabalho(path,
  599 + questionario);
  600 +
  601 + // Anexou Fad?
  602 + if (planoTrabalho.getArquivoRelatorioAss() != null) {
  603 + VRaptorRequestHolder.currentRequest().getServletContext()
  604 + .setAttribute("nivel_03", true);
  605 + } else {
  606 + VRaptorRequestHolder.currentRequest().getServletContext()
  607 + .setAttribute("nivel_03", false);
  608 + }
  609 +
  610 + // Anexou Plano de Trabalho?
  611 + if (planoTrabalho.getArquivoPlanoTrabalho() != null) {
  612 + VRaptorRequestHolder.currentRequest().getServletContext()
  613 + .setAttribute("nivel_04", true);
  614 + } else {
  615 + VRaptorRequestHolder.currentRequest().getServletContext()
  616 + .setAttribute("nivel_04", false);
  617 + }
  618 +
  619 + // Processo finalizado?
  620 + if (questionario.isFlagEnviado()) {
  621 + VRaptorRequestHolder.currentRequest().getServletContext()
  622 + .setAttribute("nivel_05", true);
  623 + } else {
  624 + VRaptorRequestHolder.currentRequest().getServletContext()
  625 + .setAttribute("nivel_05", false);
  626 + }
  627 +
  628 + }
  629 +
  630 + public void confirmacaoEnvioEmailMPF() {
  631 +
  632 + }
  633 +
612 634 }
... ...
src/br/com/controller/contatoController.java
... ... @@ -158,7 +158,7 @@ public class contatoController {
158 158 }
159 159  
160 160 } else {
161   - mensagemEnvio = "É preciso autorização para essa funcionalidade!";
  161 + mensagemEnvio = "É preciso autorizaçãoo para essa funcionalidade!";
162 162 }
163 163  
164 164 result.include("mensagemEnvio", mensagemEnvio);
... ...
src/br/com/controller/formularioOrgaoController.java
... ... @@ -30,9 +30,6 @@ public class formularioOrgaoController {
30 30 private String path;
31 31 private ServletContext application;
32 32  
33   - public formularioOrgaoController() {
34   -
35   - }
36 33  
37 34 public formularioOrgaoController(Result result, Validator validator, ServletContext application) {
38 35 this.result = result;
... ... @@ -59,8 +56,8 @@ public class formularioOrgaoController {
59 56  
60 57 verificarPosicaoUsuario(questionario);
61 58  
62   - if (!questionario.isFlagEnviado()) {
63   - if (!hashDao.verificarDataExpirada(path, valorHash)) {
  59 + // if (!questionario.isFlagEnviado()) {
  60 + //if (!hashDao.verificarDataExpirada(path, valorHash)) {
64 61  
65 62 mensagemValidacaoCampos = validacao.validarHash(path, valorHash);
66 63  
... ... @@ -124,30 +121,35 @@ public class formularioOrgaoController {
124 121 }
125 122 }
126 123  
127   - } else {
128   - validacao = new Validacao();
129   - validacao.setCampo("valorHash");
130   - validacao.setMensagem("ATENÇÃO: O prazo para o preenchimento do formulário está expirado.");
  124 + // } else {
  125 + // validacao = new Validacao();
  126 + // validacao.setCampo("valorHash");
  127 + // validacao.setMensagem("ATENÇÃO: O prazo para o preenchimento do formulário está expirado.");
131 128  
132   - mensagemValidacaoCampos.add(validacao);
  129 + // mensagemValidacaoCampos.add(validacao);
133 130  
134   - result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
135   - this.validator.add(new ValidationMessage("", ""));
136   - this.validator.onErrorUsePageOf(loginController.class).login();
137   - }
  131 + // result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
  132 + // this.validator.add(new ValidationMessage("", ""));
  133 + // this.validator.onErrorUsePageOf(loginController.class).login();
  134 + // }
138 135  
139   - } else {
140   - validacao = new Validacao();
  136 + VRaptorRequestHolder.currentRequest().getServletContext().setAttribute("flagEnviado", false);
  137 +
  138 + //} else {
  139 +
  140 + /* validacao = new Validacao();
141 141 validacao.setCampo("valorHash");
142 142 validacao
143   - .setMensagem("ATENÇÃO: Você já concluiu todos os passos do envio do relatório circunstanciado à PFDC/MPF. Não é mais possível alterar seus dados.");
  143 + .setMensagem("ATEN��O: Voc� j� concluiu todos os passos do envio do relat�rio circunstanciado � PFDC/MPF. N�o � mais poss�vel alterar seus dados.");
144 144  
145 145 mensagemValidacaoCampos.add(validacao);
146 146  
147 147 result.include("mensagemValidacaoCampos", mensagemValidacaoCampos);
148 148 this.validator.add(new ValidationMessage("", ""));
149   - this.validator.onErrorUsePageOf(loginController.class).login();
150   - }
  149 + this.validator.onErrorUsePageOf(loginController.class).login();*/
  150 +
  151 +
  152 + //}
151 153 }
152 154  
153 155 private void setValorCamposUrl(String nomeCampo, String valorCampo) {
... ...
src/br/com/controller/indexController.java
... ... @@ -129,7 +129,12 @@ public class indexController {
129 129 result.include("hEmail", hEmail);
130 130 VRaptorRequestHolder.currentRequest().getServletContext()
131 131 .setAttribute("valorHash", questionario.getHashAutenticacao());
132   -
  132 +
  133 + result.include("flagEnviado", questionario.isFlagEnviado());
  134 +
  135 + VRaptorRequestHolder.currentRequest().getServletContext()
  136 + .setAttribute("flagEnviado", questionario.getHashAutenticacao());
  137 +
133 138 if (this.mensagemValidacaoCamposOrgao.size() > 0) {
134 139 result.include("mensagemValidacaoCamposOrgao", mensagemValidacaoCamposOrgao);
135 140 result.include("questionario", questionario);
... ...
src/br/com/dao/PainelDao.java 0 → 100644
... ... @@ -0,0 +1,65 @@
  1 +package br.com.dao;
  2 +
  3 +import java.sql.Connection;
  4 +import java.sql.ResultSet;
  5 +import java.sql.SQLException;
  6 +import java.sql.Statement;
  7 +
  8 +public class PainelDao {
  9 +
  10 + public Integer retornarTotalResposta(String path, Integer idPergunta, Integer idOpcaoResposta) {
  11 +
  12 + StringBuffer sql = new StringBuffer();
  13 + Connection con = Conexao.conecta(path);
  14 + Statement estado;
  15 + ResultSet rset = null;
  16 + Integer total = 0;
  17 +
  18 + try {
  19 +
  20 + estado = con.createStatement();
  21 +
  22 + estado.execute(sql.toString());
  23 +
  24 + sql.append(" SELECT count(distinct(id_questionario)) as total ");
  25 + sql.append(" FROM resposta_questionario where id_pergunta = " + idPergunta + " and id_opcao_resposta = " + idOpcaoResposta + "; ");
  26 +
  27 + rset = estado.executeQuery(sql.toString());
  28 +
  29 + while (rset.next()) {
  30 + total = rset.getInt("total");
  31 + }
  32 +
  33 + } catch (SQLException e) {
  34 +
  35 + e.printStackTrace();
  36 + }
  37 +
  38 + return total;
  39 + }
  40 +
  41 + public ResultSet retornarTotalNotas(String path, Integer idOpcaoResposta) {
  42 +
  43 + StringBuffer sql = new StringBuffer();
  44 + Connection con = Conexao.conecta(path);
  45 + Statement estado;
  46 + ResultSet rset = null;
  47 +
  48 + try {
  49 +
  50 + estado = con.createStatement();
  51 +
  52 + estado.execute(sql.toString());
  53 +
  54 + sql.append(" select texto_resposta from resposta_questionario where id_opcao_resposta = "+ idOpcaoResposta +"; ");
  55 +
  56 + rset = estado.executeQuery(sql.toString());
  57 +
  58 + } catch (SQLException e) {
  59 +
  60 + e.printStackTrace();
  61 + }
  62 +
  63 + return rset;
  64 + }
  65 +}
... ...