Commit e13d17c2a346d83dfa76c05dcf92aa43fc87e76d

Authored by Guilherme Fay Vergara
1 parent 2da88ff4
Exists in master

Atualizando implementação do login unico, ajustando issues https://softwarepubli…

…co.gov.br/gitlab/prototocolizacao/protocolizacao/issues/1 https://softwarepublico.gov.br/gitlab/prototocolizacao/protocolizacao/issues/2 e https://softwarepublico.gov.br/gitlab/prototocolizacao/protocolizacao/issues/3
Showing 140 changed files with 2473 additions and 1972 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 140 files displayed.

CHANGELOG
@@ -1,62 +0,0 @@ @@ -1,62 +0,0 @@
1 -# CHANGELOG  
2 -  
3 -## 1.2.0 - (27/10/2017)  
4 ----  
5 -### Features:  
6 -- Quando um protocolo está em analise ele agora está em uma nova tela chamada "ANALISANDO";  
7 -  
8 -### Bugfixes:  
9 -- Modal quando o usuário visualiza um documento agora com botão de fechar;  
10 -- Melhorado alguns aspectos de segurança;  
11 -- Tamplate do email modificado;  
12 -- Modificado email na home;  
13 -- Adicionado FAVICON;  
14 -- Permitido apenas caixa alta no nome (cadastro);  
15 -  
16 -## 1.1.4 - (20/10/2017)  
17 ----  
18 -### Features:  
19 -  
20 -- Criando diretório docker e escondendo variáveis de acesso a banco;  
21 -- Adicionando import do certificado;  
22 -- Adição do diretorio docker já com as configurações padrões para integração continua;  
23 -  
24 -### Bugfixes:  
25 -  
26 -  
27 -## 1.1.3 - (13/10/2017)  
28 ----  
29 -### Features:  
30 -### Bugfixes:  
31 -  
32 -- Ajustando lista de documentos ativos e inativos  
33 -  
34 -## 1.1.2 - (06/10/2017)  
35 ----  
36 -### Features:  
37 -  
38 -- Ajustes no controle da modal;  
39 -- Validação de data de pesquisa de protocolo;  
40 -- Apresentação do texto de recusa;  
41 -  
42 -### Bugfixes:  
43 -  
44 -- Dinamização do cadastro do tipo de documento;  
45 -  
46 -## 1.1.1 - (02/10/2017)  
47 ----  
48 -### Features  
49 -  
50 -- Corrigido Texto "Deseja informar protocolo anterior?" atualizado para "Deseja informar o numero do protocolo anterior?";  
51 -- Corrigido a restrição do documento e do processo. Agora o documento é público e o Processo privado;  
52 -  
53 -### Bugfixes:  
54 -  
55 -- Corrigido bug de envio com duplicidade para o sei quando dois usuários estão analisando o mesmo protocolo;  
56 -- Corrigido bug onde o E-Mail Interessado 1 não estava recebendo email no caso de recusa e de aceite;  
57 -  
58 -## 1.0.0 (25/09/2017)  
59 ----  
60 -### Features:  
61 -  
62 -- Versão estável do projeto  
63 \ No newline at end of file 0 \ No newline at end of file
docker/Dockerfile
1 FROM tomcat:8.5.20-jre8-alpine 1 FROM tomcat:8.5.20-jre8-alpine
2 2
3 -LABEL maintainer="MP/SPO <biblioteca.digital@planejamento.gov.br>" 3 +LABEL maintainer="MP/SPO <protocolo@planejamento.gov.br>"
  4 +
  5 +ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
  6 +
  7 +ENV JAVA_SECURITY ${JAVA_HOME}/jre/lib/security
  8 +
  9 +ENV JAVA_CACERTS ${JAVA_SECURITY}/cacerts
4 10
5 -ENV JAVA_CACERTS /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts  
6 ENV PROTOCOLO_ARQUIVO /opt/protocolo_arquivos 11 ENV PROTOCOLO_ARQUIVO /opt/protocolo_arquivos
7 -ENV CATALINA_HOME /usr/local/tomcat  
8 -ENV PATH $CATALINA_HOME/bin:$PATH  
9 12
10 -#WORKDIR /root/  
11 -#RUN mkdir .protocolo-config  
12 -#RUN mkdir -p /root/.protocolo-arquivos/ 13 +ENV CATALINA_HOME /usr/local/tomcat
13 14
14 -RUN mkdir -p "$CATALINA_HOME"  
15 -RUN mkdir -p "$PROTOCOLO_ARQUIVO"  
16 -RUN mkdir -p $CATALINA_HOME/webapps/META-INF/ 15 +ENV PATH $CATALINA_HOME/bin:$PATH
17 16
18 WORKDIR $CATALINA_HOME 17 WORKDIR $CATALINA_HOME
19 18
20 -COPY ./FILES/ICP-Brasilv5.crt /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ 19 +COPY ./FILES/ICP-Brasilv5.crt \
  20 + ./FILES/ACSecretariaReceitaFederalBrasilv3.crt \
  21 + ./FILES/AutoridadeCertificadoraRaizBrasileirav2.crt \
  22 + ./FILES/AutoridadeCertificadoraSERPRORFBSSL.crt \
  23 + ./FILES/AutoridadeCertificadoraMDICGOVBR.crt \
  24 + ${JAVA_SECURITY}/
  25 +
21 COPY ./FILES/protocolo.war $CATALINA_HOME/webapps/protocolo.war 26 COPY ./FILES/protocolo.war $CATALINA_HOME/webapps/protocolo.war
22 -COPY ./FILES/context.xml $CATALINA_HOME/webapps/META-INF/context.xml  
23 -COPY ./FILES/context.xml /usr/local/tomcat/conf/context.xml 27 +
24 COPY ./FILES/server.xml /usr/local/tomcat/conf/server.xml 28 COPY ./FILES/server.xml /usr/local/tomcat/conf/server.xml
  29 +
25 COPY ./FILES/web.xml /usr/local/tomcat/conf/web.xml 30 COPY ./FILES/web.xml /usr/local/tomcat/conf/web.xml
26 31
27 RUN apk --no-cache update \ 32 RUN apk --no-cache update \
28 - && apk --no-cache add tzdata zip unzip bzip2 less git net-tools iproute2 vim nano \  
29 - && rm -f /etc/localtime \  
30 - && ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime 33 + && apk --no-cache add tzdata vim nano \
  34 + && rm -f /etc/localtime \
  35 + && ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
  36 +
  37 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  38 + -file ${JAVA_SECURITY}/ICP-Brasilv5.crt -alias ICP-Brasilv5
  39 +
  40 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  41 + -file ${JAVA_SECURITY}/ACSecretariaReceitaFederalBrasilv3.crt -alias ACSecretariaReceitaFederalBrasilv3
  42 +
  43 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  44 + -file ${JAVA_SECURITY}/AutoridadeCertificadoraRaizBrasileirav2.crt -alias AutoridadeCertificadoraRaizBrasileirav2
  45 +
  46 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  47 + -file ${JAVA_SECURITY}/AutoridadeCertificadoraSERPRORFBSSL.crt -alias AutoridadeCertificadoraSERPRORFBSSL
  48 +
  49 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  50 + -file ${JAVA_SECURITY}/AutoridadeCertificadoraMDICGOVBR.crt -alias AutoridadeCertificadoraMDICGOVBR
  51 +
  52 +RUN mkdir -p "$PROTOCOLO_ARQUIVO"
  53 +
  54 +#
  55 +# Ports to expose
  56 +EXPOSE 8080
31 57
32 -RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import -file /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ICP-Brasilv5.crt -alias ICP-Brasilv5  
33 \ No newline at end of file 58 \ No newline at end of file
  59 +#
  60 +# Command to run
  61 +CMD ["catalina.sh", "run"]
docker/FILES/ICP-Brasilv5.crt
@@ -1,38 +0,0 @@ @@ -1,38 +0,0 @@
1 ------BEGIN CERTIFICATE-----  
2 -MIIGoTCCBImgAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx  
3 -EzARBgNVBAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNpb25h  
4 -bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMMK0F1  
5 -dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjUwHhcNMTYw  
6 -MzAyMTMwMTM4WhcNMjkwMzAyMjM1OTM4WjCBlzELMAkGA1UEBhMCQlIxEzARBgNV  
7 -BAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNpb25hbCBkZSBU  
8 -ZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMMK0F1dG9yaWRh  
9 -ZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjUwggIiMA0GCSqGSIb3  
10 -DQEBAQUAA4ICDwAwggIKAoICAQD3LXgabUWsF+gUXw/6YODeF2XkqEyfk3VehdsI  
11 -x+3/ERgdjCS/ouxYR0Epi2hdoMUVJDNf3XQfjAWXJyCoTneHYAl2McMdvoqtLB2i  
12 -leQlJiis0fTtYTJayee9BAIdIrCor1Lc0vozXCpDtq5nTwhjIocaZtcuFsdrkl+n  
13 -bfYxl5m7vjTkTMS6j8ffjmFzbNPDlJuV3Vy7AzapPVJrMl6UHPXCHMYMzl0KxR/4  
14 -7S5XGgmLYkYt8bNCHA3fg07y+Gtvgu+SNhMPwWKIgwhYw+9vErOnavRhOimYo4M2  
15 -AwNpNK0OKLI7Im5V094jFp4Ty+mlmfQH00k8nkSUEN+1TGGkhv16c2hukbx9iCfb  
16 -mk7im2hGKjQA8eH64VPYoS2qdKbPbd3xDDHN2croYKpy2U2oQTVBSf9hC3o6fKo3  
17 -zp0U3dNiw7ZgWKS9UwP31Q0gwgB1orZgLuF+LIppHYwxcTG/AovNWa4sTPukMiX2  
18 -L+p7uIHExTZJJU4YoDacQh/mfbPIz3261He4YFmQ35sfw3eKHQSOLyiVfev/n0l/  
19 -r308PijEd+d+Hz5RmqIzS8jYXZIeJxym4mEjE1fKpeP56Ea52LlIJ8ZqsJ3xzHWu  
20 -3WkAVz4hMqrX6BPMGW2IxOuEUQyIaCBg1lI6QLiPMHvo2/J7gu4YfqRcH6i27W3H  
21 -yzamEQIDAQABo4H1MIHyME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcC  
22 -ARYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYw  
23 -PwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJy  
24 -L0xDUmFjcmFpenY1LmNybDAfBgNVHSMEGDAWgBRpqL512cTvbOcTReRhbuVo+LZA  
25 -XjAdBgNVHQ4EFgQUaai+ddnE72znE0XkYW7laPi2QF4wDwYDVR0TAQH/BAUwAwEB  
26 -/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBABRt2/JiWapef7o/  
27 -plhR4PxymlMIp/JeZ5F0BZ1XafmYpl5g6pRokFrIRMFXLyEhlgo51I05InyCc9Td  
28 -6UXjlsOASTc/LRavyjB/8NcQjlRYDh6xf7OdP05mFcT/0+6bYRtNgsnUbr10pfsK  
29 -/UzyUvQWbumGS57hCZrAZOyd9MzukiF/azAa6JfoZk2nDkEudKOY8tRyTpMmDzN5  
30 -fufPSC3v7tSJUqTqo5z7roN/FmckRzGAYyz5XulbOc5/UsAT/tk+KP/clbbqd/hh  
31 -evmmdJclLr9qWZZcOgzuFU2YsgProtVu0fFNXGr6KK9fu44pOHajmMsTXK3X7r/P  
32 -wh19kFRow5F3RQMUZC6Re0YLfXh+ypnUSCzA+uL4JPtHIGyvkbWiulkustpOKUSV  
33 -wBPzvA2sQUOvqdbAR7C8jcHYFJMuK2HZFji7pxcWWab/NKsFcJ3sluDjmhizpQax  
34 -bYTfAVXu3q8yd0su/BHHhBpteyHvYyyz0Eb9LUysR2cMtWvfPU6vnoPgYvOGO1Cz  
35 -iyGEsgKULkCH4o2Vgl1gQuKWO4V68rFW8a/jvq28sbY+y/Ao0I5ohpnBcQOAawiF  
36 -bz6yJtObajYMuztDDP8oY656EuuJXBJhuKAJPI/7WDtgfV8ffOh/iQGQATVMtgDN  
37 -0gv8bn5NdUX8UMNX1sHhU3H1UpoW  
38 ------END CERTIFICATE-----  
docker/FILES/context.xml
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
30 <Manager pathname="" /> 30 <Manager pathname="" />
31 --> 31 -->
32 32
  33 + <!--
33 <Resource 34 <Resource
34 name="jdbc/protocoloDB" 35 name="jdbc/protocoloDB"
35 auth="Container" 36 auth="Container"
@@ -42,6 +43,7 @@ @@ -42,6 +43,7 @@
42 username="MYSQL_USER" 43 username="MYSQL_USER"
43 password="MYSQL_PASSWORD" 44 password="MYSQL_PASSWORD"
44 /> 45 />
  46 + -->
45 47
46 <Valve className="org.apache.catalina.authenticator.BasicAuthenticator" 48 <Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
47 disableProxyCaching="false" 49 disableProxyCaching="false"
protocolo-web-db.sql
@@ -86,7 +86,7 @@ CREATE TABLE `configuracao` ( @@ -86,7 +86,7 @@ CREATE TABLE `configuracao` (
86 86
87 LOCK TABLES `configuracao` WRITE; 87 LOCK TABLES `configuracao` WRITE;
88 /*!40000 ALTER TABLE `configuracao` DISABLE KEYS */; 88 /*!40000 ALTER TABLE `configuracao` DISABLE KEYS */;
89 -INSERT INTO `configuracao` VALUES (1,'SMTP_SERVER','10.209.253.28','',1),(2,'SMTP_PORT','25','teste3',1),(3,'MAIL_FROM','xxx@yyy.zzz','',1),(4,'EMAIL_RESPONSAVEL','sss@sssf.com',NULL,1),(9,'URL_AUTORIZAR','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/authorize',NULL,4),(10,'URL_TOKEN','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/token',NULL,4),(11,'URL_DADOS_USUARIO','https://testeservicos-ecidadao.estaleiro.serpro.gov.br/servicos-ecidadao/ecidadao/usuario/getUserInfo/',NULL,4),(12,'CLIENT_ID','516a9b57-d022-4843-a792-93b4dc95622b',NULL,4),(13,'SCOPE','openid',NULL,4),(14,'REDIRECT_URI','https://protocolo.planejamento.gov.br/login',NULL,4),(15,'CLIENT_SECRET','Ld65DuKIva0_EU0LO1VrVC6Be7b-_AsgvkueKpW4OJlhDdJQ4TJ9nKB173M5c5mmG03uhZvEbBKnDRmAe7gZkw',NULL,4),(16,'ESCOPO','dados_brasil_cidadao',NULL,4),(18,'URL_BRASIL_CIDADAO','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/login',NULL,4),(19,'URL_PRIMEIRO_ACESSO','https://testeportal-ecidadao.estaleiro.serpro.gov.br/servicos-cidadao/acesso/#/primeiro-acesso',NULL,4),(20,'STORAGE_PATH','/opt/protocolo_arquivos','teste2',3),(21,'URL_ENDPOINT','https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php','teste4',2),(22,'ASSUNTO_CODIGO_ESTRUTURADO','520.1',NULL,2),(23,'PROCEDIMENTO_ESPECIFICADO','Especificacao do processo',NULL,2),(24,'PROCEDIMENTO_NIVEL_ACESSO','0',NULL,2),(25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO','100000346',NULL,2),(26,'DOCUMENTO_TIPO','R',NULL,2),(27,'DOCUMENTO_ID_SERIE','1',NULL,2),(28,'DOCUMENTO_NIVEL_ACESSO','0',NULL,2),(29,'SIGLA_SISTEMA','UNB',NULL,2),(30,'IDENTIFICACAO_SERVICO','testeunb',NULL,2),(31,'ID_UNIDADE','110001972',NULL,2),(32,'CAPTCHA_SITE_KEY','6LdBAVQUAAAAAET4Dun738dTVCWfhqVDuvnDoBAp',NULL,5),(33,'CAPTCHA_SECRET_KEY','6LdBAVQUAAAAAEa3owvd2PBSaOwU8OOPeFwTq13w',NULL,5),(34,'EXP_NUM_PROTOCOLO','03154000244201864','numero do protocolo do sei ',2),(35,'EXP_DESC','teste','descrição',2),(36,'EXP_NOME_PDF','teste.pdf',NULL,2),(37,'EXP_CAMINHO_ARQUIVO','/home/dario/Documentos/123456.pdf',NULL,2),(38,'EXP_SERIE_TIPO','R',NULL,2),(39,'EXP_ID_SERIE','1',NULL,2); 89 +INSERT INTO `configuracao` VALUES (1,'SMTP_SERVER',NULL,'ip do servidor de email',1),(2,'SMTP_PORT',NULL,'porta do servidor de email',1),(3,'MAIL_FROM','','email de envio',1),(4,'EMAIL_RESPONSAVEL',NULL,'responsavel por receber os emails de erro',1),(9,'URL_AUTORIZAR',NULL,'url autorizar do login unico /autorizar',4),(10,'URL_TOKEN',NULL,'url /token do portal do software publico',4),(11,'URL_DADOS_USUARIO',NULL,''url /getUserInfo do portal do login unico,4),(12,'CLIENT_ID',NULL,'client id do login unico',4),(13,'SCOPE',NULL,'scope do login unico',4),(14,'REDIRECT_URI',NULL,'URL de retorno do login unico',4),(15,'CLIENT_SECRET',NULL,'chave secreta do login unico',4),(16,'ESCOPO',NULL,'escopo de dados do login unico',4),(18,'URL_BRASIL_CIDADAO',NULL,'URL do login',4),(19,'URL_PRIMEIRO_ACESSO',NULL,'URL para o primeiro acesso',4),(20,'STORAGE_PATH',NULL,'Local no servidor onde será alocado para guardar os arquivos',3),(21,'URL_ENDPOINT',NULL,'Url do sei',2),(22,'ASSUNTO_CODIGO_ESTRUTURADO',NULL,'Código do assunto no sei',2),(23,'PROCEDIMENTO_ESPECIFICADO',NULL,'Expecificação do procesimento no sei',2),(24,'PROCEDIMENTO_NIVEL_ACESSO',NULL,'nivel de aceso no sei',2),(25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO',NULL,'Tipo de procedimento no sei',2),(26,'DOCUMENTO_TIPO',NULL,'Tipo de documento no sei',2),(27,'DOCUMENTO_ID_SERIE',NULL,'Id serie do documento no sei',2),(28,'DOCUMENTO_NIVEL_ACESSO',NULL,'nivel de acesso do documento no sei',2),(29,'SIGLA_SISTEMA',NULL,'Sigla do sistema no sei',2),(30,'IDENTIFICACAO_SERVICO',NULL,'Identificação do serviço no sei',2),(31,'ID_UNIDADE',NULL,'Id da unidade no sei',2),(32,'CAPTCHA_SITE_KEY',NULL,'SITE_KEY do serviço de captcha do google',5),(33,'CAPTCHA_SECRET_KEY',NULL,'SECRET_KEY do serviço de captcha do google',5)
90 /*!40000 ALTER TABLE `configuracao` ENABLE KEYS */; 90 /*!40000 ALTER TABLE `configuracao` ENABLE KEYS */;
91 UNLOCK TABLES; 91 UNLOCK TABLES;
92 92
src/main/java/Sei/TesteIncluirDocumento.java
1 package Sei; 1 package Sei;
2 2
3 -import fi.solita.clamav.ClamAVClient;  
4 import org.apache.commons.io.FileUtils; 3 import org.apache.commons.io.FileUtils;
5 import org.springframework.util.Base64Utils; 4 import org.springframework.util.Base64Utils;
6 5
7 import java.io.File; 6 import java.io.File;
8 -import java.io.FileInputStream;  
9 import java.net.URL; 7 import java.net.URL;
10 import java.text.Normalizer; 8 import java.text.Normalizer;
11 9
@@ -26,20 +24,22 @@ public class TesteIncluirDocumento { @@ -26,20 +24,22 @@ public class TesteIncluirDocumento {
26 24
27 System.out.println(part2);*/ 25 System.out.println(part2);*/
28 26
29 - ClamAVClient cl = new ClamAVClient("10.209.40.206", 3310);  
30 - final byte[] reply;  
31 - try {  
32 - System.out.println("Tudo limpo.");  
33 - reply = cl.scan(new FileInputStream("/home/dario/Documentos/virus.pdf"));  
34 -  
35 - } catch (Exception e) {  
36 - throw new RuntimeException(e);  
37 - }  
38 - if (!ClamAVClient.isCleanReply(reply)) {  
39 - System.out.println("Virus encontrado.");  
40 - } else {  
41 - System.out.println("Tudo limpo.");  
42 - } 27 +// ClamAVClient cl = new ClamAVClient("10.209.40.206", 3310);
  28 +// final byte[] reply;
  29 +// try {
  30 +// System.out.println("Tudo limpo.");
  31 +// reply = cl.scan(new FileInputStream("/home/dario/Documentos/virus.pdf"));
  32 +//
  33 +// } catch (Exception e) {
  34 +// throw new RuntimeException(e);
  35 +// }
  36 +// if (!ClamAVClient.isCleanReply(reply)) {
  37 +// System.out.println("Virus encontrado.");
  38 +// } else {
  39 +// System.out.println("Tudo limpo.");
  40 +// }
  41 + enviar();
  42 +
43 } 43 }
44 44
45 45
@@ -52,11 +52,11 @@ public class TesteIncluirDocumento { @@ -52,11 +52,11 @@ public class TesteIncluirDocumento {
52 // System.out.println(path.resolve("PaytoStudy_Student_Guide_HiBonjour_PT.pdf").toFile().getAbsolutePath()); 52 // System.out.println(path.resolve("PaytoStudy_Student_Guide_HiBonjour_PT.pdf").toFile().getAbsolutePath());
53 53
54 // 54 //
55 - URL urlEndpoint = new URL("https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php"); 55 + URL urlEndpoint = new URL("http://siphom.fazenda.gov.br/sei/ws/SeiWS.php");
56 SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null); 56 SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
57 57
58 Assunto assunto = new Assunto(); 58 Assunto assunto = new Assunto();
59 - assunto.setCodigoEstruturado("520.1"); //Tipo de assunto 59 + assunto.setCodigoEstruturado("900"); //Tipo de assunto
60 Assunto[] assuntos = {assunto}; 60 Assunto[] assuntos = {assunto};
61 61
62 Procedimento procedimento = new Procedimento(); 62 Procedimento procedimento = new Procedimento();
@@ -72,33 +72,28 @@ public class TesteIncluirDocumento { @@ -72,33 +72,28 @@ public class TesteIncluirDocumento {
72 72
73 procedimento.setObservacao("Obs"); 73 procedimento.setObservacao("Obs");
74 procedimento.setNivelAcesso("0"); // 0 = Publico, 1 = Restrito, 2 = Sigiloso 74 procedimento.setNivelAcesso("0"); // 0 = Publico, 1 = Restrito, 2 = Sigiloso
75 - procedimento.setIdTipoProcedimento("100000346"); // Tipo de Processo => Adesão de atas  
76 -//  
77 -//  
78 -//  
79 -////  
80 -// Documento[] documentos = {documento};  
81 -//  
82 -// RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento("UNB",  
83 -// "testeunb",  
84 -// "110001972",  
85 -// procedimento, null,  
86 -// null,  
87 -// null, "S", "N", null, null, null, null, null);  
88 -//  
89 -// System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getProcedimentoFormatado());  
90 -// System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getLinkAcesso()); 75 + procedimento.setIdTipoProcedimento("100000836"); // Tipo de Processo => Adesão de atas
  76 +
  77 + RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento("PROT_ELETRONICO",
  78 + "ProtocolizacaoEletronica",
  79 + "110000054",
  80 + procedimento, null,
  81 + null,
  82 + null, "S", "N", null, null, null, null, null);
  83 +
  84 + System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getProcedimentoFormatado());
  85 + System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getLinkAcesso());
91 86
92 Documento documento = new Documento(); 87 Documento documento = new Documento();
93 - documento.setIdProcedimento("03154000037201729"); 88 + documento.setIdProcedimento(retornoGeracaoProcedimento.getProcedimentoFormatado());
94 documento.setDescricao("Meu documento 5"); 89 documento.setDescricao("Meu documento 5");
95 documento.setNomeArquivo("PaytoStudy_Student_Guide_HiBonjour_PT.pdf"); 90 documento.setNomeArquivo("PaytoStudy_Student_Guide_HiBonjour_PT.pdf");
96 - documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(new File("/home/leonardo/Downloads/PaytoStudy_Student_Guide_HiBonjour_PT.pdf")))); 91 + documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(new File("/home/matheus/teste.pdf"))));
97 documento.setTipo("R"); 92 documento.setTipo("R");
98 documento.setIdSerie("1"); 93 documento.setIdSerie("1");
99 - documento.setData("16/08/2017"); 94 + documento.setData("02/04/2019");
100 95
101 - RetornoInclusaoDocumento retornoInclusaoDocumento = seiBindingStub.incluirDocumento("UNB", "testeunb", "110001972", documento); 96 + RetornoInclusaoDocumento retornoInclusaoDocumento = seiBindingStub.incluirDocumento("PROT_ELETRONICO", "ProtocolizacaoEletronica", "110000054", documento);
102 System.out.println("Link = " + retornoInclusaoDocumento.getLinkAcesso()); 97 System.out.println("Link = " + retornoInclusaoDocumento.getLinkAcesso());
103 } 98 }
104 } 99 }
src/main/java/br/gov/planejamento/dipla/protocolo/clamav/ClamavUtil.java
1 package br.gov.planejamento.dipla.protocolo.clamav; 1 package br.gov.planejamento.dipla.protocolo.clamav;
2 2
3 -import fi.solita.clamav.ClamAVClient;  
4 import org.springframework.beans.factory.annotation.Autowired; 3 import org.springframework.beans.factory.annotation.Autowired;
5 -import org.springframework.context.annotation.PropertySource;  
6 import org.springframework.core.env.Environment; 4 import org.springframework.core.env.Environment;
7 import org.springframework.stereotype.Component; 5 import org.springframework.stereotype.Component;
8 6
src/main/java/br/gov/planejamento/dipla/protocolo/config/BrasilCidadaoConfig.java
1 package br.gov.planejamento.dipla.protocolo.config; 1 package br.gov.planejamento.dipla.protocolo.config;
2 2
3 -import java.security.KeyManagementException;  
4 -import java.security.NoSuchAlgorithmException;  
5 -import java.security.cert.CertificateException;  
6 -import java.security.cert.X509Certificate;  
7 -import java.util.Base64;  
8 -import java.util.HashMap;  
9 -import java.util.Map;  
10 -import java.util.Random;  
11 -  
12 -import javax.net.ssl.HttpsURLConnection;  
13 -import javax.net.ssl.SSLContext;  
14 -import javax.net.ssl.TrustManager;  
15 -import javax.net.ssl.X509TrustManager;  
16 -  
17 -import org.springframework.beans.factory.annotation.Autowired;  
18 -import org.springframework.context.annotation.PropertySource;  
19 -import org.springframework.core.env.Environment;  
20 -import org.springframework.http.HttpHeaders;  
21 -import org.springframework.http.MediaType;  
22 3
23 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum; 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
24 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository; 5 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
25 - 6 +import org.springframework.beans.factory.annotation.Autowired;
26 import org.springframework.context.annotation.Bean; 7 import org.springframework.context.annotation.Bean;
27 import org.springframework.context.annotation.Configuration; 8 import org.springframework.context.annotation.Configuration;
28 9
  10 +import javax.net.ssl.HttpsURLConnection;
  11 +import javax.net.ssl.SSLContext;
  12 +import javax.net.ssl.TrustManager;
  13 +import javax.net.ssl.X509TrustManager;
  14 +import java.net.URLEncoder;
  15 +import java.security.KeyManagementException;
  16 +import java.security.NoSuchAlgorithmException;
  17 +import java.security.cert.CertificateException;
  18 +import java.security.cert.X509Certificate;
  19 +import java.util.Random;
  20 +
29 21
30 @Configuration 22 @Configuration
31 //@PropertySource(value = {"file:${HOME}/.protocolo-config/protocolo-brasilCidadao.properties"}) 23 //@PropertySource(value = {"file:${HOME}/.protocolo-config/protocolo-brasilCidadao.properties"})
@@ -34,86 +26,88 @@ public class BrasilCidadaoConfig { @@ -34,86 +26,88 @@ public class BrasilCidadaoConfig {
34 26
35 @Autowired 27 @Autowired
36 private ConfiguracaoRepository configuracaoRepository; 28 private ConfiguracaoRepository configuracaoRepository;
37 - 29 +
38 Random gerador = new Random(); 30 Random gerador = new Random();
39 -  
40 - public String gerarUrlAutorizar(){  
41 - disableSSLCertificateChecking();  
42 - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_AUTORIZAR)+"?response_type=code&client_id="+  
43 - configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID)+"&redirect_uri="+  
44 - configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI)+"&nonce="+gerador.hashCode()+  
45 - "&state="+gerador.hashCode();  
46 - return url;  
47 - }  
48 - public String gerarUrlToken(){  
49 - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_TOKEN);  
50 - return url;  
51 - }  
52 - public String gerarUrlDadosUsuarios(String token){  
53 - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_DADOS_USUARIO)+  
54 - configuracaoRepository.recuperarValor(ConfiguracaoEnum.ESCOPO)+"?access_token="+token;  
55 - return url;  
56 - }  
57 - @Bean(name = "urlBrasilCidadao")  
58 - public UrlBrasilCidadao gerarUrlBrasilCidadao(){  
59 - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_BRASIL_CIDADAO);  
60 - return () -> url;  
61 - }  
62 - @Bean(name = "urlPrimeiroAcesso")  
63 - public UrlPrimeiroAcesso gerarUrlPrimeiroAcesso(){  
64 - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_PRIMEIRO_ACESSO);  
65 - return () -> url;  
66 - }  
67 -  
68 - public String gerarRequisicaoAtributo(String code){  
69 - String reqAtr =  
70 - "grant_type=authorization_code&"+  
71 - "code="+code+"&"+  
72 - "redirect_uri="+configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI);  
73 -  
74 - return reqAtr;  
75 - }  
76 - public HttpHeaders gerarRequisicaoHeader(){  
77 - HttpHeaders headers = new HttpHeaders();  
78 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);  
79 - headers.add(headers.AUTHORIZATION, "Basic "+Base64.getEncoder().encodeToString((  
80 - configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID)+":"+  
81 - configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_SECRET)).getBytes()));  
82 - return headers;  
83 - }  
84 -  
85 -  
86 - private void disableSSLCertificateChecking() {  
87 - TrustManager[] trustAllCerts = new TrustManager[] {  
88 - new X509TrustManager() {  
89 - public X509Certificate[] getAcceptedIssuers() {  
90 - return null;  
91 - }  
92 - @Override  
93 - public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {  
94 - // Not implemented  
95 - }  
96 - @Override public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {  
97 - // Not implemented  
98 - }  
99 - }  
100 - };  
101 - try {  
102 - SSLContext sc = SSLContext.getInstance("TLS");  
103 - sc.init(null, trustAllCerts, new java.security.SecureRandom());  
104 - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());  
105 -  
106 - } catch (KeyManagementException e) {  
107 - e.printStackTrace();  
108 - } catch (NoSuchAlgorithmException e) {  
109 - e.printStackTrace();  
110 - }  
111 - }  
112 - public interface UrlBrasilCidadao { 31 +
  32 + public String gerarUrlAutorizar(){
  33 + disableSSLCertificateChecking();
  34 + String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_AUTORIZAR)+"?response_type=code&client_id="+
  35 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID)+ "&scope="
  36 + + configuracaoRepository.recuperarValor(ConfiguracaoEnum.SCOPE) + "&redirect_uri=" +
  37 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI)+"&nonce="+gerador.hashCode()+
  38 + "&state="+gerador.hashCode();
  39 + return url;
  40 + }
  41 +
  42 + @Bean(name = "urlBrasilCidadao")
  43 + public UrlBrasilCidadao gerarUrlBrasilCidadao(){
  44 + String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_BRASIL_CIDADAO);
  45 + return () -> url;
  46 + }
  47 + @Bean(name = "urlPrimeiroAcesso")
  48 + public UrlPrimeiroAcesso gerarUrlPrimeiroAcesso(){
  49 + String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_PRIMEIRO_ACESSO);
  50 + return () -> url;
  51 + }
  52 +
  53 + private void disableSSLCertificateChecking() {
  54 + TrustManager[] trustAllCerts = new TrustManager[] {
  55 + new X509TrustManager() {
  56 + public X509Certificate[] getAcceptedIssuers() {
  57 + return null;
  58 + }
  59 + @Override
  60 + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
  61 + // Not implemented
  62 + }
  63 + @Override public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
  64 + // Not implemented
  65 + }
  66 + }
  67 + };
  68 + try {
  69 + SSLContext sc = SSLContext.getInstance("TLS");
  70 + sc.init(null, trustAllCerts, new java.security.SecureRandom());
  71 + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  72 +
  73 + } catch (KeyManagementException e) {
  74 + e.printStackTrace();
  75 + } catch (NoSuchAlgorithmException e) {
  76 + e.printStackTrace();
  77 + }
  78 + }
  79 + public interface UrlBrasilCidadao {
113 String getUrlBrasilCidadao(); 80 String getUrlBrasilCidadao();
114 } 81 }
115 82
116 - public interface UrlPrimeiroAcesso { 83 + public interface UrlPrimeiroAcesso {
117 String getUrlPrimeiroAcesso(); 84 String getUrlPrimeiroAcesso();
118 } 85 }
  86 +
  87 + public String gerarURLToken(String code){
  88 + String url = "";
  89 + try {
  90 + url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_TOKEN) + "?grant_type=authorization_code&code="
  91 + + code + "&redirect_uri=" + URLEncoder.encode(configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI), "UTF-8") ;
  92 + }catch (Exception e){
  93 + e.printStackTrace();
  94 + }
  95 + return url;
  96 + }
  97 +
  98 + public String obterClientSecret(){
  99 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_SECRET);
  100 + }
  101 +
  102 + public String obterClientID(){
  103 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID);
  104 + }
  105 +
  106 + public String obterURLBrasilCidadao(){
  107 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_BRASIL_CIDADAO);
  108 + }
  109 +
  110 + public String obterURLDadosUsuario(){
  111 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_DADOS_USUARIO);
  112 + }
119 } 113 }
src/main/java/br/gov/planejamento/dipla/protocolo/config/MailConfig.java
1 package br.gov.planejamento.dipla.protocolo.config; 1 package br.gov.planejamento.dipla.protocolo.config;
2 2
  3 +import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
  4 +import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
3 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Bean;
5 import org.springframework.context.annotation.Configuration; 7 import org.springframework.context.annotation.Configuration;
6 -import org.springframework.context.annotation.PropertySource;  
7 -import org.springframework.core.env.Environment;  
8 import org.springframework.mail.javamail.JavaMailSender; 8 import org.springframework.mail.javamail.JavaMailSender;
9 import org.springframework.mail.javamail.JavaMailSenderImpl; 9 import org.springframework.mail.javamail.JavaMailSenderImpl;
10 10
11 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;  
12 -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;  
13 -  
14 import java.util.Properties; 11 import java.util.Properties;
15 12
16 @Configuration 13 @Configuration
src/main/java/br/gov/planejamento/dipla/protocolo/config/SecurityConfig.java
1 package br.gov.planejamento.dipla.protocolo.config; 1 package br.gov.planejamento.dipla.protocolo.config;
2 2
  3 +import br.gov.planejamento.dipla.protocolo.handler.LogoutBrasilCidadaoHandler;
  4 +import br.gov.planejamento.dipla.protocolo.security.CustomAuthenticationFailureHandler;
3 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Bean;
5 -import org.springframework.context.annotation.Configuration;  
6 -import org.springframework.core.annotation.Order;  
7 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 7 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
8 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 8 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9 import org.springframework.security.config.annotation.web.builders.WebSecurity; 9 import org.springframework.security.config.annotation.web.builders.WebSecurity;
@@ -12,14 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur @@ -12,14 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
12 import org.springframework.security.core.userdetails.UserDetailsService; 12 import org.springframework.security.core.userdetails.UserDetailsService;
13 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 13 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
14 import org.springframework.security.crypto.password.PasswordEncoder; 14 import org.springframework.security.crypto.password.PasswordEncoder;
15 -import org.springframework.security.web.authentication.AuthenticationFailureHandler;  
16 -import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;  
17 -import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;  
18 import org.springframework.security.web.util.matcher.AntPathRequestMatcher; 15 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
19 16
20 -import br.gov.planejamento.dipla.protocolo.handler.LogoutBrasilCidadaoHandler;  
21 -import br.gov.planejamento.dipla.protocolo.security.CustomAuthenticationFailureHandler;  
22 -  
23 17
24 18
25 /** 19 /**
src/main/java/br/gov/planejamento/dipla/protocolo/config/ServiceConfig.java
@@ -7,12 +7,8 @@ import br.gov.planejamento.dipla.protocolo.storage.local.ArquivoStorageLocal; @@ -7,12 +7,8 @@ import br.gov.planejamento.dipla.protocolo.storage.local.ArquivoStorageLocal;
7 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration; 9 import org.springframework.context.annotation.Configuration;
10 -import org.springframework.context.annotation.PropertySource;  
11 -import org.springframework.core.env.Environment;  
12 import org.springframework.util.StringUtils; 10 import org.springframework.util.StringUtils;
13 11
14 -import java.io.IOException;  
15 -import java.nio.file.Files;  
16 import java.nio.file.Path; 12 import java.nio.file.Path;
17 13
18 import static java.nio.file.FileSystems.getDefault; 14 import static java.nio.file.FileSystems.getDefault;
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/ArquivosController.java
@@ -10,12 +10,9 @@ import br.gov.planejamento.dipla.protocolo.repositories.ArquivosRepository; @@ -10,12 +10,9 @@ import br.gov.planejamento.dipla.protocolo.repositories.ArquivosRepository;
10 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository; 10 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
11 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage; 11 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
12 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorageRunnable; 12 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorageRunnable;
13 -import org.apache.tomcat.util.threads.ThreadPoolExecutor;  
14 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.http.MediaType; 14 import org.springframework.http.MediaType;
16 import org.springframework.http.ResponseEntity; 15 import org.springframework.http.ResponseEntity;
17 -import org.springframework.scheduling.config.Task;  
18 -import org.springframework.security.access.method.P;  
19 import org.springframework.web.bind.annotation.*; 16 import org.springframework.web.bind.annotation.*;
20 import org.springframework.web.context.request.async.DeferredResult; 17 import org.springframework.web.context.request.async.DeferredResult;
21 import org.springframework.web.multipart.MultipartFile; 18 import org.springframework.web.multipart.MultipartFile;
@@ -23,13 +20,10 @@ import org.springframework.web.servlet.ModelAndView; @@ -23,13 +20,10 @@ import org.springframework.web.servlet.ModelAndView;
23 import org.springframework.web.util.UriUtils; 20 import org.springframework.web.util.UriUtils;
24 21
25 import javax.servlet.http.HttpServletRequest; 22 import javax.servlet.http.HttpServletRequest;
  23 +import java.io.File;
26 import java.io.IOException; 24 import java.io.IOException;
27 -import java.net.MalformedURLException;  
28 -import java.net.URLEncoder;  
29 -import java.nio.file.Files;  
30 import java.util.Base64; 25 import java.util.Base64;
31 import java.util.List; 26 import java.util.List;
32 -import java.io.*;  
33 27
34 28
35 29
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/ConfiguracaoController.java
1 package br.gov.planejamento.dipla.protocolo.controllers; 1 package br.gov.planejamento.dipla.protocolo.controllers;
2 2
3 -import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig.UrlBrasilCidadao;  
4 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper; 3 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper;
5 -import br.gov.planejamento.dipla.protocolo.controllers.sessions.ArquivosSession;  
6 -import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;  
7 -import br.gov.planejamento.dipla.protocolo.dto.MetadadosDTO;  
8 import br.gov.planejamento.dipla.protocolo.entities.Configuracao; 4 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
9 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail; 5 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
10 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;  
11 -import br.gov.planejamento.dipla.protocolo.entities.EmailEnum;  
12 import br.gov.planejamento.dipla.protocolo.entities.Metadado; 6 import br.gov.planejamento.dipla.protocolo.entities.Metadado;
13 -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;  
14 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;  
15 -import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;  
16 -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;  
17 import br.gov.planejamento.dipla.protocolo.mail.Mailer; 7 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
18 import br.gov.planejamento.dipla.protocolo.repositories.ClassificacaoRepository; 8 import br.gov.planejamento.dipla.protocolo.repositories.ClassificacaoRepository;
19 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository; 9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository;
20 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository; 10 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
21 -import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;  
22 -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;  
23 -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;  
24 import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter; 11 import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
25 -import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter;  
26 -import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;  
27 -import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;  
28 import br.gov.planejamento.dipla.protocolo.services.ConfiguracaoEmailService; 12 import br.gov.planejamento.dipla.protocolo.services.ConfiguracaoEmailService;
29 import br.gov.planejamento.dipla.protocolo.services.ConfiguracaoService; 13 import br.gov.planejamento.dipla.protocolo.services.ConfiguracaoService;
30 -import br.gov.planejamento.dipla.protocolo.services.EnviarProtocoloService;  
31 -import br.gov.planejamento.dipla.protocolo.services.SalvarProtocoloService;  
32 -import br.gov.planejamento.dipla.protocolo.services.UnidadeService;  
33 -import br.gov.planejamento.dipla.protocolo.services.ProtocoloFlagService;  
34 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
35 -import org.springframework.beans.factory.annotation.Value;  
36 -import org.springframework.context.annotation.Bean;  
37 import org.springframework.data.domain.Pageable; 15 import org.springframework.data.domain.Pageable;
38 import org.springframework.data.web.PageableDefault; 16 import org.springframework.data.web.PageableDefault;
39 -import org.springframework.http.MediaType;  
40 -import org.springframework.http.ResponseEntity;  
41 -import org.springframework.security.core.annotation.AuthenticationPrincipal;  
42 import org.springframework.stereotype.Controller; 17 import org.springframework.stereotype.Controller;
43 -import org.springframework.util.CollectionUtils;  
44 -import org.springframework.util.StringUtils;  
45 import org.springframework.validation.BindingResult; 18 import org.springframework.validation.BindingResult;
46 -import org.springframework.web.bind.annotation.*; 19 +import org.springframework.web.bind.annotation.GetMapping;
  20 +import org.springframework.web.bind.annotation.PathVariable;
  21 +import org.springframework.web.bind.annotation.PostMapping;
  22 +import org.springframework.web.bind.annotation.RequestMapping;
47 import org.springframework.web.servlet.ModelAndView; 23 import org.springframework.web.servlet.ModelAndView;
48 import org.springframework.web.servlet.mvc.support.RedirectAttributes; 24 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
49 -import java.util.Optional;  
50 -import br.gov.planejamento.dipla.protocolo.response.Response;  
51 -import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;  
52 25
53 import javax.servlet.http.HttpServletRequest; 26 import javax.servlet.http.HttpServletRequest;
54 import javax.validation.Valid; 27 import javax.validation.Valid;
55 -  
56 -import java.util.ArrayList;  
57 -import java.util.Date;  
58 import java.util.Iterator; 28 import java.util.Iterator;
59 import java.util.List; 29 import java.util.List;
60 -import java.util.UUID;  
61 -import org.springframework.validation.ObjectError;  
62 30
63 31
64 /** 32 /**
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/LoginController.java
1 package br.gov.planejamento.dipla.protocolo.controllers; 1 package br.gov.planejamento.dipla.protocolo.controllers;
2 2
  3 +import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
  4 +import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
  5 +import br.gov.planejamento.dipla.protocolo.entities.Usuario;
  6 +import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
  7 +import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
  8 +import br.gov.planejamento.dipla.protocolo.security.LoginAttemptService;
  9 +import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
  10 +import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
  11 +import br.gov.planejamento.dipla.protocolo.services.BrasilCidadaoService;
3 import org.slf4j.Logger; 12 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory; 13 import org.slf4j.LoggerFactory;
5 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.beans.factory.annotation.Value; 15 import org.springframework.beans.factory.annotation.Value;
7 -import org.springframework.http.HttpEntity;  
8 -import org.springframework.http.HttpMethod;  
9 -import org.springframework.http.ResponseEntity;  
10 -import org.springframework.http.converter.StringHttpMessageConverter;  
11 -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;  
12 -import org.springframework.security.core.GrantedAuthority;  
13 import org.springframework.security.core.annotation.AuthenticationPrincipal; 16 import org.springframework.security.core.annotation.AuthenticationPrincipal;
14 -import org.springframework.security.core.authority.SimpleGrantedAuthority;  
15 import org.springframework.security.core.context.SecurityContextHolder; 17 import org.springframework.security.core.context.SecurityContextHolder;
16 import org.springframework.security.core.userdetails.User; 18 import org.springframework.security.core.userdetails.User;
17 -import org.springframework.security.crypto.password.PasswordEncoder;  
18 import org.springframework.stereotype.Controller; 19 import org.springframework.stereotype.Controller;
19 -import org.springframework.web.bind.annotation.*;  
20 import org.springframework.web.bind.annotation.GetMapping; 20 import org.springframework.web.bind.annotation.GetMapping;
21 -import org.springframework.web.bind.annotation.PathVariable;  
22 import org.springframework.web.bind.annotation.RequestMapping; 21 import org.springframework.web.bind.annotation.RequestMapping;
23 -import org.springframework.web.bind.annotation.RequestMethod;  
24 import org.springframework.web.bind.annotation.RequestParam; 22 import org.springframework.web.bind.annotation.RequestParam;
25 import org.springframework.web.servlet.ModelAndView; 23 import org.springframework.web.servlet.ModelAndView;
26 24
27 -import com.fasterxml.jackson.core.JsonParseException;  
28 -import com.fasterxml.jackson.databind.JsonMappingException;  
29 -import com.fasterxml.jackson.databind.ObjectMapper;  
30 -  
31 -import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;  
32 -import br.gov.planejamento.dipla.protocolo.dto.TokenRetornoDto;  
33 -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;  
34 -import br.gov.planejamento.dipla.protocolo.entities.Grupo;  
35 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;  
36 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
37 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;  
38 -import br.gov.planejamento.dipla.protocolo.mail.Mailer;  
39 -import br.gov.planejamento.dipla.protocolo.repositories.*;  
40 -import br.gov.planejamento.dipla.protocolo.security.BrasilCidadaoUserDetails;  
41 -import br.gov.planejamento.dipla.protocolo.security.LoginAttemptService;  
42 -import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;  
43 -import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;  
44 -import br.gov.planejamento.dipla.protocolo.services.BrasilCidadaoService;  
45 -import br.gov.planejamento.dipla.protocolo.services.CadastroUsuarioService;  
46 -  
47 -import java.io.IOException;  
48 -import java.nio.charset.Charset;  
49 -import java.util.ArrayList;  
50 -import java.util.Arrays;  
51 -import java.util.Collection;  
52 -import java.util.Enumeration;  
53 -import java.util.HashSet; 25 +import javax.servlet.http.HttpServletRequest;
54 import java.util.List; 26 import java.util.List;
55 import java.util.Optional; 27 import java.util.Optional;
56 -import java.util.Set;  
57 -  
58 -  
59 -import javax.servlet.http.HttpServletRequest;  
60 28
61 /** 29 /**
62 * @author Leonardo Dias 30 * @author Leonardo Dias
@@ -143,18 +111,21 @@ public class LoginController { @@ -143,18 +111,21 @@ public class LoginController {
143 mv.addObject("email",usuarioretorno.getEmail()); 111 mv.addObject("email",usuarioretorno.getEmail());
144 112
145 }else if(!usuarioBrasilCidadao.isPresent()) { 113 }else if(!usuarioBrasilCidadao.isPresent()) {
146 -  
147 - //Primeiro Acesso  
148 - if(!usuarioEmailExistente.isPresent()) {  
149 - autoCadastroService.cadastrarBrasilCidadao(usuarioretorno);  
150 - }  
151 - autoCadastroService.migrarBrasilCidadao(usuarioretorno);  
152 - autoCadastroService.enviarConsiliacaoUsuario(usuarioBrasilCidadao.get(),usuarioretorno.getEmail(),baseUrl);  
153 - mv.addObject("modalConfirmacaoBrasilCidadao",true);  
154 - mv.addObject("email",usuarioretorno.getEmail());  
155 - }  
156 -  
157 - } 114 +
  115 + Usuario usuario = new Usuario();
  116 +
  117 + //Primeiro Acesso
  118 + if(!usuarioEmailExistente.isPresent()) {
  119 + usuario = autoCadastroService.cadastrarBrasilCidadao(usuarioretorno);
  120 + }else{
  121 + usuario = usuarioEmailExistente.get();
  122 + }
  123 + UsuarioBrasilCidadao usuarioBrasilCidadaoRetorno = autoCadastroService.migrarBrasilCidadao(usuarioretorno, usuario);
  124 + autoCadastroService.enviarConsiliacaoUsuario(usuarioBrasilCidadaoRetorno, usuario.getEmail(),baseUrl);
  125 + mv.addObject("modalConfirmacaoBrasilCidadao",true);
  126 + mv.addObject("email",usuarioretorno.getEmail());
  127 + }
  128 + }
158 }catch (Exception e){ 129 }catch (Exception e){
159 msgErro=e.getMessage(); 130 msgErro=e.getMessage();
160 } 131 }
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/ProtocoloController.java
@@ -3,16 +3,18 @@ package br.gov.planejamento.dipla.protocolo.controllers; @@ -3,16 +3,18 @@ package br.gov.planejamento.dipla.protocolo.controllers;
3 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper; 3 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper;
4 import br.gov.planejamento.dipla.protocolo.controllers.sessions.ArquivosSession; 4 import br.gov.planejamento.dipla.protocolo.controllers.sessions.ArquivosSession;
5 import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO; 5 import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;
  6 +import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;
6 import br.gov.planejamento.dipla.protocolo.entities.Protocolo; 7 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
7 import br.gov.planejamento.dipla.protocolo.entities.StatusEnum; 8 import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;
8 import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository; 9 import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
9 import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository; 10 import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;
10 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository; 11 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
11 import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter; 12 import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter;
  13 +import br.gov.planejamento.dipla.protocolo.response.Response;
12 import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema; 14 import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
13 import br.gov.planejamento.dipla.protocolo.services.*; 15 import br.gov.planejamento.dipla.protocolo.services.*;
  16 +import org.hibernate.service.spi.ServiceException;
14 import org.springframework.beans.factory.annotation.Autowired; 17 import org.springframework.beans.factory.annotation.Autowired;
15 -import org.springframework.beans.factory.annotation.Value;  
16 import org.springframework.data.domain.Pageable; 18 import org.springframework.data.domain.Pageable;
17 import org.springframework.data.web.PageableDefault; 19 import org.springframework.data.web.PageableDefault;
18 import org.springframework.http.ResponseEntity; 20 import org.springframework.http.ResponseEntity;
@@ -23,391 +25,396 @@ import org.springframework.util.StringUtils; @@ -23,391 +25,396 @@ import org.springframework.util.StringUtils;
23 import org.springframework.validation.BindingResult; 25 import org.springframework.validation.BindingResult;
24 import org.springframework.web.bind.annotation.*; 26 import org.springframework.web.bind.annotation.*;
25 import org.springframework.web.servlet.ModelAndView; 27 import org.springframework.web.servlet.ModelAndView;
  28 +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
26 import org.springframework.web.servlet.mvc.support.RedirectAttributes; 29 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
27 30
28 -import java.io.IOException;  
29 -import java.util.Optional;  
30 -import br.gov.planejamento.dipla.protocolo.response.Response;  
31 -import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;  
32 -  
33 import javax.servlet.http.HttpServletRequest; 31 import javax.servlet.http.HttpServletRequest;
34 import javax.validation.Valid; 32 import javax.validation.Valid;
35 -  
36 -import java.util.HashMap; 33 +import java.io.IOException;
37 import java.util.List; 34 import java.util.List;
38 -import java.util.Map; 35 +import java.util.Optional;
39 import java.util.UUID; 36 import java.util.UUID;
40 import java.util.concurrent.CompletableFuture; 37 import java.util.concurrent.CompletableFuture;
41 38
42 -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;  
43 -  
44 -import org.hibernate.service.spi.ServiceException;  
45 -  
46 -  
47 /** 39 /**
48 * @author Leonardo Dias 40 * @author Leonardo Dias
49 */ 41 */
50 @Controller 42 @Controller
51 public class ProtocoloController { 43 public class ProtocoloController {
52 44
53 - @Autowired  
54 - private ArquivosSession arquivosSession;  
55 -  
56 - @Autowired  
57 - private TiposDocumentoRepository tipoDocumentoRepository;  
58 -  
59 - @Autowired  
60 - private UsuarioRepository usuarioRepository;  
61 -  
62 - @Autowired  
63 - private ProtocoloRepository protocoloRepository;  
64 -  
65 - @Autowired  
66 - private EnviarProtocoloService enviarProtocoloService;  
67 -  
68 - @Autowired  
69 - private SalvarProtocoloService salvarProtocoloService;  
70 -  
71 - @Autowired  
72 - private UnidadeService unidadeService;  
73 -  
74 - @Autowired  
75 - private ProtocoloFlagService protocoloFlagService;  
76 -  
77 - @Autowired  
78 - private EventServerService eventServerService;  
79 -  
80 - private final int DEFAULT_PAGEABLE_SIZE = 10;  
81 -  
82 - @GetMapping("/")  
83 - public ModelAndView principal(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {  
84 - List<String> permissoes = usuarioRepository.permissoes(usuarioSistema.getUsuario());  
85 - if (permissoes.contains("ROLE_CADASTRO") & usuarioSistema.getUsuario().getTemPerfilBrasilCidadao() == null) {  
86 - ModelAndView mv = new ModelAndView("Dashboard");  
87 - mv.addObject("usuario", usuarioSistema.getUsuario());  
88 - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());  
89 - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());  
90 - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());  
91 - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());  
92 - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());  
93 - mv.addObject("unidades", unidadeService.obterUnidades());  
94 - return mv;  
95 - }  
96 -  
97 - return enviar(protocolo, usuarioSistema);  
98 - }  
99 -  
100 - @GetMapping("/pendentes")  
101 - public ModelAndView pesquisaProtocolosPendentes(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {  
102 - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosPendentes");  
103 - filter.setStatus(StatusEnum.PENDENTE);  
104 - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);  
105 - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());  
106 - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());  
107 - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());  
108 - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());  
109 - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());  
110 - mv.addObject("pagina", paginaWrapper);  
111 - return mv;  
112 - }  
113 -  
114 - @GetMapping("/aprovados")  
115 - public ModelAndView pesquisaProtocolosAprovados(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {  
116 - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovados");  
117 - filter.setStatus(StatusEnum.APROVADO);  
118 - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);  
119 - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());  
120 - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());  
121 - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());  
122 - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());  
123 - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());  
124 - mv.addObject("pagina", paginaWrapper);  
125 - return mv;  
126 - }  
127 -  
128 - @GetMapping("/aprovadosManualmente")  
129 - public ModelAndView pesquisaProtocolosAprovadosManualmente(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {  
130 - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovadosManualmente");  
131 - filter.setStatus(StatusEnum.APROVADO_MANUALMENTE);  
132 - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);  
133 - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());  
134 - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());  
135 - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());  
136 - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());  
137 - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());  
138 - mv.addObject("pagina", paginaWrapper);  
139 - return mv;  
140 - }  
141 -  
142 - @GetMapping("/reprovados")  
143 - public ModelAndView pesquisaProtocolosReprovados(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {  
144 - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosReprovados");  
145 - filter.setStatus(StatusEnum.REPROVADO);  
146 - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);  
147 - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());  
148 - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());  
149 - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());  
150 - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());  
151 - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());  
152 - mv.addObject("pagina", paginaWrapper);  
153 - return mv;  
154 - }  
155 -  
156 - @GetMapping("/analisando")  
157 - public ModelAndView pesquisaProtocolosAnalisando(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {  
158 - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAnalisando");  
159 - filter.setStatus(StatusEnum.ANALISANDO);  
160 - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);  
161 - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());  
162 - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());  
163 - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());  
164 - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());  
165 - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());  
166 - mv.addObject("pagina", paginaWrapper);  
167 - return mv;  
168 - }  
169 -  
170 - @GetMapping("/opcoes")  
171 - public ModelAndView opcoes() {  
172 - return new ModelAndView("/protocolo/OpcoesProtocolo");  
173 - }  
174 -  
175 - @GetMapping("/enviar")  
176 - public ModelAndView enviar(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {  
177 - if (StringUtils.isEmpty(protocolo.getUuid())) {  
178 - protocolo.setUuid(UUID.randomUUID().toString());  
179 - protocolo.setPossuiProtocoloAnterior("N");  
180 - }  
181 - ModelAndView mv = new ModelAndView("/protocolo/CadastroProtocolo");  
182 - mv.addObject("usuario", usuarioSistema.getUsuario());  
183 - mv.addObject("tiposDocumento", tipoDocumentoRepository.findByAtivo(true));  
184 - mv.addObject("unidades", unidadeService.obterUnidades());  
185 - return mv;  
186 - }  
187 -  
188 - @PostMapping("/enviar")  
189 - public ModelAndView enviar(@Valid Protocolo protocolo, BindingResult result, RedirectAttributes attributes, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {  
190 - if ("S".equals(protocolo.getPossuiProtocoloAnterior()) && StringUtils.isEmpty(protocolo.getNumeroProtocoloAnterior())) {  
191 - result.rejectValue("numeroProtocoloAnterior", "Número do protocolo Anterior é obrigatório.", "Número do protocolo Anterior é obrigatório.");  
192 - return enviar(protocolo, usuarioSistema);  
193 - }  
194 -  
195 - if (result.hasErrors()) {  
196 - return enviar(protocolo, usuarioSistema);  
197 - }  
198 -  
199 - List<ArquivoDTO> arquivoDTOList = arquivosSession.obterArquivos(protocolo.getUuid());  
200 -  
201 - if (CollectionUtils.isEmpty(arquivoDTOList)) {  
202 - String msg = "Nenhum arquivo anexado, favor incluir algum arquivo antes de efetuar a protocolização.";  
203 - result.rejectValue("arquivo", msg, msg);  
204 - return enviar(protocolo, usuarioSistema);  
205 - }  
206 -  
207 - protocolo.setUsuario(usuarioSistema.getUsuario());  
208 - enviarProtocoloService.enviar(protocolo, arquivoDTOList);  
209 - attributes.addFlashAttribute("mensagem", String.format("Protocolo Nº %s salvo com sucesso.", protocolo.getNumero()));  
210 - return new ModelAndView("redirect:/enviar");  
211 - }  
212 -  
213 - @GetMapping("/meus-protocolos")  
214 - public ModelAndView meusProtocolos(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {  
215 - ModelAndView mv = new ModelAndView("protocolo/MeusProtocolos");  
216 -  
217 - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrarMeusProtocolos(usuarioSistema.getUsuario(), filter, pageable), httpServletRequest);  
218 - mv.addObject("pagina", paginaWrapper);  
219 -  
220 - return mv;  
221 - }  
222 -  
223 - @GetMapping("/reenvioRecibo/{codigo}")  
224 - public @ResponseBody  
225 - ResponseEntity<?> reenviarRecibo(@PathVariable("codigo") Protocolo protocolo,@RequestParam(value = "email", required = false) String email) {  
226 - enviarProtocoloService.reenviarRecibo(protocolo,email);  
227 - Response<String> response = new Response<String>();  
228 - String resposta=null;  
229 - if(!email.isEmpty()||email!=null) {  
230 - resposta=email;  
231 - }  
232 - if(!protocolo.getEmail1().isEmpty()&&protocolo.getEmail1()!=null&&protocolo.getEmail1()!="") {  
233 - resposta=resposta+" "+protocolo.getEmail1();  
234 - }  
235 - if(!protocolo.getEmail2().isEmpty()&&protocolo.getEmail2()!=null&&protocolo.getEmail2()!="") {  
236 - resposta=resposta+" "+protocolo.getEmail2();  
237 - }  
238 - if(!protocolo.getUsuario().getEmail().isEmpty()&&protocolo.getUsuario().getEmail()!=null&&protocolo.getUsuario().getEmail()!="") {  
239 - resposta=resposta+" "+protocolo.getUsuario().getEmail();  
240 - }  
241 - response.setData(resposta);  
242 - return ResponseEntity.ok(response);  
243 - }  
244 -  
245 -  
246 - @RequestMapping("/stream")  
247 - public SseEmitter enableNotifier(){  
248 - //SseEmitter notifier = new SseEmitter();  
249 - return eventServerService;  
250 - }  
251 -  
252 - @PutMapping("/aprovar/{codigo}")  
253 - public @ResponseBody  
254 - ResponseEntity<?> aprovar(@PathVariable("codigo") Protocolo protocolo, @RequestParam(value = "sei", required = false) String sei, @RequestParam(value = "tipo", required = false) String tipo) {  
255 - //SseEmitter sseEmitter = new SseEmitter();  
256 - CompletableFuture.supplyAsync( () -> {  
257 - try {  
258 - enviarProtocoloService.enviarSEI( protocolo, sei, tipo );  
259 - return "Sincronizado com Sucesso !";  
260 - } catch (ServiceException e) {  
261 - return e.getMessage();  
262 - } catch (Exception e) {  
263 - return e.getMessage();  
264 - }  
265 - } )  
266 - .whenCompleteAsync( (result, throwable) -> {  
267 - try {  
268 - eventServerService.send( result );  
269 - } catch (IOException e) {  
270 - e.printStackTrace();  
271 - }  
272 - } )  
273 - .exceptionally( ex -> {  
274 - try {  
275 - eventServerService.send( ex.getMessage() );  
276 - } catch (Exception e) {  
277 - e.printStackTrace();  
278 - }  
279 - return "erro";  
280 - } );  
281 -  
282 - return ResponseEntity.ok().build();  
283 - }  
284 -  
285 - @PutMapping("/aprovarManualmente/{sei}/{codigo}")  
286 - public @ResponseBody  
287 - ResponseEntity<?> aprovarManualmente(@PathVariable("sei") String sei, @PathVariable("codigo") Protocolo protocolo) {  
288 - protocolo.setNupe(sei);  
289 - salvarProtocoloService.aprovarManualmente(protocolo);  
290 - return ResponseEntity.ok().build();  
291 - }  
292 -  
293 - @GetMapping("/aprovarManualmente/{sei}")  
294 - public ResponseEntity<Response<String>> consultarSei(@PathVariable("sei") String sei) {  
295 - Optional<String> linkSei = enviarProtocoloService.consultarSei(sei);  
296 - Response<String> response = new Response<String>();  
297 - if (!linkSei.isPresent()) {  
298 - response.getErrors().add("Nº SEI não encontrado: " + sei);  
299 - return ResponseEntity.badRequest().body(response);  
300 - }  
301 - response.setData(linkSei.get());  
302 - return ResponseEntity.ok(response);  
303 - }  
304 -  
305 - @PutMapping("/reprovar/{codigo}")  
306 - public @ResponseBody  
307 - ResponseEntity<?> reprovar(@PathVariable("codigo") Protocolo protocolo, @RequestBody String observacao) {  
308 - protocolo.setObservacao(observacao);  
309 - enviarProtocoloService.recusar(protocolo);  
310 - return ResponseEntity.ok().build();  
311 - }  
312 -  
313 - /**  
314 - * atulizado o status de pendente para analise na tabela protocolo  
315 - *  
316 - * @param protocolo  
317 - * @return ResponseEntity  
318 - */  
319 - @PutMapping("/atualizarFlag/{codigo}")  
320 - public @ResponseBody  
321 - ResponseEntity<?> atualizarflag(@PathVariable("codigo") Protocolo protocolo) {  
322 - salvarProtocoloService.analisando(protocolo);  
323 - return ResponseEntity.ok().build();  
324 - }  
325 -  
326 - /**  
327 - * atulizado o status para pendente  
328 - *  
329 - * @param protocolo  
330 - * @return ResponseEntity  
331 - */  
332 - @PutMapping("/atuzalizarFlagPendente/{codigo}")  
333 - public @ResponseBody  
334 - ResponseEntity<?> atuzalizarFlagPendente(@PathVariable("codigo") Protocolo protocolo) {  
335 - salvarProtocoloService.pendente(protocolo);  
336 - return ResponseEntity.ok().build();  
337 - }  
338 -  
339 - /**  
340 - * método para reprovar o protocolo  
341 - *  
342 - * @param protocolo  
343 - * @return ResponseEntity  
344 - */  
345 - @PutMapping("/atuzalizarFlagReprovado/{codigo}")  
346 - public @ResponseBody  
347 - ResponseEntity<?> atuzalizarFlagReprovado(@PathVariable("codigo") Protocolo protocolo) {  
348 - salvarProtocoloService.reprovar(protocolo);  
349 - return ResponseEntity.ok().build();  
350 - }  
351 -  
352 - /**  
353 - * método para retirar o protocolo da análise  
354 - *  
355 - * @param protocolo  
356 - * @return ResponseEntity  
357 - */  
358 - @PutMapping("/retirarAnalise")  
359 - public @ResponseBody  
360 - ResponseEntity<?> retirarAnalise(@RequestParam("codigo") Protocolo protocolo) {  
361 - salvarProtocoloService.pendente(protocolo);  
362 - return ResponseEntity.ok().build();  
363 - }  
364 -  
365 - /**  
366 - * método para retirar o protocolo da análise e deixar reprovado  
367 - *  
368 - * @param protocolo  
369 - * @return ResponseEntity  
370 - */  
371 - @PutMapping("/retirarAnaliseReprovado")  
372 - public @ResponseBody  
373 - ResponseEntity<?> retirarAnaliseReprovado(@RequestParam("codigo") Protocolo protocolo) {  
374 - salvarProtocoloService.reprovar(protocolo);  
375 - return ResponseEntity.ok().build();  
376 - }  
377 -  
378 - /**  
379 - * busca o status passado o código  
380 - *  
381 - * @param codigo  
382 - * @return ResponseEntity  
383 - */  
384 - @GetMapping(value = "/buscarFlag/{codigo}")  
385 - public ResponseEntity<Response<ProtocoloFlagDTO>> buscarStatusPorCodigp(@PathVariable("codigo") Long codigo) {  
386 - Response<ProtocoloFlagDTO> response = new Response<ProtocoloFlagDTO>();  
387 - Optional<Protocolo> protocolo = protocoloFlagService.buscarStatusPorCodigo(codigo);  
388 -  
389 - if (!protocolo.isPresent()) {  
390 - response.getErrors().add("Status não encontrado para o código: " + codigo);  
391 - return ResponseEntity.badRequest().body(response);  
392 - }  
393 -  
394 - response.setData(this.converterProtocoloFlagDto(protocolo.get()));  
395 - return ResponseEntity.ok(response);  
396 - }  
397 -  
398 - /**  
399 - * convertendo a entidade para objeto DTO  
400 - *  
401 - * @param protocolo  
402 - * @return protocoloFlagDTO  
403 - */  
404 - private ProtocoloFlagDTO converterProtocoloFlagDto(Protocolo protocolo) {  
405 - ProtocoloFlagDTO protocoloFlagDTO = new ProtocoloFlagDTO();  
406 - protocoloFlagDTO.setStatus(protocolo.getStatus().toString());  
407 - //protocoloFlagDTO.setObservacao(Optional.of(protocolo.getObservacao().toString()));  
408 - //protocoloFlagDTO.setObservacao().ifPresent(x -> protocolo.getObservacao(x.toString()));  
409 - protocolo.getObservacaoOpt().ifPresent(observacao -> protocoloFlagDTO.setObservacao(Optional.of(observacao.toString())));  
410 - return protocoloFlagDTO;  
411 - } 45 + @Autowired
  46 + private ArquivosSession arquivosSession;
  47 +
  48 + @Autowired
  49 + private TiposDocumentoRepository tipoDocumentoRepository;
  50 +
  51 + @Autowired
  52 + private UsuarioRepository usuarioRepository;
  53 +
  54 + @Autowired
  55 + private ProtocoloRepository protocoloRepository;
  56 +
  57 + @Autowired
  58 + private EnviarProtocoloService enviarProtocoloService;
  59 +
  60 + @Autowired
  61 + private SalvarProtocoloService salvarProtocoloService;
  62 +
  63 + @Autowired
  64 + private UnidadeService unidadeService;
  65 +
  66 + @Autowired
  67 + private ProtocoloFlagService protocoloFlagService;
  68 +
  69 + @Autowired
  70 + private EventServerService eventServerService;
  71 +
  72 + private final int DEFAULT_PAGEABLE_SIZE = 10;
  73 +
  74 + @GetMapping("/")
  75 + public ModelAndView principal(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  76 + List<String> permissoes = usuarioRepository.permissoes(usuarioSistema.getUsuario());
  77 + if (permissoes.contains("ROLE_CADASTRO") & usuarioSistema.getUsuario().getTemPerfilBrasilCidadao() == null) {
  78 + ModelAndView mv = new ModelAndView("Dashboard");
  79 + mv.addObject("usuario", usuarioSistema.getUsuario());
  80 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  81 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  82 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  83 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  84 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  85 + mv.addObject("unidades", unidadeService.obterUnidades());
  86 + return mv;
  87 + }
  88 +
  89 + return enviar(protocolo, usuarioSistema);
  90 + }
  91 +
  92 + @GetMapping("/pendentes")
  93 + public ModelAndView pesquisaProtocolosPendentes(ProtocoloFilter filter, BindingResult result,
  94 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  95 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosPendentes");
  96 + filter.setStatus(StatusEnum.PENDENTE);
  97 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  98 + httpServletRequest);
  99 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  100 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  101 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  102 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  103 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  104 + mv.addObject("pagina", paginaWrapper);
  105 + return mv;
  106 + }
  107 +
  108 + @GetMapping("/aprovados")
  109 + public ModelAndView pesquisaProtocolosAprovados(ProtocoloFilter filter, BindingResult result,
  110 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  111 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovados");
  112 + filter.setStatus(StatusEnum.APROVADO);
  113 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  114 + httpServletRequest);
  115 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  116 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  117 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  118 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  119 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  120 + mv.addObject("pagina", paginaWrapper);
  121 + return mv;
  122 + }
  123 +
  124 + @GetMapping("/aprovadosManualmente")
  125 + public ModelAndView pesquisaProtocolosAprovadosManualmente(ProtocoloFilter filter, BindingResult result,
  126 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  127 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovadosManualmente");
  128 + filter.setStatus(StatusEnum.APROVADO_MANUALMENTE);
  129 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  130 + httpServletRequest);
  131 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  132 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  133 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  134 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  135 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  136 + mv.addObject("pagina", paginaWrapper);
  137 + return mv;
  138 + }
  139 +
  140 + @GetMapping("/reprovados")
  141 + public ModelAndView pesquisaProtocolosReprovados(ProtocoloFilter filter, BindingResult result,
  142 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  143 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosReprovados");
  144 + filter.setStatus(StatusEnum.REPROVADO);
  145 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  146 + httpServletRequest);
  147 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  148 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  149 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  150 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  151 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  152 + mv.addObject("pagina", paginaWrapper);
  153 + return mv;
  154 + }
  155 +
  156 + @GetMapping("/analisando")
  157 + public ModelAndView pesquisaProtocolosAnalisando(ProtocoloFilter filter, BindingResult result,
  158 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  159 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAnalisando");
  160 + filter.setStatus(StatusEnum.ANALISANDO);
  161 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  162 + httpServletRequest);
  163 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  164 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  165 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  166 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  167 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  168 + mv.addObject("pagina", paginaWrapper);
  169 + return mv;
  170 + }
  171 +
  172 + @GetMapping("/opcoes")
  173 + public ModelAndView opcoes() {
  174 + return new ModelAndView("/protocolo/OpcoesProtocolo");
  175 + }
  176 +
  177 + @GetMapping("/enviar")
  178 + public ModelAndView enviar(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  179 + if (StringUtils.isEmpty(protocolo.getUuid())) {
  180 + protocolo.setUuid(UUID.randomUUID().toString());
  181 + protocolo.setPossuiProtocoloAnterior("N");
  182 + }
  183 + ModelAndView mv = new ModelAndView("/protocolo/CadastroProtocolo");
  184 + mv.addObject("usuario", usuarioSistema.getUsuario());
  185 + mv.addObject("tiposDocumento", tipoDocumentoRepository.findByAtivo(true));
  186 + mv.addObject("unidades", unidadeService.obterUnidades());
  187 + return mv;
  188 + }
  189 +
  190 + @PostMapping("/enviar")
  191 + public ModelAndView enviar(@Valid Protocolo protocolo, BindingResult result, RedirectAttributes attributes,
  192 + @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  193 + if ("S".equals(protocolo.getPossuiProtocoloAnterior())
  194 + && StringUtils.isEmpty(protocolo.getNumeroProtocoloAnterior())) {
  195 + result.rejectValue("numeroProtocoloAnterior", "Número do protocolo Anterior é obrigatório.",
  196 + "Número do protocolo Anterior é obrigatório.");
  197 + return enviar(protocolo, usuarioSistema);
  198 + }
  199 +
  200 + if (result.hasErrors()) {
  201 + return enviar(protocolo, usuarioSistema);
  202 + }
  203 +
  204 + List<ArquivoDTO> arquivoDTOList = arquivosSession.obterArquivos(protocolo.getUuid());
  205 +
  206 + if (CollectionUtils.isEmpty(arquivoDTOList)) {
  207 + String msg = "Nenhum arquivo anexado, favor incluir algum arquivo antes de efetuar a protocolização.";
  208 + result.rejectValue("arquivo", msg, msg);
  209 + return enviar(protocolo, usuarioSistema);
  210 + }
  211 +
  212 + protocolo.setUsuario(usuarioSistema.getUsuario());
  213 + enviarProtocoloService.enviar(protocolo, arquivoDTOList);
  214 + attributes.addFlashAttribute("mensagem",
  215 + String.format("Protocolo Nº %s salvo com sucesso.", protocolo.getNumero()));
  216 + return new ModelAndView("redirect:/enviar");
  217 + }
  218 +
  219 + @GetMapping("/meus-protocolos")
  220 + public ModelAndView meusProtocolos(ProtocoloFilter filter, BindingResult result,
  221 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest,
  222 + @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  223 + ModelAndView mv = new ModelAndView("protocolo/MeusProtocolos");
  224 +
  225 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(
  226 + protocoloRepository.filtrarMeusProtocolos(usuarioSistema.getUsuario(), filter, pageable),
  227 + httpServletRequest);
  228 + mv.addObject("pagina", paginaWrapper);
  229 +
  230 + return mv;
  231 + }
  232 +
  233 + @GetMapping("/reenvioRecibo/{codigo}")
  234 + public @ResponseBody ResponseEntity<?> reenviarRecibo(@PathVariable("codigo") Protocolo protocolo,
  235 + @RequestParam(value = "email", required = false) String email) {
  236 + enviarProtocoloService.reenviarRecibo(protocolo, email);
  237 + Response<String> response = new Response<String>();
  238 + String resposta = null;
  239 + if (!email.isEmpty() || email != null) {
  240 + resposta = email;
  241 + }
  242 + if (!protocolo.getEmail1().isEmpty() && protocolo.getEmail1() != null && protocolo.getEmail1() != "") {
  243 + resposta = resposta + " " + protocolo.getEmail1();
  244 + }
  245 + if (!protocolo.getEmail2().isEmpty() && protocolo.getEmail2() != null && protocolo.getEmail2() != "") {
  246 + resposta = resposta + " " + protocolo.getEmail2();
  247 + }
  248 + if (!protocolo.getUsuario().getEmail().isEmpty() && protocolo.getUsuario().getEmail() != null
  249 + && protocolo.getUsuario().getEmail() != "") {
  250 + resposta = resposta + " " + protocolo.getUsuario().getEmail();
  251 + }
  252 + response.setData(resposta);
  253 + return ResponseEntity.ok(response);
  254 + }
  255 +
  256 + @RequestMapping("/stream")
  257 + public SseEmitter enableNotifier() {
  258 + // SseEmitter notifier = new SseEmitter();
  259 + return eventServerService;
  260 + }
  261 +
  262 + @PutMapping("/aprovar/{codigo}")
  263 + public @ResponseBody ResponseEntity<?> aprovar(@PathVariable("codigo") Protocolo protocolo,
  264 + @RequestParam(value = "sei", required = false) String sei,
  265 + @RequestParam(value = "tipo", required = false) String tipo,
  266 + @RequestParam(value = "idSei") String idSei) {
  267 + // SseEmitter sseEmitter = new SseEmitter();
  268 + CompletableFuture.supplyAsync(() -> {
  269 + try {
  270 + enviarProtocoloService.enviarSEI(protocolo, sei, tipo, idSei);
  271 + return "Sincronizado com Sucesso !";
  272 + } catch (ServiceException e) {
  273 + return e.getMessage();
  274 + } catch (Exception e) {
  275 + return e.getMessage();
  276 + }
  277 + }).whenCompleteAsync((result, throwable) -> {
  278 + try {
  279 + eventServerService.send(result);
  280 + } catch (IOException e) {
  281 + e.printStackTrace();
  282 + }
  283 + }).exceptionally(ex -> {
  284 + try {
  285 + eventServerService.send(ex.getMessage());
  286 + } catch (Exception e) {
  287 + e.printStackTrace();
  288 + }
  289 + return "erro";
  290 + });
  291 +
  292 + return ResponseEntity.ok().build();
  293 + }
  294 +
  295 + @PutMapping("/aprovarManualmente/{sei}/{codigo}")
  296 + public @ResponseBody ResponseEntity<?> aprovarManualmente(@PathVariable("sei") String sei,
  297 + @PathVariable("codigo") Protocolo protocolo) {
  298 + protocolo.setNupe(sei);
  299 + salvarProtocoloService.aprovarManualmente(protocolo);
  300 + return ResponseEntity.ok().build();
  301 + }
  302 +
  303 + @GetMapping("/aprovarManualmente/{sei}")
  304 + public ResponseEntity<Response<String>> consultarSei(@PathVariable("sei") String sei) {
  305 + Optional<String> linkSei = enviarProtocoloService.consultarSei(sei);
  306 + Response<String> response = new Response<String>();
  307 + if (!linkSei.isPresent()) {
  308 + response.getErrors().add("Nº SEI não encontrado: " + sei);
  309 + return ResponseEntity.badRequest().body(response);
  310 + }
  311 + response.setData(linkSei.get());
  312 + return ResponseEntity.ok(response);
  313 + }
  314 +
  315 + @PutMapping("/reprovar/{codigo}")
  316 + public @ResponseBody ResponseEntity<?> reprovar(@PathVariable("codigo") Protocolo protocolo,
  317 + @RequestBody String observacao) {
  318 + protocolo.setObservacao(observacao);
  319 + enviarProtocoloService.recusar(protocolo);
  320 + return ResponseEntity.ok().build();
  321 + }
  322 +
  323 + /**
  324 + * atulizado o status de pendente para analise na tabela protocolo
  325 + *
  326 + * @param protocolo
  327 + * @return ResponseEntity
  328 + */
  329 + @PutMapping("/atualizarFlag/{codigo}")
  330 + public @ResponseBody ResponseEntity<?> atualizarflag(@PathVariable("codigo") Protocolo protocolo) {
  331 + salvarProtocoloService.analisando(protocolo);
  332 + return ResponseEntity.ok().build();
  333 + }
  334 +
  335 + /**
  336 + * atulizado o status para pendente
  337 + *
  338 + * @param protocolo
  339 + * @return ResponseEntity
  340 + */
  341 + @PutMapping("/atuzalizarFlagPendente/{codigo}")
  342 + public @ResponseBody ResponseEntity<?> atuzalizarFlagPendente(@PathVariable("codigo") Protocolo protocolo) {
  343 + salvarProtocoloService.pendente(protocolo);
  344 + return ResponseEntity.ok().build();
  345 + }
  346 +
  347 + /**
  348 + * método para reprovar o protocolo
  349 + *
  350 + * @param protocolo
  351 + * @return ResponseEntity
  352 + */
  353 + @PutMapping("/atuzalizarFlagReprovado/{codigo}")
  354 + public @ResponseBody ResponseEntity<?> atuzalizarFlagReprovado(@PathVariable("codigo") Protocolo protocolo) {
  355 + salvarProtocoloService.reprovar(protocolo);
  356 + return ResponseEntity.ok().build();
  357 + }
  358 +
  359 + /**
  360 + * método para retirar o protocolo da análise
  361 + *
  362 + * @param protocolo
  363 + * @return ResponseEntity
  364 + */
  365 + @PutMapping("/retirarAnalise")
  366 + public @ResponseBody ResponseEntity<?> retirarAnalise(@RequestParam("codigo") Protocolo protocolo) {
  367 + salvarProtocoloService.pendente(protocolo);
  368 + return ResponseEntity.ok().build();
  369 + }
  370 +
  371 + /**
  372 + * método para retirar o protocolo da análise e deixar reprovado
  373 + *
  374 + * @param protocolo
  375 + * @return ResponseEntity
  376 + */
  377 + @PutMapping("/retirarAnaliseReprovado")
  378 + public @ResponseBody ResponseEntity<?> retirarAnaliseReprovado(@RequestParam("codigo") Protocolo protocolo) {
  379 + salvarProtocoloService.reprovar(protocolo);
  380 + return ResponseEntity.ok().build();
  381 + }
  382 +
  383 + /**
  384 + * busca o status passado o código
  385 + *
  386 + * @param codigo
  387 + * @return ResponseEntity
  388 + */
  389 + @GetMapping(value = "/buscarFlag/{codigo}")
  390 + public ResponseEntity<Response<ProtocoloFlagDTO>> buscarStatusPorCodigp(@PathVariable("codigo") Long codigo) {
  391 + Response<ProtocoloFlagDTO> response = new Response<ProtocoloFlagDTO>();
  392 + Optional<Protocolo> protocolo = protocoloFlagService.buscarStatusPorCodigo(codigo);
  393 +
  394 + if (!protocolo.isPresent()) {
  395 + response.getErrors().add("Status não encontrado para o código: " + codigo);
  396 + return ResponseEntity.badRequest().body(response);
  397 + }
  398 +
  399 + response.setData(this.converterProtocoloFlagDto(protocolo.get()));
  400 + return ResponseEntity.ok(response);
  401 + }
  402 +
  403 + /**
  404 + * convertendo a entidade para objeto DTO
  405 + *
  406 + * @param protocolo
  407 + * @return protocoloFlagDTO
  408 + */
  409 + private ProtocoloFlagDTO converterProtocoloFlagDto(Protocolo protocolo) {
  410 + ProtocoloFlagDTO protocoloFlagDTO = new ProtocoloFlagDTO();
  411 + protocoloFlagDTO.setStatus(protocolo.getStatus().toString());
  412 + // protocoloFlagDTO.setObservacao(Optional.of(protocolo.getObservacao().toString()));
  413 + // protocoloFlagDTO.setObservacao().ifPresent(x ->
  414 + // protocolo.getObservacao(x.toString()));
  415 + protocolo.getObservacaoOpt()
  416 + .ifPresent(observacao -> protocoloFlagDTO.setObservacao(Optional.of(observacao.toString())));
  417 + return protocoloFlagDTO;
  418 + }
412 419
413 } 420 }
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/UsuarioController.java
@@ -7,7 +7,6 @@ package br.gov.planejamento.dipla.protocolo.controllers; @@ -7,7 +7,6 @@ package br.gov.planejamento.dipla.protocolo.controllers;
7 7
8 import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig; 8 import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
9 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper; 9 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper;
10 -import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;  
11 import br.gov.planejamento.dipla.protocolo.entities.Grupo; 10 import br.gov.planejamento.dipla.protocolo.entities.Grupo;
12 import br.gov.planejamento.dipla.protocolo.entities.Usuario; 11 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
13 import br.gov.planejamento.dipla.protocolo.repositories.GrupoRepository; 12 import br.gov.planejamento.dipla.protocolo.repositories.GrupoRepository;
src/main/java/br/gov/planejamento/dipla/protocolo/dto/MetadadosDTO.java
@@ -3,18 +3,6 @@ package br.gov.planejamento.dipla.protocolo.dto; @@ -3,18 +3,6 @@ package br.gov.planejamento.dipla.protocolo.dto;
3 import lombok.Getter; 3 import lombok.Getter;
4 import lombok.Setter; 4 import lombok.Setter;
5 5
6 -import java.util.HashMap;  
7 -import java.util.List;  
8 -import java.util.Map;  
9 -import java.util.Optional;  
10 -  
11 -import javax.persistence.Column;  
12 -  
13 -import org.hibernate.validator.constraints.NotBlank;  
14 -import org.hibernate.validator.constraints.NotEmpty;  
15 -  
16 -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;  
17 -  
18 /** 6 /**
19 * Created by dario on 29/09/17. 7 * Created by dario on 29/09/17.
20 */ 8 */
src/main/java/br/gov/planejamento/dipla/protocolo/dto/ProtocoloFlagDTO.java
@@ -2,8 +2,8 @@ package br.gov.planejamento.dipla.protocolo.dto; @@ -2,8 +2,8 @@ package br.gov.planejamento.dipla.protocolo.dto;
2 2
3 import lombok.Getter; 3 import lombok.Getter;
4 import lombok.Setter; 4 import lombok.Setter;
  5 +
5 import java.util.Optional; 6 import java.util.Optional;
6 -import org.hibernate.validator.constraints.NotEmpty;  
7 7
8 /** 8 /**
9 * Created by dario on 29/09/17. 9 * Created by dario on 29/09/17.
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Arquivos.java
@@ -48,7 +48,7 @@ public class Arquivos implements Serializable { @@ -48,7 +48,7 @@ public class Arquivos implements Serializable {
48 @Column(name = "descricao_documento") 48 @Column(name = "descricao_documento")
49 private String descricaoDocumento; 49 private String descricaoDocumento;
50 50
51 - @ManyToOne 51 + @ManyToOne(fetch=FetchType.EAGER)
52 @JoinColumn(name = "codigo_tipo_documento") 52 @JoinColumn(name = "codigo_tipo_documento")
53 private TiposDocumento tipoDocumento = new TiposDocumento(); 53 private TiposDocumento tipoDocumento = new TiposDocumento();
54 54
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Classificacao.java
@@ -29,6 +29,6 @@ public class Classificacao implements Serializable { @@ -29,6 +29,6 @@ public class Classificacao implements Serializable {
29 @Column(name = "nome") 29 @Column(name = "nome")
30 private String nome; 30 private String nome;
31 31
32 - @OneToMany(mappedBy = "classificacao", cascade = CascadeType.ALL) 32 + @OneToMany(mappedBy = "classificacao", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
33 private List<Configuracao> configuracoes = new ArrayList<>(); 33 private List<Configuracao> configuracoes = new ArrayList<>();
34 } 34 }
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Configuracao.java
1 package br.gov.planejamento.dipla.protocolo.entities; 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2
3 -import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;  
4 import lombok.EqualsAndHashCode; 3 import lombok.EqualsAndHashCode;
5 import lombok.Getter; 4 import lombok.Getter;
6 import lombok.Setter; 5 import lombok.Setter;
7 -import org.hibernate.validator.constraints.Email;  
8 -import org.hibernate.validator.constraints.Length;  
9 import org.hibernate.validator.constraints.NotBlank; 6 import org.hibernate.validator.constraints.NotBlank;
10 7
11 import javax.persistence.*; 8 import javax.persistence.*;
12 -import javax.validation.constraints.NotNull;  
13 -import javax.validation.constraints.Size;  
14 import java.io.Serializable; 9 import java.io.Serializable;
15 -import java.util.List;  
16 10
17 /** 11 /**
18 * 12 *
src/main/java/br/gov/planejamento/dipla/protocolo/entities/ConfiguracaoEmail.java
1 package br.gov.planejamento.dipla.protocolo.entities; 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2
3 -import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;  
4 import lombok.EqualsAndHashCode; 3 import lombok.EqualsAndHashCode;
5 import lombok.Getter; 4 import lombok.Getter;
6 import lombok.Setter; 5 import lombok.Setter;
7 -import org.hibernate.validator.constraints.Email;  
8 -import org.hibernate.validator.constraints.Length;  
9 import org.hibernate.validator.constraints.NotBlank; 6 import org.hibernate.validator.constraints.NotBlank;
10 7
11 import javax.persistence.*; 8 import javax.persistence.*;
12 -import javax.validation.constraints.NotNull;  
13 -import javax.validation.constraints.Size;  
14 import java.io.Serializable; 9 import java.io.Serializable;
15 -import java.util.ArrayList;  
16 import java.util.List; 10 import java.util.List;
17 11
18 /** 12 /**
src/main/java/br/gov/planejamento/dipla/protocolo/entities/LogSistema.java
@@ -7,7 +7,6 @@ import lombok.Setter; @@ -7,7 +7,6 @@ import lombok.Setter;
7 import javax.persistence.*; 7 import javax.persistence.*;
8 import java.io.Serializable; 8 import java.io.Serializable;
9 import java.util.Date; 9 import java.util.Date;
10 -import java.util.List;  
11 10
12 /** 11 /**
13 * 12 *
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Metadado.java
@@ -5,10 +5,6 @@ import lombok.Getter; @@ -5,10 +5,6 @@ import lombok.Getter;
5 import lombok.Setter; 5 import lombok.Setter;
6 6
7 import javax.persistence.*; 7 import javax.persistence.*;
8 -import javax.validation.constraints.NotNull;  
9 -  
10 -import org.hibernate.validator.constraints.NotBlank;  
11 -  
12 import java.io.Serializable; 8 import java.io.Serializable;
13 import java.util.List; 9 import java.util.List;
14 10
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Protocolo.java
@@ -5,7 +5,6 @@ import lombok.Getter; @@ -5,7 +5,6 @@ import lombok.Getter;
5 import lombok.Setter; 5 import lombok.Setter;
6 import org.hibernate.annotations.DynamicUpdate; 6 import org.hibernate.annotations.DynamicUpdate;
7 import org.hibernate.validator.constraints.Email; 7 import org.hibernate.validator.constraints.Email;
8 -import org.hibernate.validator.constraints.Length;  
9 import org.hibernate.validator.constraints.SafeHtml; 8 import org.hibernate.validator.constraints.SafeHtml;
10 9
11 import javax.persistence.*; 10 import javax.persistence.*;
@@ -14,7 +13,6 @@ import java.text.SimpleDateFormat; @@ -14,7 +13,6 @@ import java.text.SimpleDateFormat;
14 import java.util.ArrayList; 13 import java.util.ArrayList;
15 import java.util.Date; 14 import java.util.Date;
16 import java.util.List; 15 import java.util.List;
17 -import javax.persistence.Transient;  
18 import java.util.Optional; 16 import java.util.Optional;
19 17
20 /** 18 /**
@@ -37,6 +35,10 @@ public class Protocolo implements Serializable { @@ -37,6 +35,10 @@ public class Protocolo implements Serializable {
37 35
38 @Transient 36 @Transient
39 private String linkNup; 37 private String linkNup;
  38 +
  39 + @Transient
  40 + private String idSei;
  41 +
40 @Transient 42 @Transient
41 private static final String urlNup = ""; 43 private static final String urlNup = "";
42 44
src/main/java/br/gov/planejamento/dipla/protocolo/entities/TiposDocumento.java
@@ -11,7 +11,6 @@ import lombok.Setter; @@ -11,7 +11,6 @@ import lombok.Setter;
11 import org.hibernate.validator.constraints.NotBlank; 11 import org.hibernate.validator.constraints.NotBlank;
12 12
13 import javax.persistence.*; 13 import javax.persistence.*;
14 -import javax.validation.constraints.NotNull;  
15 import java.io.Serializable; 14 import java.io.Serializable;
16 15
17 /** 16 /**
@@ -35,9 +34,15 @@ public class TiposDocumento implements Serializable { @@ -35,9 +34,15 @@ public class TiposDocumento implements Serializable {
35 @NotBlank(message = "O campo descrição é de preenchimento obrigatório") 34 @NotBlank(message = "O campo descrição é de preenchimento obrigatório")
36 private String descricao; 35 private String descricao;
37 36
38 - @NotBlank(message = "O campo código é de preenchimento obrigatório") 37 + //@NotBlank(message = "O campo código é de preenchimento obrigatório")
39 @Column(name = "codigo_sei") 38 @Column(name = "codigo_sei")
40 private String codigoSei; 39 private String codigoSei;
  40 +
  41 + @Column(name = "codigo_sei_mf")
  42 + private String codigoSeiMf;
  43 +
  44 + @Column(name = "codigo_sei_mdic")
  45 + private String codigoSeiMdic;
41 46
42 private Boolean ativo; 47 private Boolean ativo;
43 48
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Usuario.java
1 package br.gov.planejamento.dipla.protocolo.entities; 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2
3 import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao; 3 import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;
  4 +import lombok.AccessLevel;
4 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
5 import lombok.Getter; 6 import lombok.Getter;
6 import lombok.Setter; 7 import lombok.Setter;
@@ -8,14 +9,12 @@ import org.hibernate.validator.constraints.Email; @@ -8,14 +9,12 @@ import org.hibernate.validator.constraints.Email;
8 import org.hibernate.validator.constraints.Length; 9 import org.hibernate.validator.constraints.Length;
9 import org.hibernate.validator.constraints.NotBlank; 10 import org.hibernate.validator.constraints.NotBlank;
10 import org.hibernate.validator.constraints.SafeHtml; 11 import org.hibernate.validator.constraints.SafeHtml;
11 -import org.springframework.util.StringUtils;  
12 12
13 import javax.persistence.*; 13 import javax.persistence.*;
14 import javax.validation.constraints.NotNull; 14 import javax.validation.constraints.NotNull;
15 import javax.validation.constraints.Size; 15 import javax.validation.constraints.Size;
16 import java.io.Serializable; 16 import java.io.Serializable;
17 import java.util.List; 17 import java.util.List;
18 -import lombok.AccessLevel;  
19 18
20 /** 19 /**
21 * 20 *
src/main/java/br/gov/planejamento/dipla/protocolo/entities/UsuarioBrasilCidadao.java
1 package br.gov.planejamento.dipla.protocolo.entities; 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2
3 -import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;  
4 import lombok.EqualsAndHashCode; 3 import lombok.EqualsAndHashCode;
5 import lombok.Getter; 4 import lombok.Getter;
6 import lombok.Setter; 5 import lombok.Setter;
7 -import org.hibernate.validator.constraints.Email;  
8 -import org.hibernate.validator.constraints.Length;  
9 import org.hibernate.validator.constraints.NotBlank; 6 import org.hibernate.validator.constraints.NotBlank;
10 7
11 import javax.persistence.*; 8 import javax.persistence.*;
12 -import javax.validation.constraints.NotNull;  
13 import javax.validation.constraints.Size; 9 import javax.validation.constraints.Size;
14 import java.io.Serializable; 10 import java.io.Serializable;
15 -import java.util.List;  
16 11
17 /** 12 /**
18 * 13 *
src/main/java/br/gov/planejamento/dipla/protocolo/handler/LogoutBrasilCidadaoHandler.java
1 package br.gov.planejamento.dipla.protocolo.handler; 1 package br.gov.planejamento.dipla.protocolo.handler;
2 2
3 -import java.io.IOException;  
4 -  
5 -import javax.servlet.ServletException;  
6 -import javax.servlet.http.HttpServletRequest;  
7 -import javax.servlet.http.HttpServletResponse;  
8 - 3 +import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
9 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.http.HttpStatus; 5 import org.springframework.http.HttpStatus;
11 import org.springframework.security.core.Authentication; 6 import org.springframework.security.core.Authentication;
12 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; 7 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
13 import org.springframework.stereotype.Component; 8 import org.springframework.stereotype.Component;
14 -import org.springframework.web.client.RestTemplate;  
15 9
16 -import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig; 10 +import javax.servlet.ServletException;
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.IOException;
17 14
18 @Component 15 @Component
19 public class LogoutBrasilCidadaoHandler implements LogoutSuccessHandler { 16 public class LogoutBrasilCidadaoHandler implements LogoutSuccessHandler {
src/main/java/br/gov/planejamento/dipla/protocolo/mail/Mailer.java
1 package br.gov.planejamento.dipla.protocolo.mail; 1 package br.gov.planejamento.dipla.protocolo.mail;
2 2
3 -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;  
4 -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;  
5 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;  
6 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;  
7 -import br.gov.planejamento.dipla.protocolo.entities.EmailEnum;  
8 -import br.gov.planejamento.dipla.protocolo.entities.Metadado;  
9 -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;  
10 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;  
11 -import br.gov.planejamento.dipla.protocolo.entities.Usuario; 3 +import br.gov.planejamento.dipla.protocolo.entities.*;
12 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository; 4 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository;
13 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository; 5 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
14 import br.gov.planejamento.dipla.protocolo.repositories.MetadadoRepository; 6 import br.gov.planejamento.dipla.protocolo.repositories.MetadadoRepository;
15 -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;  
16 -  
17 import org.slf4j.Logger; 7 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory; 8 import org.slf4j.LoggerFactory;
19 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
20 -import org.springframework.context.annotation.PropertySource;  
21 -import org.springframework.core.env.Environment;  
22 import org.springframework.core.io.ClassPathResource; 10 import org.springframework.core.io.ClassPathResource;
23 import org.springframework.mail.javamail.JavaMailSender; 11 import org.springframework.mail.javamail.JavaMailSender;
24 import org.springframework.mail.javamail.MimeMessageHelper; 12 import org.springframework.mail.javamail.MimeMessageHelper;
@@ -31,17 +19,9 @@ import org.thymeleaf.spring4.SpringTemplateEngine; @@ -31,17 +19,9 @@ import org.thymeleaf.spring4.SpringTemplateEngine;
31 import org.thymeleaf.spring4.dialect.SpringStandardDialect; 19 import org.thymeleaf.spring4.dialect.SpringStandardDialect;
32 import org.thymeleaf.templatemode.TemplateMode; 20 import org.thymeleaf.templatemode.TemplateMode;
33 import org.thymeleaf.templateresolver.StringTemplateResolver; 21 import org.thymeleaf.templateresolver.StringTemplateResolver;
34 -import org.w3c.dom.Document;  
35 -import org.w3c.dom.Node;  
36 -import org.w3c.dom.NodeList;  
37 -import org.xml.sax.InputSource;  
38 22
39 import javax.mail.MessagingException; 23 import javax.mail.MessagingException;
40 import javax.mail.internet.MimeMessage; 24 import javax.mail.internet.MimeMessage;
41 -import javax.xml.parsers.DocumentBuilder;  
42 -import javax.xml.parsers.DocumentBuilderFactory;  
43 -  
44 -import java.io.StringReader;  
45 import java.util.Iterator; 25 import java.util.Iterator;
46 import java.util.List; 26 import java.util.List;
47 import java.util.Locale; 27 import java.util.Locale;
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ClassificacaoRepository.java
1 package br.gov.planejamento.dipla.protocolo.repositories; 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.Classificacao; 3 import br.gov.planejamento.dipla.protocolo.entities.Classificacao;
4 -  
5 -import java.util.Optional;  
6 -  
7 import org.springframework.data.jpa.repository.JpaRepository; 4 import org.springframework.data.jpa.repository.JpaRepository;
8 import org.springframework.stereotype.Repository; 5 import org.springframework.stereotype.Repository;
9 6
  7 +import java.util.Optional;
  8 +
10 /** 9 /**
11 * 10 *
12 * @author Leonardo Dias 11 * @author Leonardo Dias
@@ -14,4 +13,5 @@ import org.springframework.stereotype.Repository; @@ -14,4 +13,5 @@ import org.springframework.stereotype.Repository;
14 @Repository 13 @Repository
15 public interface ClassificacaoRepository extends JpaRepository<Classificacao, Long>{ 14 public interface ClassificacaoRepository extends JpaRepository<Classificacao, Long>{
16 public Optional<Classificacao> findByNome(String nome); 15 public Optional<Classificacao> findByNome(String nome);
  16 + public Optional<Classificacao> findByCodigo(Long codigo);
17 } 17 }
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ConfiguracaoEmailRepository.java
1 package br.gov.planejamento.dipla.protocolo.repositories; 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail; 3 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
4 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;  
5 -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;  
6 -  
7 import org.springframework.data.jpa.repository.JpaRepository; 4 import org.springframework.data.jpa.repository.JpaRepository;
8 import org.springframework.stereotype.Repository; 5 import org.springframework.stereotype.Repository;
9 6
10 -import java.util.List;  
11 import java.util.Optional; 7 import java.util.Optional;
12 8
13 /** 9 /**
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ConfiguracaoRepository.java
@@ -3,11 +3,9 @@ package br.gov.planejamento.dipla.protocolo.repositories; @@ -3,11 +3,9 @@ package br.gov.planejamento.dipla.protocolo.repositories;
3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao; 3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum; 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
5 import br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao.ConfiguracaoRepositoryQueries; 5 import br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao.ConfiguracaoRepositoryQueries;
6 -import br.gov.planejamento.dipla.protocolo.repositories.helper.usuario.UsuarioRepositoryQueries;  
7 import org.springframework.data.jpa.repository.JpaRepository; 6 import org.springframework.data.jpa.repository.JpaRepository;
8 import org.springframework.stereotype.Repository; 7 import org.springframework.stereotype.Repository;
9 8
10 -import java.util.List;  
11 import java.util.Optional; 9 import java.util.Optional;
12 10
13 /** 11 /**
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/LogStatusRepository.java
1 package br.gov.planejamento.dipla.protocolo.repositories; 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.LogSistema; 3 import br.gov.planejamento.dipla.protocolo.entities.LogSistema;
4 -  
5 import org.springframework.data.jpa.repository.JpaRepository; 4 import org.springframework.data.jpa.repository.JpaRepository;
6 import org.springframework.stereotype.Repository; 5 import org.springframework.stereotype.Repository;
7 6
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/LoginAttemptRepository.java
1 package br.gov.planejamento.dipla.protocolo.repositories; 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt; 3 import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
4 -  
5 import org.springframework.data.jpa.repository.JpaRepository; 4 import org.springframework.data.jpa.repository.JpaRepository;
6 import org.springframework.data.jpa.repository.Modifying; 5 import org.springframework.data.jpa.repository.Modifying;
7 import org.springframework.data.jpa.repository.Query; 6 import org.springframework.data.jpa.repository.Query;
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/MetadadoRepository.java
1 package br.gov.planejamento.dipla.protocolo.repositories; 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2
3 -import br.gov.planejamento.dipla.protocolo.entities.Arquivos;  
4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail; 3 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
5 import br.gov.planejamento.dipla.protocolo.entities.Metadado; 4 import br.gov.planejamento.dipla.protocolo.entities.Metadado;
6 -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;  
7 -  
8 import org.springframework.data.jpa.repository.JpaRepository; 5 import org.springframework.data.jpa.repository.JpaRepository;
9 import org.springframework.stereotype.Repository; 6 import org.springframework.stereotype.Repository;
10 7
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ProtocoloRepository.java
1 package br.gov.planejamento.dipla.protocolo.repositories; 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo; 3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
4 -import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;  
5 import br.gov.planejamento.dipla.protocolo.entities.Usuario; 4 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
6 import br.gov.planejamento.dipla.protocolo.repositories.helper.protocolo.ProtocoloRepositoryQueries; 5 import br.gov.planejamento.dipla.protocolo.repositories.helper.protocolo.ProtocoloRepositoryQueries;
7 import org.springframework.data.jpa.repository.JpaRepository; 6 import org.springframework.data.jpa.repository.JpaRepository;
8 import org.springframework.data.jpa.repository.Query; 7 import org.springframework.data.jpa.repository.Query;
9 -import org.springframework.data.repository.query.Param;  
10 import org.springframework.stereotype.Repository; 8 import org.springframework.stereotype.Repository;
11 -import java.util.Optional;  
12 import org.springframework.transaction.annotation.Transactional; 9 import org.springframework.transaction.annotation.Transactional;
13 -import org.springframework.data.jpa.repository.JpaRepository;  
14 10
15 import java.math.BigDecimal; 11 import java.math.BigDecimal;
16 import java.util.List; 12 import java.util.List;
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/TiposDocumentoRepository.java
@@ -8,10 +8,10 @@ package br.gov.planejamento.dipla.protocolo.repositories; @@ -8,10 +8,10 @@ package br.gov.planejamento.dipla.protocolo.repositories;
8 import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento; 8 import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
9 import br.gov.planejamento.dipla.protocolo.repositories.helper.tiposDocumento.TiposDocumentoRepositoryQueries; 9 import br.gov.planejamento.dipla.protocolo.repositories.helper.tiposDocumento.TiposDocumentoRepositoryQueries;
10 import org.springframework.data.jpa.repository.JpaRepository; 10 import org.springframework.data.jpa.repository.JpaRepository;
11 -import org.springframework.data.jpa.repository.Query;  
12 import org.springframework.stereotype.Repository; 11 import org.springframework.stereotype.Repository;
13 -import java.util.Optional; 12 +
14 import java.util.List; 13 import java.util.List;
  14 +import java.util.Optional;
15 15
16 /** 16 /**
17 * @author leonardo 17 * @author leonardo
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/UsuarioRepository.java
@@ -16,6 +16,7 @@ import java.util.Optional; @@ -16,6 +16,7 @@ import java.util.Optional;
16 public interface UsuarioRepository extends JpaRepository<Usuario, Long>, UsuarioRepositoryQueries { 16 public interface UsuarioRepository extends JpaRepository<Usuario, Long>, UsuarioRepositoryQueries {
17 17
18 public List<Usuario> findByCodigoIn(Long[] codigos); 18 public List<Usuario> findByCodigoIn(Long[] codigos);
  19 + public Usuario findByCodigo(Long codgio);
19 20
20 public Optional<Usuario> findByEmail(String email); 21 public Optional<Usuario> findByEmail(String email);
21 22
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/helper/configuracao/ConfiguracaoRepositoryImpl.java
@@ -2,11 +2,8 @@ package br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao; @@ -2,11 +2,8 @@ package br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao; 3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum; 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
5 -  
6 -  
7 -import javax.persistence.EntityManager;  
8 -import javax.persistence.PersistenceContext;  
9 - 5 +import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
  6 +import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;
10 import org.hibernate.Criteria; 7 import org.hibernate.Criteria;
11 import org.hibernate.Session; 8 import org.hibernate.Session;
12 import org.hibernate.criterion.MatchMode; 9 import org.hibernate.criterion.MatchMode;
@@ -17,15 +14,13 @@ import org.springframework.data.domain.Page; @@ -17,15 +14,13 @@ import org.springframework.data.domain.Page;
17 import org.springframework.data.domain.PageImpl; 14 import org.springframework.data.domain.PageImpl;
18 import org.springframework.data.domain.Pageable; 15 import org.springframework.data.domain.Pageable;
19 16
20 -import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;  
21 -import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;  
22 -  
23 -import java.util.List; 17 +import javax.persistence.EntityManager;
  18 +import javax.persistence.PersistenceContext;
24 import java.util.Optional; 19 import java.util.Optional;
25 20
26 /** 21 /**
27 * 22 *
28 - * @author Leonardo Dias 23 + * @authors Leonardo Dias, Matheus de Carvalho
29 */ 24 */
30 public class ConfiguracaoRepositoryImpl implements ConfiguracaoRepositoryQueries { 25 public class ConfiguracaoRepositoryImpl implements ConfiguracaoRepositoryQueries {
31 26
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/helper/configuracao/ConfiguracaoRepositoryQueries.java
1 package br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao; 1 package br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao;
2 2
3 -import br.gov.planejamento.dipla.protocolo.dto.MetadadosDTO;  
4 import br.gov.planejamento.dipla.protocolo.entities.Configuracao; 3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
5 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum; 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
6 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;  
7 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
8 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;  
9 import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter; 5 import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
10 -import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter;  
11 -import br.gov.planejamento.dipla.protocolo.repositories.filter.UsuarioFilter;  
12 import org.springframework.data.domain.Page; 6 import org.springframework.data.domain.Page;
13 import org.springframework.data.domain.Pageable; 7 import org.springframework.data.domain.Pageable;
14 8
15 -import java.util.List;  
16 import java.util.Optional; 9 import java.util.Optional;
17 10
18 /** 11 /**
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/helper/usuario/UsuarioRepositoryImpl.java
1 package br.gov.planejamento.dipla.protocolo.repositories.helper.usuario; 1 package br.gov.planejamento.dipla.protocolo.repositories.helper.usuario;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.Grupo; 3 import br.gov.planejamento.dipla.protocolo.entities.Grupo;
4 -import java.util.ArrayList;  
5 -import java.util.List;  
6 -  
7 -import javax.persistence.EntityManager;  
8 -import javax.persistence.PersistenceContext;  
9 - 4 +import br.gov.planejamento.dipla.protocolo.entities.Usuario;
  5 +import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
  6 +import br.gov.planejamento.dipla.protocolo.entities.UsuarioGrupo;
  7 +import br.gov.planejamento.dipla.protocolo.repositories.filter.UsuarioFilter;
  8 +import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;
10 import org.hibernate.Criteria; 9 import org.hibernate.Criteria;
11 import org.hibernate.Hibernate; 10 import org.hibernate.Hibernate;
12 import org.hibernate.Session; 11 import org.hibernate.Session;
13 -import org.hibernate.criterion.Criterion;  
14 -import org.hibernate.criterion.DetachedCriteria;  
15 -import org.hibernate.criterion.MatchMode;  
16 -import org.hibernate.criterion.Order;  
17 -import org.hibernate.criterion.Projections;  
18 -import org.hibernate.criterion.Restrictions;  
19 -import org.hibernate.criterion.Subqueries; 12 +import org.hibernate.criterion.*;
  13 +import org.hibernate.sql.JoinType;
20 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.data.domain.Page; 15 import org.springframework.data.domain.Page;
22 import org.springframework.data.domain.PageImpl; 16 import org.springframework.data.domain.PageImpl;
@@ -24,13 +18,11 @@ import org.springframework.data.domain.Pageable; @@ -24,13 +18,11 @@ import org.springframework.data.domain.Pageable;
24 import org.springframework.transaction.annotation.Transactional; 18 import org.springframework.transaction.annotation.Transactional;
25 import org.springframework.util.StringUtils; 19 import org.springframework.util.StringUtils;
26 20
27 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
28 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;  
29 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioGrupo;  
30 -import br.gov.planejamento.dipla.protocolo.repositories.filter.UsuarioFilter;  
31 -import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil; 21 +import javax.persistence.EntityManager;
  22 +import javax.persistence.PersistenceContext;
  23 +import java.util.ArrayList;
  24 +import java.util.List;
32 import java.util.Optional; 25 import java.util.Optional;
33 -import org.hibernate.sql.JoinType;  
34 26
35 /** 27 /**
36 * 28 *
src/main/java/br/gov/planejamento/dipla/protocolo/security/AppUserDetailsService.java
@@ -2,8 +2,6 @@ package br.gov.planejamento.dipla.protocolo.security; @@ -2,8 +2,6 @@ package br.gov.planejamento.dipla.protocolo.security;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.Usuario; 3 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
4 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository; 4 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
5 -  
6 -import org.apache.commons.codec.digest.DigestUtils;  
7 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.security.core.GrantedAuthority; 6 import org.springframework.security.core.GrantedAuthority;
9 import org.springframework.security.core.authority.SimpleGrantedAuthority; 7 import org.springframework.security.core.authority.SimpleGrantedAuthority;
src/main/java/br/gov/planejamento/dipla/protocolo/security/BrasilCidadaoUserDetails.java
1 package br.gov.planejamento.dipla.protocolo.security; 1 package br.gov.planejamento.dipla.protocolo.security;
2 2
3 -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;  
4 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
5 import org.springframework.security.core.GrantedAuthority; 3 import org.springframework.security.core.GrantedAuthority;
6 -import org.springframework.security.core.userdetails.User; 4 +import org.springframework.security.core.authority.SimpleGrantedAuthority;
  5 +import org.springframework.security.core.userdetails.UserDetails;
7 6
8 import java.util.Collection; 7 import java.util.Collection;
  8 +import java.util.Collections;
9 9
10 /** 10 /**
11 - *  
12 * @author Leonardo Dias 11 * @author Leonardo Dias
13 */ 12 */
14 13
15 -import org.springframework.security.core.GrantedAuthority;  
16 -import org.springframework.security.core.authority.SimpleGrantedAuthority;  
17 -import org.springframework.security.core.userdetails.UserDetails;  
18 -  
19 -import java.util.Collection;  
20 -import java.util.Collections;  
21 -import java.util.Map;  
22 -  
23 public class BrasilCidadaoUserDetails implements UserDetails { 14 public class BrasilCidadaoUserDetails implements UserDetails {
24 15
25 /** 16 /**
src/main/java/br/gov/planejamento/dipla/protocolo/security/CaptchaService.java
1 package br.gov.planejamento.dipla.protocolo.security; 1 package br.gov.planejamento.dipla.protocolo.security;
2 2
  3 +import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
  4 +import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
  5 +import br.gov.planejamento.dipla.protocolo.services.exeptions.ReCaptchaUnavailableException;
3 import org.slf4j.Logger; 6 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory; 7 import org.slf4j.LoggerFactory;
5 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
7 import org.springframework.web.client.RestTemplate; 10 import org.springframework.web.client.RestTemplate;
8 11
9 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;  
10 -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;  
11 -import br.gov.planejamento.dipla.protocolo.services.exeptions.ReCaptchaUnavailableException;  
12 -  
13 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletRequest;
14 import java.net.URI; 13 import java.net.URI;
15 14
src/main/java/br/gov/planejamento/dipla/protocolo/security/CustomAuthenticationFailureHandler.java
1 package br.gov.planejamento.dipla.protocolo.security; 1 package br.gov.planejamento.dipla.protocolo.security;
2 2
3 -import java.io.IOException;  
4 -import java.util.Optional;  
5 -  
6 -import javax.servlet.ServletException;  
7 -import javax.servlet.http.HttpServletRequest;  
8 -import javax.servlet.http.HttpServletResponse;  
9 -  
10 -import org.apache.commons.codec.digest.DigestUtils; 3 +import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
  4 +import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
11 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.security.core.AuthenticationException; 6 import org.springframework.security.core.AuthenticationException;
13 -import org.springframework.security.web.DefaultRedirectStrategy;  
14 -import org.springframework.security.web.RedirectStrategy;  
15 -import org.springframework.security.web.WebAttributes;  
16 import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; 7 import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
17 import org.springframework.stereotype.Component; 8 import org.springframework.stereotype.Component;
18 9
19 -import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;  
20 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
21 -import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;  
22 -import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService; 10 +import javax.servlet.ServletException;
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.IOException;
23 14
24 @Component 15 @Component
25 public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { 16 public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
src/main/java/br/gov/planejamento/dipla/protocolo/security/LoginAttemptService.java
1 package br.gov.planejamento.dipla.protocolo.security; 1 package br.gov.planejamento.dipla.protocolo.security;
2 2
3 3
4 -import java.util.Date;  
5 -import java.util.Map;  
6 -import java.util.Optional;  
7 - 4 +import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
  5 +import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
8 import org.apache.commons.codec.digest.DigestUtils; 6 import org.apache.commons.codec.digest.DigestUtils;
9 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
11 9
12 -import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;  
13 -import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;  
14 -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository; 10 +import java.util.Date;
  11 +import java.util.Optional;
15 12
16 13
17 @Service 14 @Service
src/main/java/br/gov/planejamento/dipla/protocolo/sei/ws/SeiWSClient.java
1 package br.gov.planejamento.dipla.protocolo.sei.ws; 1 package br.gov.planejamento.dipla.protocolo.sei.ws;
2 2
3 import Sei.*; 3 import Sei.*;
4 -import br.gov.planejamento.dipla.protocolo.entities.Arquivos;  
5 -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;  
6 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo; 4 +import br.gov.planejamento.dipla.protocolo.entities.*;
7 import br.gov.planejamento.dipla.protocolo.mail.Mailer; 5 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
8 import br.gov.planejamento.dipla.protocolo.repositories.ArquivosRepository; 6 import br.gov.planejamento.dipla.protocolo.repositories.ArquivosRepository;
  7 +import br.gov.planejamento.dipla.protocolo.repositories.ClassificacaoRepository;
9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository; 8 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
10 import br.gov.planejamento.dipla.protocolo.services.SalvarProtocoloService; 9 import br.gov.planejamento.dipla.protocolo.services.SalvarProtocoloService;
11 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage; 10 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
  11 +import org.apache.axis.AxisFault;
12 import org.apache.commons.io.FileUtils; 12 import org.apache.commons.io.FileUtils;
13 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
14 -import org.springframework.context.annotation.PropertySource;  
15 -import org.springframework.core.env.Environment;  
16 import org.springframework.scheduling.annotation.Async; 14 import org.springframework.scheduling.annotation.Async;
17 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
18 import org.springframework.util.Base64Utils; 16 import org.springframework.util.Base64Utils;
19 17
20 -import java.io.Console;  
21 -import java.io.File;  
22 import java.io.IOException; 18 import java.io.IOException;
  19 +import java.net.MalformedURLException;
23 import java.net.URL; 20 import java.net.URL;
24 import java.nio.file.Path; 21 import java.nio.file.Path;
25 -import java.util.List;  
26 -import java.util.Optional;  
27 -  
28 -import static java.nio.file.FileSystems.getDefault;  
29 -  
30 -import java.util.concurrent.CompletableFuture;  
31 -  
32 -import java.util.Date;  
33 import java.text.DateFormat; 22 import java.text.DateFormat;
34 import java.text.SimpleDateFormat; 23 import java.text.SimpleDateFormat;
  24 +import java.util.*;
35 25
36 -  
37 -  
38 - 26 +import static java.nio.file.FileSystems.getDefault;
39 27
40 @Component 28 @Component
41 public class SeiWSClient { 29 public class SeiWSClient {
42 30
43 - @Autowired  
44 - private Mailer mailer;  
45 -  
46 - @Autowired  
47 - private ConfiguracaoRepository configuracaoRepository;  
48 -  
49 - @Autowired  
50 - private SalvarProtocoloService salvarProtocoloService;  
51 -  
52 - @Autowired  
53 - private ArquivosRepository arquivosRepository;  
54 -  
55 - @Autowired  
56 - private ArquivoStorage arquivoStorage;  
57 -  
58 - private String getDateTime() {  
59 - DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");  
60 - Date date = new Date();  
61 - return dateFormat.format(date);  
62 - }  
63 -  
64 - @Async  
65 - public String enviar(Protocolo protocolo, Long idUsuario, String sei, String tipo) {  
66 -  
67 - if (sei!=null && tipo!=null && !sei.isEmpty() && tipo.equals("existente")) {  
68 - enviarDocumento( protocolo, idUsuario, sei );  
69 - } else {  
70 -  
71 - try {  
72 - URL urlEndpoint = new URL( configuracaoRepository.recuperarValor( ConfiguracaoEnum.URL_ENDPOINT ) );  
73 - SeiBindingStub seiBindingStub = new SeiBindingStub( urlEndpoint, null );  
74 - seiBindingStub.setTimeout( 600000 * 60 );  
75 -  
76 -  
77 - /*Assunto assunto = new Assunto();  
78 - assunto.setCodigoEstruturado( configuracaoRepository.recuperarValor( ConfiguracaoEnum.ASSUNTO_CODIGO_ESTRUTURADO ) );  
79 - Assunto[] assuntos = {assunto};*/  
80 -  
81 - Procedimento procedimento = new Procedimento();  
82 - if (tipo.equals("novo")) {  
83 - procedimento.setNumeroProtocolo( sei );  
84 - procedimento.setDataAutuacao( getDateTime() );  
85 - }  
86 -  
87 - procedimento.setAssuntos( recuperaAssunto() );  
88 - procedimento.setEspecificacao( configuracaoRepository.recuperarValor( ConfiguracaoEnum.PROCEDIMENTO_ESPECIFICADO ) );  
89 -  
90 - Interessado interessado = new Interessado();  
91 - interessado.setNome( protocolo.getUsuario().getNome() );  
92 - interessado.setSigla( "Telefone: " + protocolo.getUsuario().getTelefone() );  
93 - Interessado[] interessados = {interessado};  
94 -  
95 - procedimento.setInteressados( interessados );  
96 -  
97 - procedimento.setNivelAcesso( configuracaoRepository.recuperarValor( ConfiguracaoEnum.PROCEDIMENTO_NIVEL_ACESSO ) );  
98 - procedimento.setIdTipoProcedimento( configuracaoRepository.recuperarValor( ConfiguracaoEnum.PROCEDIMENTO_ID_TIPO_PROCEDIMENTO ) );  
99 -  
100 - List<Arquivos> arquivosList = arquivosRepository.findByProtocolo( protocolo );  
101 -  
102 - procedimento.setObservacao(  
103 - protocolo.toString() +  
104 - "\n" +  
105 - "Quantidade Arquivos: " + arquivosList.size()  
106 - );  
107 -  
108 -  
109 - //criando o procedimento  
110 - RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento(  
111 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),  
112 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),  
113 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),  
114 - procedimento,  
115 - null,  
116 - null,  
117 - null,  
118 - "N",  
119 - "N",  
120 - null,  
121 - null,  
122 - "N",  
123 - null,  
124 - null );  
125 -  
126 -  
127 - arquivosList.forEach( arquivo -> {  
128 - try {  
129 - Documento documento = new Documento();  
130 - documento.setIdProcedimento( retornoGeracaoProcedimento.getProcedimentoFormatado()  
131 - .replace( ".", "" )  
132 - .replace( "/", "" )  
133 - .replace( "-", "" ) );  
134 - documento.setObservacao( protocolo.toString());  
135 - documento.setDescricao( arquivo.getDescricaoDocumento() );  
136 - documento.setNomeArquivo( arquivo.getNomeOriginal() );  
137 - documento.setTipo( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_TIPO ) );  
138 - //documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar para pegar da combo Tipo Documento  
139 - documento.setIdSerie( arquivo.getTipoDocumento().getCodigoSei() ); //Tipo documento vindo do banco de dados  
140 - documento.setData( protocolo.getDataFormatada() );  
141 - documento.setNivelAcesso( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO ) );  
142 -  
143 - Path path = getDefault().getPath( configuracaoRepository.recuperarValor( ConfiguracaoEnum.STORAGE_PATH ) ).resolve( arquivo.getNome() );  
144 - documento.setConteudo( Base64Utils.encodeToString( FileUtils.readFileToByteArray( path.toFile() ) ) );  
145 -  
146 - seiBindingStub.incluirDocumento(  
147 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),  
148 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),  
149 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),  
150 - documento  
151 - );  
152 - } catch (IOException e) {  
153 - protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage() );  
154 - throw new RuntimeException( e.getMessage() );  
155 - }  
156 - } );  
157 -  
158 - protocolo.setLinkSEI(retornoGeracaoProcedimento.getLinkAcesso());  
159 - protocolo.setNupe( retornoGeracaoProcedimento.getProcedimentoFormatado() );  
160 - salvarProtocoloService.aprovar( protocolo, idUsuario );  
161 -  
162 - //System.out.println("NUP TEMPORÃ�RIO");  
163 - //System.out.println(protocolo.getEmail1());  
164 -  
165 - protocolo.setArquivosList(arquivosList);  
166 - mailer.enviarAceite( protocolo );  
167 -  
168 - /*arquivosList.forEach( arquivo -> {  
169 - arquivoStorage.excluir( arquivo.getNome() );  
170 - } );*/  
171 -  
172 -  
173 - return retornoGeracaoProcedimento.getProcedimentoFormatado();  
174 -  
175 - } catch (Exception e) {  
176 - protocolo.setErroWs("[ERRO GERAR PROCEDIMENTO] " + e.getMessage() );  
177 - e.printStackTrace();  
178 - rollback( protocolo, e.getMessage() );  
179 - }  
180 - }  
181 -  
182 - return null;  
183 - }  
184 -  
185 - /**  
186 - *  
187 - * @return array  
188 - */  
189 - private Assunto[] recuperaAssunto() {  
190 - Assunto assunto = new Assunto();  
191 - assunto.setCodigoEstruturado( configuracaoRepository.recuperarValor( ConfiguracaoEnum.ASSUNTO_CODIGO_ESTRUTURADO ) );  
192 - Assunto[] assuntos = {assunto};  
193 - return assuntos;  
194 - }  
195 -  
196 - private void rollback(Protocolo protocolo, String msgErro) {  
197 - protocolo.setNupe( null );  
198 - salvarProtocoloService.pendente( protocolo );  
199 - mailer.enviarEmailErroEnvioSEI( protocolo, msgErro );  
200 - }  
201 -  
202 - public String enviarDocumento(Protocolo protocolo, Long idUsuario, String sei) {  
203 - String observacaoAnterior="";  
204 - try {  
205 -  
206 - URL urlEndpoint = new URL( configuracaoRepository.recuperarValor( ConfiguracaoEnum.URL_ENDPOINT ) );  
207 - SeiBindingStub seiBindingStub = new SeiBindingStub( urlEndpoint, null );  
208 - seiBindingStub.setTimeout( 600000 * 60 );  
209 -  
210 - List<Arquivos> arquivosList = arquivosRepository.findByProtocolo( protocolo );  
211 -  
212 - arquivosList.forEach( arquivo -> {  
213 - try {  
214 - Documento documento = new Documento();  
215 - //documento.setIdProcedimento( sei );  
216 - documento.setIdProcedimento( sei  
217 - .replace( ".", "" )  
218 - .replace( "/", "" )  
219 - .replace( "-", "" ) );  
220 - documento.setObservacao( protocolo.toString());  
221 - documento.setDescricao( arquivo.getDescricaoDocumento() );  
222 - documento.setNomeArquivo( arquivo.getNomeOriginal() );  
223 - documento.setTipo( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_TIPO ) );  
224 - //documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar para pegar da combo Tipo Documento  
225 - documento.setIdSerie( arquivo.getTipoDocumento().getCodigoSei() ); //Tipo documento vindo do banco de dados  
226 - documento.setData( protocolo.getDataFormatada() );  
227 - documento.setNivelAcesso( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO ) );  
228 -  
229 - Path path = getDefault().getPath( configuracaoRepository.recuperarValor( ConfiguracaoEnum.STORAGE_PATH ) ).resolve( arquivo.getNome() );  
230 - documento.setConteudo( Base64Utils.encodeToString( FileUtils.readFileToByteArray( path.toFile() ) ) );  
231 -  
232 - seiBindingStub.incluirDocumento(  
233 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),  
234 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),  
235 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),  
236 - documento  
237 - );  
238 - } catch (IOException e) {  
239 - protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage() );  
240 - throw new RuntimeException( e.getMessage() );  
241 - }  
242 - } );  
243 -  
244 - protocolo.setNupe( sei );  
245 - //protocolo.setNupe( retornoGeracaoProcedimento.getProcedimentoFormatado() );  
246 - salvarProtocoloService.aprovar( protocolo, idUsuario );  
247 -  
248 - protocolo.setArquivosList(arquivosRepository.findByProtocolo(protocolo));  
249 - mailer.enviarAceite( protocolo );  
250 -  
251 - /*arquivosList.forEach( arquivo -> {  
252 - arquivoStorage.excluir( arquivo.getNome() );  
253 - } );*/  
254 -  
255 -  
256 - return sei;  
257 -  
258 -  
259 - } catch (Exception e) {  
260 - e.printStackTrace();  
261 - rollback( protocolo, e.getMessage() );  
262 - }  
263 -  
264 - return null;  
265 -  
266 - }  
267 - public RetornoConsultaProcedimento consultarProtocoloSei(String sei) {  
268 - Optional<String> retorno = Optional.ofNullable(null);  
269 - RetornoConsultaProcedimento retornoConsultaProcedimento = new RetornoConsultaProcedimento();  
270 - try {  
271 - URL urlEndpoint = new URL( configuracaoRepository.recuperarValor( ConfiguracaoEnum.URL_ENDPOINT ) );  
272 - SeiBindingStub seiBindingStub = new SeiBindingStub( urlEndpoint, null );  
273 - retornoConsultaProcedimento = seiBindingStub.consultarProcedimento(  
274 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),  
275 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),  
276 - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),  
277 - sei,  
278 - "S",  
279 - "S",  
280 - "S",  
281 - "S",  
282 - "S",  
283 - "S",  
284 - "S",  
285 - "S",  
286 - "S"  
287 - );  
288 - }catch(Exception e) {  
289 - e.printStackTrace();  
290 - }  
291 - return retornoConsultaProcedimento;  
292 - }  
293 -  
294 - 31 + @Autowired
  32 + private Mailer mailer;
  33 +
  34 + @Autowired
  35 + private ConfiguracaoRepository configuracaoRepository;
  36 +
  37 + @Autowired
  38 + private ClassificacaoRepository classificacaoRepository;
  39 +
  40 + @Autowired
  41 + private SalvarProtocoloService salvarProtocoloService;
  42 +
  43 + @Autowired
  44 + private ArquivosRepository arquivosRepository;
  45 +
  46 + @Autowired
  47 + private ArquivoStorage arquivoStorage;
  48 +
  49 + private String getDateTime() {
  50 + DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
  51 + Date date = new Date();
  52 + return dateFormat.format(date);
  53 + }
  54 +
  55 + @Async
  56 + public String enviar(Protocolo protocolo, Long idUsuario, String sei, String tipo, String idSei) throws Exception {
  57 + Map<String, String> map = new HashMap<String, String>();
  58 + if (idSei != null) {
  59 + Optional<Classificacao> classificacaoConfig = classificacaoRepository.findByCodigo(Long.parseLong(idSei));
  60 + if (classificacaoConfig.isPresent()) {
  61 + Classificacao c = classificacaoConfig.get();
  62 + Iterator<Configuracao> itr = c.getConfiguracoes().iterator();
  63 + while (itr.hasNext()) {
  64 + Configuracao conf = itr.next();
  65 + map.put(conf.getNome(), conf.getValor());
  66 + }
  67 + /**
  68 + * Envio para o SEI Definido
  69 + */
  70 + this.enviarDocumentoComSei(protocolo, idUsuario, sei, tipo, map, idSei);
  71 + }
  72 + } else {
  73 + throw new Exception("[ERRO - idSei null]");
  74 + }
  75 + return null;
  76 + }
  77 +
  78 + /**
  79 + *
  80 + * @return array
  81 + */
  82 + private Assunto[] recuperaAssunto() {
  83 + Assunto assunto = new Assunto();
  84 + assunto.setCodigoEstruturado(
  85 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.ASSUNTO_CODIGO_ESTRUTURADO));
  86 + Assunto[] assuntos = { assunto };
  87 + return assuntos;
  88 + }
  89 +
  90 + private void rollback(Protocolo protocolo, String msgErro) {
  91 + protocolo.setNupe(null);
  92 + salvarProtocoloService.pendente(protocolo);
  93 + mailer.enviarEmailErroEnvioSEI(protocolo, msgErro);
  94 + }
  95 +
  96 + /**
  97 + *
  98 + *
  99 + *
  100 + *
  101 + *
  102 + */
  103 +
  104 + private SeiBindingStub montarURLEndPoint(String endPoint) throws MalformedURLException, AxisFault {
  105 + URL urlEndpoint = new URL(endPoint);
  106 + SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  107 + return seiBindingStub;
  108 + }
  109 +
  110 + private Assunto[] montarAssunto(String assuntoCodigoEstruturado) {
  111 + Assunto assunto = new Assunto();
  112 + assunto.setCodigoEstruturado(assuntoCodigoEstruturado); // Tipo de assunto
  113 + Assunto[] assuntos = { assunto };
  114 + return assuntos;
  115 + }
  116 +
  117 + private Procedimento montarProcedimento(Assunto[] assuntos, Map<String, String> mapConfig, Protocolo protocolo, int size) {
  118 + Procedimento procedimento = new Procedimento();
  119 + procedimento.setAssuntos(assuntos);
  120 + procedimento.setEspecificacao(mapConfig.get("PROCEDIMENTO_ESPECIFICADO"));
  121 + procedimento.setObservacao(protocolo.toString() + "\n" + "Quantidade Arquivos: " + size);
  122 + procedimento.setNivelAcesso(mapConfig.get("PROCEDIMENTO_NIVEL_ACESSO")); // 0 = Publico, 1 = Restrito, 2 = Sigiloso
  123 + procedimento.setIdTipoProcedimento(mapConfig.get("PROCEDIMENTO_ID_TIPO_PROCEDIMENTO")); // Tipo de Processo => Adesão de atas
  124 + procedimento.setIdHipoteseLegal(mapConfig.get("PROCEDIMENTO_HIPOTESE_LEGAL"));
  125 + return procedimento;
  126 + }
  127 +
  128 + private Interessado[] montarInteressado(Protocolo protocolo) {
  129 + Interessado interessado = new Interessado();
  130 + interessado.setNome(protocolo.getUsuario().getNome());
  131 + interessado.setSigla("Telefone: " + protocolo.getUsuario().getTelefone());
  132 + Interessado[] interessados = { interessado };
  133 + return interessados;
  134 + }
  135 +
  136 + private Documento montarDocumento(String idProcedimento, String descricao, String observacao, String nomeArquivo,
  137 + String conteudo, String tipo, String idSerie, String data) throws IOException {
  138 + Documento documento = new Documento();
  139 + documento.setIdProcedimento(idProcedimento);
  140 + documento.setDescricao(descricao);
  141 + documento.setObservacao(observacao);
  142 + documento.setNomeArquivo(nomeArquivo);
  143 + documento.setConteudo(conteudo);
  144 + documento.setTipo(tipo);
  145 + documento.setIdSerie(idSerie);
  146 + documento.setData(data);
  147 +
  148 + return documento;
  149 + }
  150 +
  151 + /**
  152 + * Função para enviar para múltiplos SEI's
  153 + *
  154 + * @author Matheus de Carvalho Sobrinho
  155 + * @param protocolo
  156 + * @param idUsuario
  157 + * @param sei
  158 + * @param tipo
  159 + * @param mapConfig
  160 + * @param idSei
  161 + * @return
  162 + */
  163 + public String enviarDocumentoComSei(Protocolo protocolo, Long idUsuario, String sei, String tipo,
  164 + Map<String, String> mapConfig, String idSei) {
  165 +
  166 + if (sei != null && tipo != null && !sei.isEmpty() && tipo.equals("existente")) {
  167 + enviarDocumento(protocolo, idUsuario, sei, mapConfig, idSei);
  168 + } else {
  169 + try {
  170 + List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  171 + SeiBindingStub seiBindingStubMontado = this.montarURLEndPoint(mapConfig.get("URL_ENDPOINT"));
  172 + Assunto[] assuntos = this.montarAssunto(mapConfig.get("ASSUNTO_CODIGO_ESTRUTURADO"));
  173 + Interessado[] interessados = this.montarInteressado(protocolo);
  174 + Procedimento procedimento = this.montarProcedimento(assuntos, mapConfig, protocolo, arquivosList.size());
  175 + procedimento.setInteressados(interessados);
  176 +
  177 + // Verificar se é um tipo informado
  178 + if (tipo.equals("novo")) {
  179 + procedimento.setNumeroProtocolo(sei);
  180 + procedimento.setDataAutuacao(getDateTime());
  181 + }
  182 +
  183 + procedimento.setIdTipoProcedimento(mapConfig.get("PROCEDIMENTO_ID_TIPO_PROCEDIMENTO"));
  184 +
  185 + RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStubMontado.gerarProcedimento(
  186 + mapConfig.get("SIGLA_SISTEMA"), mapConfig.get("IDENTIFICACAO_SERVICO"),
  187 + mapConfig.get("ID_UNIDADE"), procedimento, null, null, null, "S", "N", null, null, null, null,
  188 + null);
  189 +
  190 + arquivosList.forEach(arquivo -> {
  191 + try {
  192 + Path path = getDefault()
  193 + .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  194 + .resolve(arquivo.getNome());
  195 +
  196 + Documento documento = this.montarDocumento(
  197 + retornoGeracaoProcedimento.getProcedimentoFormatado().replace(".", "").replace("/", "")
  198 + .replace("-", ""),
  199 + arquivo.getDescricaoDocumento(),
  200 + protocolo.toString() + "\n" + "Quantidade Arquivos: " + arquivosList.size(),
  201 + arquivo.getNomeOriginal(),
  202 + Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())),
  203 + mapConfig.get("DOCUMENTO_TIPO"), recuperarCodigoSeiDeArquivo(arquivo, idSei),
  204 + protocolo.getDataFormatada());
  205 +
  206 + documento.setNivelAcesso(mapConfig.get("DOCUMENTO_NIVEL_ACESSO"));
  207 + documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  208 +
  209 + RetornoInclusaoDocumento retornoInclusaoDeDocumento = seiBindingStubMontado.incluirDocumento(
  210 + mapConfig.get("SIGLA_SISTEMA"), mapConfig.get("IDENTIFICACAO_SERVICO"),
  211 + mapConfig.get("ID_UNIDADE"), documento);
  212 + System.out.println("Link = " + retornoInclusaoDeDocumento.getLinkAcesso());
  213 +
  214 + } catch (IOException e) {
  215 + protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  216 + throw new RuntimeException(e.getMessage());
  217 + }
  218 + });
  219 +
  220 + protocolo.setLinkSEI(retornoGeracaoProcedimento.getLinkAcesso());
  221 + protocolo.setNupe(retornoGeracaoProcedimento.getProcedimentoFormatado());
  222 + salvarProtocoloService.aprovar(protocolo, idUsuario);
  223 +
  224 + mailer.enviarAceite(protocolo);
  225 +
  226 + return retornoGeracaoProcedimento.getProcedimentoFormatado();
  227 + } catch (Exception e) {
  228 + protocolo.setErroWs("[ERRO GERAR PROCEDIMENTO] " + e.getMessage());
  229 + e.printStackTrace();
  230 + rollback(protocolo, e.getMessage());
  231 + }
  232 + }
  233 +
  234 + return null;
  235 + }
  236 +
  237 + public String enviarDocumento(Protocolo protocolo, Long idUsuario, String sei, Map<String, String> mapConfig,
  238 + String idSei) {
  239 + try {
  240 +
  241 + URL urlEndpoint = new URL(mapConfig.get("URL_ENDPOINT"));
  242 + SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  243 + seiBindingStub.setTimeout(600000 * 60);
  244 +
  245 + List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  246 +
  247 + arquivosList.forEach(arquivo -> {
  248 + try {
  249 + Documento documento = new Documento();
  250 + // documento.setIdProcedimento( sei );
  251 + documento.setIdProcedimento(sei.replace(".", "").replace("/", "").replace("-", ""));
  252 + documento.setObservacao(protocolo.toString());
  253 + documento.setDescricao(arquivo.getDescricaoDocumento());
  254 + documento.setNomeArquivo(arquivo.getNomeOriginal());
  255 +
  256 + documento.setTipo(mapConfig.get("DOCUMENTO_TIPO"));
  257 + // documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar
  258 + // para pegar da combo Tipo Documento
  259 +
  260 + documento.setIdSerie(recuperarCodigoSeiDeArquivo(arquivo, idSei)); // Tipo documento vindo do banco
  261 + // de
  262 + // dados
  263 + documento.setData(protocolo.getDataFormatada());
  264 + documento.setNivelAcesso(mapConfig.get("DOCUMENTO_NIVEL_ACESSO"));
  265 +
  266 + Path path = getDefault()
  267 + .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  268 + .resolve(arquivo.getNome());
  269 + documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  270 +
  271 + seiBindingStub.incluirDocumento(mapConfig.get("SIGLA_SISTEMA"),
  272 + mapConfig.get("IDENTIFICACAO_SERVICO"), mapConfig.get("ID_UNIDADE"), documento);
  273 + } catch (IOException e) {
  274 + protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  275 + throw new RuntimeException(e.getMessage());
  276 + }
  277 + });
  278 +
  279 + protocolo.setNupe(sei);
  280 + salvarProtocoloService.aprovar(protocolo, idUsuario);
  281 +
  282 + protocolo.setArquivosList(arquivosRepository.findByProtocolo(protocolo));
  283 + mailer.enviarAceite(protocolo);
  284 +
  285 + return sei;
  286 + } catch (Exception e) {
  287 + e.printStackTrace();
  288 + rollback(protocolo, e.getMessage());
  289 + }
  290 +
  291 + return null;
  292 +
  293 + }
  294 +
  295 + private String recuperarCodigoSeiDeArquivo(Arquivos arquivo, String idSei) {
  296 + if (idSei.equals("2")) {
  297 + return arquivo.getTipoDocumento().getCodigoSei();
  298 + } else if (idSei.equals("6")) {
  299 + return arquivo.getTipoDocumento().getCodigoSeiMf();
  300 + } else if (idSei.equals("7")) {
  301 + return arquivo.getTipoDocumento().getCodigoSeiMdic();
  302 + }
  303 + return null;
  304 + }
  305 +
  306 + public RetornoConsultaProcedimento consultarProtocoloSei(String sei) {
  307 + Optional<String> retorno = Optional.ofNullable(null);
  308 + RetornoConsultaProcedimento retornoConsultaProcedimento = new RetornoConsultaProcedimento();
  309 + try {
  310 + URL urlEndpoint = new URL(configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_ENDPOINT));
  311 + SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  312 + retornoConsultaProcedimento = seiBindingStub.consultarProcedimento(
  313 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  314 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  315 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), sei, "S", "S", "S", "S", "S",
  316 + "S", "S", "S", "S");
  317 + } catch (Exception e) {
  318 + e.printStackTrace();
  319 + }
  320 + return retornoConsultaProcedimento;
  321 + }
  322 +
  323 +// /**
  324 +// * Enviar para o SEI primeiramente definido
  325 +// *
  326 +// * @param protocolo
  327 +// * @param idUsuario
  328 +// * @param sei
  329 +// * @param tipo
  330 +// * @return
  331 +// */
  332 +// public String enviarSeiPadrao(Protocolo protocolo, Long idUsuario, String sei, String tipo,
  333 +// Map<String, String> mapConfig, String idSei) {
  334 +//
  335 +// if (sei != null && tipo != null && !sei.isEmpty() && tipo.equals("existente")) {
  336 +// enviarDocumentoPadrao(protocolo, idUsuario, sei, mapConfig, idSei);
  337 +// } else {
  338 +//
  339 +// try {
  340 +// URL urlEndpoint = new URL(configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_ENDPOINT));
  341 +// SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  342 +// seiBindingStub.setTimeout(600000 * 60);
  343 +//
  344 +// Procedimento procedimento = new Procedimento();
  345 +// if (tipo.equals("novo")) {
  346 +// procedimento.setNumeroProtocolo(sei);
  347 +// procedimento.setDataAutuacao(getDateTime());
  348 +// }
  349 +//
  350 +// procedimento.setAssuntos(recuperaAssunto());
  351 +// procedimento.setEspecificacao(
  352 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.PROCEDIMENTO_ESPECIFICADO));
  353 +//
  354 +// Interessado interessado = new Interessado();
  355 +// interessado.setNome(protocolo.getUsuario().getNome());
  356 +// interessado.setSigla("Telefone: " + protocolo.getUsuario().getTelefone());
  357 +// Interessado[] interessados = { interessado };
  358 +//
  359 +// procedimento.setInteressados(interessados);
  360 +//
  361 +// procedimento.setNivelAcesso(
  362 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.PROCEDIMENTO_NIVEL_ACESSO));
  363 +// procedimento.setIdTipoProcedimento(
  364 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.PROCEDIMENTO_ID_TIPO_PROCEDIMENTO));
  365 +//
  366 +// List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  367 +//
  368 +// procedimento.setObservacao(protocolo.toString() + "\n" + "Quantidade Arquivos: " + arquivosList.size());
  369 +//
  370 +// // criando o procedimento
  371 +// RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento(
  372 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  373 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  374 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), procedimento, null, null,
  375 +// null, "N", "N", null, null, "N", null, null);
  376 +//
  377 +// arquivosList.forEach(arquivo -> {
  378 +// try {
  379 +// Documento documento = new Documento();
  380 +// documento.setIdProcedimento(retornoGeracaoProcedimento.getProcedimentoFormatado()
  381 +// .replace(".", "").replace("/", "").replace("-", ""));
  382 +// documento.setObservacao(protocolo.toString());
  383 +// documento.setDescricao(arquivo.getDescricaoDocumento());
  384 +// documento.setNomeArquivo(arquivo.getNomeOriginal());
  385 +// documento.setTipo(configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_TIPO));
  386 +// // documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar
  387 +// // para pegar da combo Tipo Documento
  388 +// documento.setIdSerie(arquivo.getTipoDocumento().getCodigoSei()); // Tipo documento vindo do
  389 +// // banco de dados
  390 +// documento.setData(protocolo.getDataFormatada());
  391 +// documento.setNivelAcesso(
  392 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO));
  393 +//
  394 +// Path path = getDefault()
  395 +// .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  396 +// .resolve(arquivo.getNome());
  397 +// documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  398 +//
  399 +// seiBindingStub.incluirDocumento(
  400 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  401 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  402 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), documento);
  403 +// } catch (IOException e) {
  404 +// protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  405 +// throw new RuntimeException(e.getMessage());
  406 +// }
  407 +// });
  408 +//
  409 +// protocolo.setLinkSEI(retornoGeracaoProcedimento.getLinkAcesso());
  410 +// protocolo.setNupe(retornoGeracaoProcedimento.getProcedimentoFormatado());
  411 +// salvarProtocoloService.aprovar(protocolo, idUsuario);
  412 +//
  413 +// protocolo.setArquivosList(arquivosList);
  414 +// mailer.enviarAceite(protocolo);
  415 +//
  416 +// return retornoGeracaoProcedimento.getProcedimentoFormatado();
  417 +//
  418 +// } catch (Exception e) {
  419 +// protocolo.setErroWs("[ERRO GERAR PROCEDIMENTO] " + e.getMessage());
  420 +// e.printStackTrace();
  421 +// rollback(protocolo, e.getMessage());
  422 +// }
  423 +// }
  424 +//
  425 +// return null;
  426 +// }
  427 +//
  428 +// public String enviarDocumentoPadrao(Protocolo protocolo, Long idUsuario, String sei, Map<String, String> mapConfig,
  429 +// String idSei) {
  430 +// String observacaoAnterior = "";
  431 +// try {
  432 +//
  433 +// URL urlEndpoint = new URL(configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_ENDPOINT));
  434 +// SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  435 +// seiBindingStub.setTimeout(600000 * 60);
  436 +//
  437 +// List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  438 +//
  439 +// arquivosList.forEach(arquivo -> {
  440 +// try {
  441 +// Documento documento = new Documento();
  442 +// // documento.setIdProcedimento( sei );
  443 +// documento.setIdProcedimento(sei.replace(".", "").replace("/", "").replace("-", ""));
  444 +// documento.setObservacao(protocolo.toString());
  445 +// documento.setDescricao(arquivo.getDescricaoDocumento());
  446 +// documento.setNomeArquivo(arquivo.getNomeOriginal());
  447 +// documento.setTipo(configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_TIPO));
  448 +// // documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar
  449 +// // para pegar da combo Tipo Documento
  450 +// documento.setIdSerie(arquivo.getTipoDocumento().getCodigoSei()); // Tipo documento vindo do banco de
  451 +// // dados
  452 +// documento.setData(protocolo.getDataFormatada());
  453 +// documento.setNivelAcesso(
  454 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO));
  455 +//
  456 +// Path path = getDefault()
  457 +// .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  458 +// .resolve(arquivo.getNome());
  459 +// documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  460 +//
  461 +// seiBindingStub.incluirDocumento(
  462 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  463 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  464 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), documento);
  465 +// } catch (IOException e) {
  466 +// protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  467 +// throw new RuntimeException(e.getMessage());
  468 +// }
  469 +// });
  470 +//
  471 +// protocolo.setNupe(sei);
  472 +// // protocolo.setNupe( retornoGeracaoProcedimento.getProcedimentoFormatado() );
  473 +// salvarProtocoloService.aprovar(protocolo, idUsuario);
  474 +//
  475 +// protocolo.setArquivosList(arquivosRepository.findByProtocolo(protocolo));
  476 +// mailer.enviarAceite(protocolo);
  477 +//
  478 +// /*
  479 +// * arquivosList.forEach( arquivo -> { arquivoStorage.excluir( arquivo.getNome()
  480 +// * ); } );
  481 +// */
  482 +//
  483 +// return sei;
  484 +//
  485 +// } catch (Exception e) {
  486 +// e.printStackTrace();
  487 +// rollback(protocolo, e.getMessage());
  488 +// }
  489 +//
  490 +// return null;
  491 +//
  492 +// }
  493 +
  494 +
295 } 495 }
src/main/java/br/gov/planejamento/dipla/protocolo/services/AutoCadastroService.java
1 package br.gov.planejamento.dipla.protocolo.services; 1 package br.gov.planejamento.dipla.protocolo.services;
2 2
3 import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto; 3 import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
4 -import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;  
5 -import br.gov.planejamento.dipla.protocolo.entities.Grupo;  
6 -import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;  
7 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;  
8 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
9 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao; 4 +import br.gov.planejamento.dipla.protocolo.entities.*;
10 import br.gov.planejamento.dipla.protocolo.mail.Mailer; 5 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
11 -import br.gov.planejamento.dipla.protocolo.repositories.GrupoRepository;  
12 -import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;  
13 -import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;  
14 -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioBrasilCidadaoRepository;  
15 -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository; 6 +import br.gov.planejamento.dipla.protocolo.repositories.*;
16 import br.gov.planejamento.dipla.protocolo.services.exeptions.EmailUsuarioJaCadastradoException; 7 import br.gov.planejamento.dipla.protocolo.services.exeptions.EmailUsuarioJaCadastradoException;
17 import br.gov.planejamento.dipla.protocolo.services.exeptions.SenhaObrigatoriaUsuarioException; 8 import br.gov.planejamento.dipla.protocolo.services.exeptions.SenhaObrigatoriaUsuarioException;
18 -  
19 import org.apache.commons.codec.digest.DigestUtils; 9 import org.apache.commons.codec.digest.DigestUtils;
20 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.security.crypto.password.PasswordEncoder; 11 import org.springframework.security.crypto.password.PasswordEncoder;
@@ -23,9 +13,6 @@ import org.springframework.stereotype.Service; @@ -23,9 +13,6 @@ import org.springframework.stereotype.Service;
23 import org.springframework.transaction.annotation.Transactional; 13 import org.springframework.transaction.annotation.Transactional;
24 import org.springframework.util.Base64Utils; 14 import org.springframework.util.Base64Utils;
25 import org.springframework.util.StringUtils; 15 import org.springframework.util.StringUtils;
26 -import org.springframework.web.bind.annotation.GetMapping;  
27 -import org.springframework.web.bind.annotation.PathVariable;  
28 -import org.springframework.web.servlet.ModelAndView;  
29 16
30 import java.util.ArrayList; 17 import java.util.ArrayList;
31 import java.util.List; 18 import java.util.List;
@@ -93,8 +80,8 @@ public class AutoCadastroService { @@ -93,8 +80,8 @@ public class AutoCadastroService {
93 } 80 }
94 81
95 @Transactional 82 @Transactional
96 - public void cadastrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno) {  
97 - 83 + public Usuario cadastrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno) {
  84 +
98 UsuarioBrasilCidadao usuarioBrasilCidadao= new UsuarioBrasilCidadao(); 85 UsuarioBrasilCidadao usuarioBrasilCidadao= new UsuarioBrasilCidadao();
99 Usuario usuario = new Usuario(); 86 Usuario usuario = new Usuario();
100 usuario.setNome(usuarioretorno.getNome()); 87 usuario.setNome(usuarioretorno.getNome());
@@ -104,18 +91,22 @@ public class AutoCadastroService { @@ -104,18 +91,22 @@ public class AutoCadastroService {
104 List<Grupo> grupos = new ArrayList<>(); 91 List<Grupo> grupos = new ArrayList<>();
105 grupos.add(grupoRepository.findOne(3L)); 92 grupos.add(grupoRepository.findOne(3L));
106 usuario.setGrupos(grupos); 93 usuario.setGrupos(grupos);
107 - 94 +
108 salvar(usuario,grupos,false,false); 95 salvar(usuario,grupos,false,false);
109 - 96 +
  97 + return usuario;
  98 +
110 } 99 }
111 100
112 - public void migrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno) { 101 + public UsuarioBrasilCidadao migrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno, Usuario usuario) {
113 UsuarioBrasilCidadao usuarioBrasilCidadao= new UsuarioBrasilCidadao(); 102 UsuarioBrasilCidadao usuarioBrasilCidadao= new UsuarioBrasilCidadao();
114 - //Salvando CPF  
115 - usuarioBrasilCidadao.setCpf(usuarioretorno.getCpf());  
116 - usuarioBrasilCidadao.setToken(usuarioretorno.getToken());  
117 - usuarioBrasilCidadao.setAtivo(Boolean.FALSE);  
118 - usuarioBrasilCidadaoRepository.save(usuarioBrasilCidadao); 103 + usuarioBrasilCidadao.setEmail(usuarioretorno.getEmail());
  104 + usuarioBrasilCidadao.setUsuario(usuario);
  105 + usuarioBrasilCidadao.setCpf(usuarioretorno.getCpf());
  106 + usuarioBrasilCidadao.setToken(usuarioretorno.getToken());
  107 + usuarioBrasilCidadao.setAtivo(Boolean.FALSE);
  108 + usuarioBrasilCidadaoRepository.save(usuarioBrasilCidadao);
  109 + return usuarioBrasilCidadao;
119 } 110 }
120 public void atualizarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno, UsuarioBrasilCidadao usuarioBrasilCidadao, Boolean atualizaEmail) { 111 public void atualizarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno, UsuarioBrasilCidadao usuarioBrasilCidadao, Boolean atualizaEmail) {
121 112
src/main/java/br/gov/planejamento/dipla/protocolo/services/BrasilCidadaoService.java
@@ -6,44 +6,38 @@ @@ -6,44 +6,38 @@
6 package br.gov.planejamento.dipla.protocolo.services; 6 package br.gov.planejamento.dipla.protocolo.services;
7 7
8 import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig; 8 import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
9 -import br.gov.planejamento.dipla.protocolo.dto.TokenRetornoDto;  
10 import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto; 9 import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
11 -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;  
12 -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;  
13 import br.gov.planejamento.dipla.protocolo.entities.Usuario; 10 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
14 import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao; 11 import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
15 -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;  
16 -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;  
17 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository; 12 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
18 -import br.gov.planejamento.dipla.protocolo.security.BrasilCidadaoUserDetails;  
19 import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema; 13 import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
20 - 14 +import org.jose4j.json.internal.json_simple.JSONArray;
  15 +import org.jose4j.json.internal.json_simple.JSONObject;
  16 +import org.jose4j.json.internal.json_simple.parser.JSONParser;
  17 +import org.jose4j.jwk.PublicJsonWebKey;
  18 +import org.jose4j.jwt.JwtClaims;
  19 +import org.jose4j.jwt.consumer.JwtConsumer;
  20 +import org.jose4j.jwt.consumer.JwtConsumerBuilder;
21 import org.springframework.beans.factory.annotation.Autowired; 21 import org.springframework.beans.factory.annotation.Autowired;
22 -import org.springframework.http.HttpEntity;  
23 -import org.springframework.http.HttpMethod;  
24 -import org.springframework.http.ResponseEntity;  
25 import org.springframework.http.converter.StringHttpMessageConverter; 22 import org.springframework.http.converter.StringHttpMessageConverter;
26 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; 23 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
27 import org.springframework.security.core.GrantedAuthority; 24 import org.springframework.security.core.GrantedAuthority;
28 import org.springframework.security.core.authority.SimpleGrantedAuthority; 25 import org.springframework.security.core.authority.SimpleGrantedAuthority;
29 -import org.springframework.security.core.context.SecurityContextHolder;  
30 import org.springframework.stereotype.Service; 26 import org.springframework.stereotype.Service;
31 -import org.springframework.transaction.annotation.Transactional;  
32 import org.springframework.web.client.RestTemplate; 27 import org.springframework.web.client.RestTemplate;
33 -import org.springframework.web.servlet.ModelAndView;  
34 -  
35 -import com.fasterxml.jackson.databind.ObjectMapper;  
36 28
  29 +import javax.net.ssl.HttpsURLConnection;
  30 +import java.io.BufferedReader;
  31 +import java.io.InputStreamReader;
  32 +import java.net.URL;
37 import java.nio.charset.Charset; 33 import java.nio.charset.Charset;
38 -import java.util.Collection;  
39 -import java.util.HashSet;  
40 -import java.util.List;  
41 -import java.util.Optional;  
42 -import java.util.Set; 34 +import java.util.*;
  35 +
  36 +
43 37
44 /** 38 /**
45 * 39 *
46 - * @author leonardo 40 + * @author leonardo, Jose Fortes
47 */ 41 */
48 @Service 42 @Service
49 public class BrasilCidadaoService { 43 public class BrasilCidadaoService {
@@ -55,63 +49,148 @@ public class BrasilCidadaoService { @@ -55,63 +49,148 @@ public class BrasilCidadaoService {
55 49
56 @Autowired 50 @Autowired
57 private BrasilCidadaoConfig brasilCidadaoOpenIdConnectConfig; 51 private BrasilCidadaoConfig brasilCidadaoOpenIdConnectConfig;
58 -  
59 -  
60 - public UsuarioBrasilCidadaoDto autenticarBrasilCidadao(String code) throws Exception{  
61 - UsuarioBrasilCidadaoDto usuarioretorno = new UsuarioBrasilCidadaoDto();  
62 -  
63 - RestTemplate restTemplate = new RestTemplate();  
64 - restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));  
65 -  
66 - HttpEntity<String> entityToken = new HttpEntity<String>(brasilCidadaoOpenIdConnectConfig.gerarRequisicaoAtributo(code), brasilCidadaoOpenIdConnectConfig.gerarRequisicaoHeader());  
67 -  
68 - //Enviando autorização com code  
69 -  
70 - ResponseEntity<String> respEntToken = restTemplate.exchange(brasilCidadaoOpenIdConnectConfig.gerarUrlToken(), HttpMethod.POST, entityToken, String.class);  
71 -  
72 - if(respEntToken.getStatusCodeValue()!=200) {  
73 - throw new Exception("Erro no recebimento do token");  
74 - }  
75 -  
76 - //Capturando token  
77 - TokenRetornoDto retorno = new ObjectMapper().readValue(respEntToken.getBody().toString(), TokenRetornoDto.class);  
78 -  
79 - //Enviando token  
80 - ResponseEntity<String> respEntUsuario = restTemplate.exchange(brasilCidadaoOpenIdConnectConfig.gerarUrlDadosUsuarios(retorno.getAccess_token()),HttpMethod.GET,null,String.class);  
81 -  
82 - if(respEntUsuario.getStatusCodeValue()!=200) {  
83 - throw new Exception("Erro no recebimento dos dados do usuario");  
84 - }  
85 -  
86 - //Capturando dados usuario  
87 - usuarioretorno = new ObjectMapper().readValue(respEntUsuario.getBody().toString() , UsuarioBrasilCidadaoDto.class);  
88 - usuarioretorno.setToken(retorno.getAccess_token());  
89 -  
90 - return usuarioretorno;  
91 - }  
92 -  
93 - public UsernamePasswordAuthenticationToken autenticarProtocolo(UsuarioBrasilCidadaoDto usuarioretorno) throws Exception {  
94 - Optional<UsuarioBrasilCidadao> usuarioBrasilCidadao = usuarioRepository.buscarBrasilCidadao(usuarioretorno.getCpf());  
95 -  
96 - BrasilCidadaoUserDetails userDetails = new BrasilCidadaoUserDetails(usuarioBrasilCidadao.get().getUsuario().getEmail());  
97 - Optional<Usuario> usuario = usuarioRepository.findByEmail(usuarioBrasilCidadao.get().getUsuario().getEmail());  
98 -  
99 -  
100 - List<String> permissoes = usuarioRepository.permissoes(usuario.get()); 52 +
  53 +
  54 + public UsernamePasswordAuthenticationToken autenticarProtocolo(UsuarioBrasilCidadaoDto usuarioretorno) throws Exception {
  55 + Optional<UsuarioBrasilCidadao> usuarioBrasilCidadao = usuarioRepository.buscarBrasilCidadao(usuarioretorno.getCpf());
  56 +
  57 + Optional<Usuario> usuario = usuarioRepository.findByEmail(usuarioBrasilCidadao.get().getUsuario().getEmail());
  58 +
101 usuario.get().setTemPerfilBrasilCidadao(true); 59 usuario.get().setTemPerfilBrasilCidadao(true);
102 -  
103 - UsuarioSistema usuarioSistema = new UsuarioSistema(usuario.get(),getPermissoes(),true);  
104 -  
105 - UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(  
106 - usuarioSistema,  
107 - usuarioretorno.getToken(),getPermissoes()); 60 +
  61 + UsuarioSistema usuarioSistema = new UsuarioSistema(usuario.get(), getPermissoes(), true);
  62 +
  63 + UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(
  64 + usuarioSistema,
  65 + usuarioretorno.getToken(), getPermissoes());
108 return auth; 66 return auth;
109 - }  
110 -  
111 - private Collection<? extends GrantedAuthority> getPermissoes() { 67 + }
  68 +
  69 + private Collection<? extends GrantedAuthority> getPermissoes() {
112 Set<SimpleGrantedAuthority> authorities = new HashSet<>(); 70 Set<SimpleGrantedAuthority> authorities = new HashSet<>();
113 authorities.add(new SimpleGrantedAuthority("ROLE_BRASILCIDADAO")); 71 authorities.add(new SimpleGrantedAuthority("ROLE_BRASILCIDADAO"));
114 return authorities; 72 return authorities;
115 } 73 }
116 74
  75 + public UsuarioBrasilCidadaoDto autenticarBrasilCidadao(String code) throws Exception {
  76 + UsuarioBrasilCidadaoDto usuarioRetorno = new UsuarioBrasilCidadaoDto();
  77 +
  78 + RestTemplate restTemplate = new RestTemplate();
  79 + restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
  80 +
  81 + //Enviando autorização com code
  82 + try {
  83 + String idToken = receberToken(code);
  84 + usuarioRetorno = recuperarInformacoesUsuarioBrasilCidadao(idToken);
  85 + return usuarioRetorno;
  86 + } catch (Exception e) {
  87 + msgErro = e.getMessage();
  88 + System.out.println(msgErro);
  89 + }
  90 +
  91 + return null;
  92 + }
  93 +
  94 + private String receberToken(String code) throws Exception{
  95 + String idToken = "";
  96 + try {
  97 + String tokens = extractToken(code);
  98 + org.jose4j.json.internal.json_simple.parser.JSONParser parser = new JSONParser();
  99 + org.jose4j.json.internal.json_simple.JSONObject tokensJson = (JSONObject) parser.parse(tokens);
  100 + idToken = (String) tokensJson.get("id_token");
  101 + } catch (Exception e) {
  102 + msgErro = e.getMessage();
  103 + System.out.println(msgErro);
  104 + }
  105 +
  106 + return idToken;
  107 + }
  108 +
  109 + private String extractToken(String code) throws Exception {
  110 + String retorno = "";
  111 + URL url = new URL(brasilCidadaoOpenIdConnectConfig.gerarURLToken(code));
  112 + HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  113 + conn.setRequestMethod("POST");
  114 + conn.setRequestProperty("Accept", "application/json");
  115 + conn.setRequestProperty("authorization", String.format("Basic %s",
  116 + Base64.getEncoder().encodeToString(String.format("%s:%s", brasilCidadaoOpenIdConnectConfig.obterClientID(), brasilCidadaoOpenIdConnectConfig.obterClientSecret()).getBytes())));
  117 +
  118 + if (conn.getResponseCode() != 200) {
  119 + throw new RuntimeException("Falhou : HTTP error code : " + conn.getResponseCode());
  120 + }
  121 +
  122 + BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
  123 +
  124 + String tokens = null;
  125 + while ((tokens = br.readLine()) != null) {
  126 + retorno += tokens;
  127 + }
  128 +
  129 + conn.disconnect();
  130 +
  131 + return retorno;
  132 + }
  133 +
  134 + private UsuarioBrasilCidadaoDto recuperarInformacoesUsuarioBrasilCidadao(String idToken) throws Exception{
  135 + JwtClaims idTokenJwtClaims;
  136 + try {
  137 + idTokenJwtClaims = processToClaims(idToken);
  138 + } catch (Exception e) {
  139 + msgErro = e.getMessage();
  140 + System.out.println(msgErro);
  141 + throw new Exception(e);
  142 + }
  143 +
  144 + UsuarioBrasilCidadaoDto usuarioBrasilCidadaoDto = new UsuarioBrasilCidadaoDto();
  145 + usuarioBrasilCidadaoDto.setEmail(idTokenJwtClaims.getClaimValue("email").toString());
  146 + usuarioBrasilCidadaoDto.setNome(idTokenJwtClaims.getStringClaimValue("name").toString());
  147 + usuarioBrasilCidadaoDto.setCpf(idTokenJwtClaims.getClaimValue("sub").toString());
  148 + return usuarioBrasilCidadaoDto;
  149 + }
  150 +
  151 + private JwtClaims processToClaims(String token) throws Exception {
  152 + URL url = new URL(brasilCidadaoOpenIdConnectConfig.obterURLDadosUsuario());
  153 + HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  154 + conn.setRequestMethod("GET");
  155 + conn.setRequestProperty("Accept", "application/json");
  156 + if (conn.getResponseCode() != 200) {
  157 + throw new RuntimeException("Falhou : HTTP error code : " + conn.getResponseCode());
  158 + }
  159 +
  160 + BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
  161 +
  162 + String ln = null, jwk = "";
  163 + while ((ln = br.readLine()) != null) {
  164 + jwk += ln;
  165 + }
  166 +
  167 + conn.disconnect();
  168 +
  169 + JSONParser parser = new JSONParser();
  170 + JSONObject tokensJson = (JSONObject) parser.parse(jwk);
  171 +
  172 + JSONArray keys = (JSONArray) tokensJson.get("keys");
  173 +
  174 + JSONObject keyJSONObject = (JSONObject) keys.get(0);
  175 +
  176 + String key = keyJSONObject.toJSONString();
  177 +
  178 + PublicJsonWebKey pjwk = PublicJsonWebKey.Factory.newPublicJwk(key);
  179 +
  180 + JwtConsumer jwtConsumer = new JwtConsumerBuilder().setRequireExpirationTime() // Exige que o token tenha um
  181 + // tempo de validade
  182 + .setExpectedAudience(brasilCidadaoOpenIdConnectConfig.obterClientID()).setMaxFutureValidityInMinutes(60) // Testa se o tempo de validade do
  183 + // access token é inferior ou igual
  184 + // ao tempo máximo estipulado (Tempo
  185 + // padrão de 60 minutos)
  186 + .setAllowedClockSkewInSeconds(30) // Esta é uma boa prática.
  187 + .setRequireSubject() // Exige que o token tenha um Subject.
  188 + .setExpectedIssuer(brasilCidadaoOpenIdConnectConfig.obterURLBrasilCidadao() + "/") // Verifica a procedência do token.
  189 + .setVerificationKey(pjwk.getPublicKey()) // Verifica a assinatura com a public key fornecida.
  190 + .build(); // Cria a instância JwtConsumer.
  191 +
  192 + return jwtConsumer.processToClaims(token);
  193 + }
  194 +
  195 +
117 } 196 }
src/main/java/br/gov/planejamento/dipla/protocolo/services/CadastroUsuarioService.java
@@ -5,13 +5,10 @@ @@ -5,13 +5,10 @@
5 */ 5 */
6 package br.gov.planejamento.dipla.protocolo.services; 6 package br.gov.planejamento.dipla.protocolo.services;
7 7
8 -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;  
9 import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum; 8 import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;
10 -import br.gov.planejamento.dipla.protocolo.entities.Grupo;  
11 import br.gov.planejamento.dipla.protocolo.entities.Usuario; 9 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
12 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;  
13 import br.gov.planejamento.dipla.protocolo.mail.Mailer; 10 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
14 -import br.gov.planejamento.dipla.protocolo.repositories.*; 11 +import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
15 import br.gov.planejamento.dipla.protocolo.services.exeptions.EmailUsuarioJaCadastradoException; 12 import br.gov.planejamento.dipla.protocolo.services.exeptions.EmailUsuarioJaCadastradoException;
16 import br.gov.planejamento.dipla.protocolo.services.exeptions.SenhaObrigatoriaUsuarioException; 13 import br.gov.planejamento.dipla.protocolo.services.exeptions.SenhaObrigatoriaUsuarioException;
17 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,8 +19,6 @@ import org.springframework.util.StringUtils; @@ -22,8 +19,6 @@ import org.springframework.util.StringUtils;
22 19
23 import java.math.BigInteger; 20 import java.math.BigInteger;
24 import java.security.SecureRandom; 21 import java.security.SecureRandom;
25 -import java.util.ArrayList;  
26 -import java.util.List;  
27 import java.util.Optional; 22 import java.util.Optional;
28 23
29 /** 24 /**
@@ -105,7 +100,7 @@ public class CadastroUsuarioService { @@ -105,7 +100,7 @@ public class CadastroUsuarioService {
105 usuario.setSenha(senha); 100 usuario.setSenha(senha);
106 mailer.enviarNovaSenha(usuario); 101 mailer.enviarNovaSenha(usuario);
107 }else { 102 }else {
108 - throw new RuntimeException("Usuário Cadastrado como Brasil Cidadão."); 103 + throw new RuntimeException("Usuário Cadastrado com Login Único.");
109 } 104 }
110 }else{ 105 }else{
111 throw new RuntimeException("Email não cadastrado."); 106 throw new RuntimeException("Email não cadastrado.");
src/main/java/br/gov/planejamento/dipla/protocolo/services/ConfiguracaoEmailService.java
@@ -5,12 +5,8 @@ @@ -5,12 +5,8 @@
5 */ 5 */
6 package br.gov.planejamento.dipla.protocolo.services; 6 package br.gov.planejamento.dipla.protocolo.services;
7 7
8 -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;  
9 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail; 8 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
10 -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;  
11 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository; 9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository;
12 -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;  
13 -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;  
14 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
16 import org.springframework.transaction.annotation.Transactional; 12 import org.springframework.transaction.annotation.Transactional;
src/main/java/br/gov/planejamento/dipla/protocolo/services/ConfiguracaoService.java
@@ -6,9 +6,7 @@ @@ -6,9 +6,7 @@
6 package br.gov.planejamento.dipla.protocolo.services; 6 package br.gov.planejamento.dipla.protocolo.services;
7 7
8 import br.gov.planejamento.dipla.protocolo.entities.Configuracao; 8 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
9 -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;  
10 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository; 9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
11 -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;  
12 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.annotation.Transactional; 12 import org.springframework.transaction.annotation.Transactional;
src/main/java/br/gov/planejamento/dipla/protocolo/services/EnviarProtocoloService.java
1 package br.gov.planejamento.dipla.protocolo.services; 1 package br.gov.planejamento.dipla.protocolo.services;
2 2
  3 +import Sei.RetornoConsultaProcedimento;
3 import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO; 4 import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;
4 import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum; 5 import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;
5 import br.gov.planejamento.dipla.protocolo.entities.Protocolo; 6 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
@@ -13,9 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -13,9 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.context.ApplicationEventPublisher; 14 import org.springframework.context.ApplicationEventPublisher;
14 import org.springframework.stereotype.Service; 15 import org.springframework.stereotype.Service;
15 16
16 -import Sei.RetornoConsultaProcedimento;  
17 -  
18 -import java.time.LocalDateTime;  
19 import java.util.Date; 17 import java.util.Date;
20 import java.util.List; 18 import java.util.List;
21 import java.util.Optional; 19 import java.util.Optional;
@@ -56,13 +54,13 @@ public class EnviarProtocoloService { @@ -56,13 +54,13 @@ public class EnviarProtocoloService {
56 return Optional.of(retornoConsultaProcedimento.getLinkAcesso()); 54 return Optional.of(retornoConsultaProcedimento.getLinkAcesso());
57 } 55 }
58 56
59 - public void enviarSEI(Protocolo protocolo, String sei, String tipo) { 57 + public void enviarSEI(Protocolo protocolo, String sei, String tipo, String idSei) {
60 protocolo.setDataEnvio(new Date()); 58 protocolo.setDataEnvio(new Date());
61 protocolo.setNupe("Processando..."); 59 protocolo.setNupe("Processando...");
62 protocolo.setStatus(StatusEnum.PROCESSANDO); 60 protocolo.setStatus(StatusEnum.PROCESSANDO);
63 protocoloRepository.save(protocolo); 61 protocoloRepository.save(protocolo);
64 logProtocoloService.saveLog(protocolo,AcaoEnum.ALTERAR); 62 logProtocoloService.saveLog(protocolo,AcaoEnum.ALTERAR);
65 - publisher.publishEvent(new AprovarProtocoloEvent(this, protocolo, logProtocoloService.recuperarUsuario(), sei, tipo)); 63 + publisher.publishEvent(new AprovarProtocoloEvent(this, protocolo, logProtocoloService.recuperarUsuario(), sei, tipo, idSei));
66 } 64 }
67 65
68 public void recusar(Protocolo protocolo) { 66 public void recusar(Protocolo protocolo) {
src/main/java/br/gov/planejamento/dipla/protocolo/services/LogProtocoloService.java
1 package br.gov.planejamento.dipla.protocolo.services; 1 package br.gov.planejamento.dipla.protocolo.services;
2 2
3 -import java.util.Date;  
4 -import java.util.List;  
5 -import java.util.Optional;  
6 -  
7 -import javax.persistence.Column;  
8 -import javax.persistence.EnumType;  
9 -import javax.persistence.Enumerated;  
10 -import javax.persistence.GeneratedValue;  
11 -import javax.persistence.GenerationType;  
12 -import javax.persistence.Id;  
13 -import javax.persistence.JoinColumn;  
14 -import javax.persistence.ManyToOne;  
15 -import javax.persistence.Temporal;  
16 - 3 +import br.gov.planejamento.dipla.protocolo.entities.*;
  4 +import br.gov.planejamento.dipla.protocolo.repositories.LogStatusRepository;
  5 +import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
17 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.security.core.context.SecurityContextHolder; 7 import org.springframework.security.core.context.SecurityContextHolder;
19 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
20 import org.springframework.transaction.annotation.Transactional; 9 import org.springframework.transaction.annotation.Transactional;
21 -  
22 -import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;  
23 -import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;  
24 -import br.gov.planejamento.dipla.protocolo.entities.Arquivos;  
25 -import br.gov.planejamento.dipla.protocolo.entities.EntidadeEnum;  
26 -import br.gov.planejamento.dipla.protocolo.entities.LogSistema;  
27 -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;  
28 -import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;  
29 -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;  
30 -import br.gov.planejamento.dipla.protocolo.entities.Usuario;  
31 -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;  
32 -import br.gov.planejamento.dipla.protocolo.repositories.LogStatusRepository;  
33 -import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;  
34 -import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;  
35 -import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;  
36 /** 10 /**
37 * Created by dario on 29/09/17. 11 * Created by dario on 29/09/17.
38 */ 12 */
src/main/java/br/gov/planejamento/dipla/protocolo/services/ProtocoloFlagService.java
1 package br.gov.planejamento.dipla.protocolo.services; 1 package br.gov.planejamento.dipla.protocolo.services;
2 2
3 -import java.util.Optional;  
4 import br.gov.planejamento.dipla.protocolo.entities.Protocolo; 3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
  4 +
  5 +import java.util.Optional;
5 /** 6 /**
6 * Created by dario on 29/09/17. 7 * Created by dario on 29/09/17.
7 */ 8 */
src/main/java/br/gov/planejamento/dipla/protocolo/services/event/AprovarProtocoloEvent.java
@@ -11,12 +11,14 @@ public class AprovarProtocoloEvent extends ApplicationEvent { @@ -11,12 +11,14 @@ public class AprovarProtocoloEvent extends ApplicationEvent {
11 private Long idUsuario; 11 private Long idUsuario;
12 private String sei; 12 private String sei;
13 private String tipo; 13 private String tipo;
  14 + private String idSei;
14 15
15 - public AprovarProtocoloEvent(Object source, Protocolo protocolo, Long idUsuario, String sei, String tipo) { 16 + public AprovarProtocoloEvent(Object source, Protocolo protocolo, Long idUsuario, String sei, String tipo, String idSei) {
16 super(source); 17 super(source);
17 this.protocolo = protocolo; 18 this.protocolo = protocolo;
18 this.idUsuario = idUsuario; 19 this.idUsuario = idUsuario;
19 this.sei = sei; 20 this.sei = sei;
20 this.tipo = tipo; 21 this.tipo = tipo;
  22 + this.idSei = idSei;
21 } 23 }
22 } 24 }
src/main/java/br/gov/planejamento/dipla/protocolo/services/event/listener/AprovarProtocoloListener.java
@@ -14,6 +14,10 @@ public class AprovarProtocoloListener implements ApplicationListener&lt;AprovarProt @@ -14,6 +14,10 @@ public class AprovarProtocoloListener implements ApplicationListener&lt;AprovarProt
14 14
15 @Override 15 @Override
16 public void onApplicationEvent(AprovarProtocoloEvent aprovarProtocoloEvent) { 16 public void onApplicationEvent(AprovarProtocoloEvent aprovarProtocoloEvent) {
17 - seiWSClient.enviar(aprovarProtocoloEvent.getProtocolo(),aprovarProtocoloEvent.getIdUsuario(), aprovarProtocoloEvent.getSei(),aprovarProtocoloEvent.getTipo()); 17 + try {
  18 + seiWSClient.enviar(aprovarProtocoloEvent.getProtocolo(),aprovarProtocoloEvent.getIdUsuario(), aprovarProtocoloEvent.getSei(),aprovarProtocoloEvent.getTipo(), aprovarProtocoloEvent.getIdSei());
  19 + } catch (Exception e) {
  20 + e.printStackTrace();
  21 + }
18 } 22 }
19 } 23 }
src/main/java/br/gov/planejamento/dipla/protocolo/services/impl/ProtocoloFlagServiceImpl.java
1 package br.gov.planejamento.dipla.protocolo.services.impl; 1 package br.gov.planejamento.dipla.protocolo.services.impl;
2 2
3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo; 3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
4 -import br.gov.planejamento.dipla.protocolo.services.ProtocoloFlagService;  
5 import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository; 4 import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
  5 +import br.gov.planejamento.dipla.protocolo.services.ProtocoloFlagService;
6 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 7 import org.springframework.stereotype.Service;
8 -import org.springframework.stereotype.Service;  
9 8
10 import java.util.Optional; 9 import java.util.Optional;
11 10
src/main/java/br/gov/planejamento/dipla/protocolo/storage/local/ArquivoStorageLocal.java
1 package br.gov.planejamento.dipla.protocolo.storage.local; 1 package br.gov.planejamento.dipla.protocolo.storage.local;
2 2
3 -import br.gov.planejamento.dipla.protocolo.clamav.ClamavUtil;  
4 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage; 3 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
5 import br.gov.planejamento.dipla.protocolo.util.MyStringUtil; 4 import br.gov.planejamento.dipla.protocolo.util.MyStringUtil;
6 import org.apache.commons.io.FileUtils; 5 import org.apache.commons.io.FileUtils;
src/main/java/fi/solita/clamav/ClamAVClient.java
@@ -3,12 +3,8 @@ package fi.solita.clamav; @@ -3,12 +3,8 @@ package fi.solita.clamav;
3 /** 3 /**
4 * Created by dario on 19/10/17. 4 * Created by dario on 19/10/17.
5 */ 5 */
6 -import java.io.BufferedOutputStream;  
7 -import java.io.ByteArrayInputStream;  
8 -import java.io.ByteArrayOutputStream;  
9 -import java.io.IOException;  
10 -import java.io.InputStream;  
11 -import java.io.OutputStream; 6 +
  7 +import java.io.*;
12 import java.net.Socket; 8 import java.net.Socket;
13 import java.nio.ByteBuffer; 9 import java.nio.ByteBuffer;
14 import java.nio.charset.StandardCharsets; 10 import java.nio.charset.StandardCharsets;
src/main/resources/application.properties
  1 +#Banco de dados
  2 +
  3 +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
  4 +spring.datasource.url= jdbc:mysql://10.209.40.206/protocolo-sei?useSSL=false
  5 +spring.datasource.username=root
  6 +spring.datasource.password=root
  7 +
  8 +#server.context-path=/protocolo
  9 +
1 spring.thymeleaf.mode=HTML 10 spring.thymeleaf.mode=HTML
2 spring.thymeleaf.template-resolver-order=1 11 spring.thymeleaf.template-resolver-order=1
3 12
4 #spring.mvc.locale=pt_BR 13 #spring.mvc.locale=pt_BR
5 spring.mvc.date-format=dd/MM/yyyy HH:mm 14 spring.mvc.date-format=dd/MM/yyyy HH:mm
6 15
7 -spring.datasource.jndi-name=java:comp/env/jdbc/protocoloDB 16 +#spring.datasource.jndi-name=java:comp/env/jdbc/protocoloDB
8 17
9 spring.http.multipart.max-file-size=30720KB 18 spring.http.multipart.max-file-size=30720KB
10 spring.http.multipart.max-request-size=30720KB 19 spring.http.multipart.max-request-size=30720KB
@@ -18,9 +27,10 @@ versao=@project.version@ @@ -18,9 +27,10 @@ versao=@project.version@
18 27
19 28
20 29
21 -  
22 -  
23 # Recaptcha 30 # Recaptcha
24 #recaptcha.url=https://www.google.com/recaptcha/api/siteverify 31 #recaptcha.url=https://www.google.com/recaptcha/api/siteverify
25 #recaptcha.site-key=!1vfdvS34#$%%$Cdd7581dec 32 #recaptcha.site-key=!1vfdvS34#$%%$Cdd7581dec
26 -#recaptcha.secret-key=!1vfdvS34#$%%$Cdd7581dec  
27 \ No newline at end of file 33 \ No newline at end of file
  34 +#recaptcha.secret-key=!1vfdvS34#$%%$Cdd7581dec
  35 +
  36 +# Comando para execu��o do flyway em ambiente de desenvolvimento
  37 +# mvn flyway:migrate -Dflyway.url=jdbc:mysql://localhost:3306/protocolo?useSSL=false -Dflyway.user=root -Dflyway.password=root -e -X
28 \ No newline at end of file 38 \ No newline at end of file
src/main/resources/db/migration/V01_Start.sql
@@ -1,582 +0,0 @@ @@ -1,582 +0,0 @@
1 --- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64)  
2 ---  
3 --- Server version 5.7.21  
4 -  
5 -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;  
6 -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;  
7 -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;  
8 -/*!40101 SET NAMES utf8 */;  
9 -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;  
10 -/*!40103 SET TIME_ZONE='+00:00' */;  
11 -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;  
12 -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;  
13 -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;  
14 -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;  
15 -  
16 ---  
17 --- Table structure for table `arquivos`  
18 ---  
19 -  
20 -DROP TABLE IF EXISTS `arquivos`;  
21 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
22 -/*!40101 SET character_set_client = utf8 */;  
23 -CREATE TABLE `arquivos` (  
24 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
25 - `codigo_protocolo` bigint(20) DEFAULT NULL,  
26 - `nome` varchar(200) NOT NULL,  
27 - `nome_original` varchar(100) NOT NULL,  
28 - `content_type` varchar(100) NOT NULL,  
29 - `tamanho` varchar(10) NOT NULL,  
30 - `codigo_tipo_documento` bigint(20) DEFAULT NULL,  
31 - `descricao_documento` varchar(200) DEFAULT NULL,  
32 - PRIMARY KEY (`codigo`),  
33 - KEY `codigo_protocolo` (`codigo_protocolo`),  
34 - KEY `codigo_tipo_documento` (`codigo_tipo_documento`),  
35 - CONSTRAINT `arquivos_ibfk_1` FOREIGN KEY (`codigo_protocolo`) REFERENCES `protocolo` (`codigo`),  
36 - CONSTRAINT `arquivos_ibfk_2` FOREIGN KEY (`codigo_tipo_documento`) REFERENCES `tipo_documento` (`codigo`)  
37 -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;  
38 -/*!40101 SET character_set_client = @saved_cs_client */;  
39 -  
40 -  
41 ---  
42 --- Table structure for table `classificacao`  
43 ---  
44 -  
45 -DROP TABLE IF EXISTS `classificacao`;  
46 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
47 -/*!40101 SET character_set_client = utf8 */;  
48 -CREATE TABLE `classificacao` (  
49 - `codigo` bigint(20) NOT NULL,  
50 - `nome` varchar(100) NOT NULL,  
51 - PRIMARY KEY (`codigo`)  
52 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
53 -/*!40101 SET character_set_client = @saved_cs_client */;  
54 -  
55 ---  
56 --- Dumping data for table `classificacao`  
57 ---  
58 -  
59 -LOCK TABLES `classificacao` WRITE;  
60 -/*!40000 ALTER TABLE `classificacao` DISABLE KEYS */;  
61 -INSERT INTO `classificacao` VALUES (1,'server-email'),(2,'sei'),(3,'storage'),(4,'brasil-cidadao'),(5,'captcha');  
62 -/*!40000 ALTER TABLE `classificacao` ENABLE KEYS */;  
63 -UNLOCK TABLES;  
64 -  
65 ---  
66 --- Table structure for table `configuracao`  
67 ---  
68 -  
69 -DROP TABLE IF EXISTS `configuracao`;  
70 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
71 -/*!40101 SET character_set_client = utf8 */;  
72 -CREATE TABLE `configuracao` (  
73 - `codigo` bigint(20) NOT NULL,  
74 - `nome` varchar(45) NOT NULL,  
75 - `valor` text,  
76 - `descricao` text,  
77 - `codigo_classificacao` bigint(20) NOT NULL,  
78 - PRIMARY KEY (`codigo`),  
79 - KEY `fk_configuracao_classificacao_idx` (`codigo_classificacao`),  
80 - CONSTRAINT `classificacao_fk` FOREIGN KEY (`codigo_classificacao`) REFERENCES `classificacao` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION  
81 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
82 -/*!40101 SET character_set_client = @saved_cs_client */;  
83 -  
84 ---  
85 --- Dumping data for table `configuracao`  
86 ---  
87 -  
88 -LOCK TABLES `configuracao` WRITE;  
89 -/*!40000 ALTER TABLE `configuracao` DISABLE KEYS */;  
90 -INSERT INTO `configuracao` VALUES (1,'SMTP_SERVER','10.209.253.28','',1),(2,'SMTP_PORT','25','teste3',1),(3,'MAIL_FROM','xxx@yyy.zzz','',1),(4,'EMAIL_RESPONSAVEL','sss@sssf.com',NULL,1),(9,'URL_AUTORIZAR','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/authorize',NULL,4),(10,'URL_TOKEN','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/token',NULL,4),(11,'URL_DADOS_USUARIO','https://testeservicos-ecidadao.estaleiro.serpro.gov.br/servicos-ecidadao/ecidadao/usuario/getUserInfo/',NULL,4),(12,'CLIENT_ID','516a9b57-d022-4843-a792-93b4dc95622b',NULL,4),(13,'SCOPE','openid',NULL,4),(14,'REDIRECT_URI','https://protocolo.planejamento.gov.br/login',NULL,4),(15,'CLIENT_SECRET','Ld65DuKIva0_EU0LO1VrVC6Be7b-_AsgvkueKpW4OJlhDdJQ4TJ9nKB173M5c5mmG03uhZvEbBKnDRmAe7gZkw',NULL,4),(16,'ESCOPO','dados_brasil_cidadao',NULL,4),(18,'URL_BRASIL_CIDADAO','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/login',NULL,4),(19,'URL_PRIMEIRO_ACESSO','https://testeportal-ecidadao.estaleiro.serpro.gov.br/servicos-cidadao/acesso/#/primeiro-acesso',NULL,4),(20,'STORAGE_PATH','E:/Ambiente/Desenvolvimento/estorage/temp','teste2',3),(21,'URL_ENDPOINT','https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php','teste4',2),(22,'ASSUNTO_CODIGO_ESTRUTURADO','520.1',NULL,2),(23,'PROCEDIMENTO_ESPECIFICADO','Especificacao do processo',NULL,2),(24,'PROCEDIMENTO_NIVEL_ACESSO','0',NULL,2),(25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO','100000346',NULL,2),(26,'DOCUMENTO_TIPO','R',NULL,2),(27,'DOCUMENTO_ID_SERIE','1',NULL,2),(28,'DOCUMENTO_NIVEL_ACESSO','0',NULL,2),(29,'SIGLA_SISTEMA','UNB',NULL,2),(30,'IDENTIFICACAO_SERVICO','testeunb',NULL,2),(31,'ID_UNIDADE','110001972',NULL,2),(32,'CAPTCHA_SITE_KEY','6LdBAVQUAAAAAET4Dun738dTVCWfhqVDuvnDoBAp',NULL,5),(33,'CAPTCHA_SECRET_KEY','6LdBAVQUAAAAAEa3owvd2PBSaOwU8OOPeFwTq13w',NULL,5);  
91 -/*!40000 ALTER TABLE `configuracao` ENABLE KEYS */;  
92 -UNLOCK TABLES;  
93 -  
94 ---  
95 --- Table structure for table `configuracao_email`  
96 ---  
97 -  
98 -DROP TABLE IF EXISTS `configuracao_email`;  
99 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
100 -/*!40101 SET character_set_client = utf8 */;  
101 -CREATE TABLE `configuracao_email` (  
102 - `codigo` int(11) NOT NULL,  
103 - `nome` varchar(45) DEFAULT NULL,  
104 - `valor` text,  
105 - PRIMARY KEY (`codigo`)  
106 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
107 -/*!40101 SET character_set_client = @saved_cs_client */;  
108 -  
109 ---  
110 --- Dumping data for table `configuracao_email`  
111 ---  
112 -  
113 -LOCK TABLES `configuracao_email` WRITE;  
114 -/*!40000 ALTER TABLE `configuracao_email` DISABLE KEYS */;  
115 -INSERT INTO `configuracao_email` VALUES (1,'EMAIL_CONTEUDO_CADASTRO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONFIRMACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>'),(2,'EMAIL_CONTEUDO_CONSOLIDACAO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONSILIACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>'),(3,'EMAIL_CONTEUDO_ERRO_SEI','<h1 style=\"font-size: 15px;\">Erro ao enviar o protocolo N&ordm;&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span>para o SEI</h1>\r\n<p>Detalhe do Erro:&nbsp;<span>{$METADADO_MSGERRO}</span>.</p>'),(4,'EMAIL_CONTEUDO_ESQUECI_SENHA','<p style=\"font-size: 15px;\">Recebemos uma solicita&ccedil;&atilde;o de recupera&ccedil;&atilde;o de senha, por isso estamos enviando uma nova para que voc&ecirc; possa continuar usando nosso sistema de protocolo.</p>\r\n<h1 style=\"font-size: 15px;\">Sua nova senha &eacute;:&nbsp;<span>{$METADADO_USUARIO_NOVASENHA}</span></h1>'),(5,'EMAIL_CONTEUDO_PROTOCOLO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">N&uacute;mero &Uacute;nico de Protocolo: Ser&aacute; enviado para o(s) e-mail(s) cadastrado(s) no prazo m&aacute;ximo de vinte e quatro horas, contadas do recebimento, salvo quando este ocorrer &agrave;s sextas-feiras, v&eacute;spera de feriados ou pontos facultativos ou haja restri&ccedil;&atilde;o t&eacute;cnica da unidade, devidamente fundamentada.</p>\r\n<p>Data:&nbsp;<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span></p>\r\n<p>Nome:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:&nbsp;<span>{$METADADO_PROTOCOLO_NUMEROANTERIOR}</span></p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>'),(6,'EMAIL_CONTEUDO_NEGADO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a)<span>{$METADADO_PROTOCOLO_USUARIONOME}</span>, <br /> Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. <br /> Seu protocolo n&atilde;o foi aceito pelo motivo abaixo especificado: <br /><span>{$METADADO_PROTOCOLO_OBSERVACAO}</span></p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>'),(7,'EMAIL_CONTEUDO_RECEBIMENTO_SEI','<h3>N&uacute;mero &Uacute;nico de Protocolo:<span>{$METADADO_PROTOCOLO_NUPE}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a) usu&aacute;rio (a), Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. Informamos que seu protocolo foi entregue ao setor respons&aacute;vel e que foi gerado o NUP:<span>{$METADADO_PROTOCOLO_NUPE}</span>. Quaisquer diverg&ecirc;ncias das informa&ccedil;&otilde;es prestadas ou problemas nos arquivos anexados ser&atilde;o comunicados ao (&agrave;) senhor (a) atrav&eacute;s dos e-mails informados em seu cadastro. Informa&ccedil;&otilde;es referentes &agrave; tramita&ccedil;&atilde;o de seu processo ser&atilde;o atualizadas at&eacute; 24 horas e estar&atilde;o acess&iacute;veis no s&iacute;tio do protocolo integrado do Governo Federal, dispon&iacute;vel em&nbsp;<span>{$METADADO_PROTOCOLO_LINKSEI}</span></p>\r\n<p>Data:<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span>}.</p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:</p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>'),(8,'EMAIL_CABECALHO','<h4 style=\"background-color: #fafafa; color: #626262; text-align: center;\"><span>{$METADADO_LOGO_EMAIL}</span></h4><h4 style=\"background-color: #fafafa; color: #626262; text-align: center;\">Minist&eacute;rio do Planejamento, Desenvolvimento e Gest&atilde;o&nbsp;<br />Protocolo Central&nbsp;<br />Esplanada dos Minist&eacute;rios Bloco K, T&eacute;rreo, sala T 28, CEP 70.040-906 &ndash; Bras&iacute;lia-DF&nbsp;<br />protocolo@planejamento.gov.br&nbsp;<br />(61) 2020-5195/5580&nbsp;</h4>'),(9,'EMAIL_RODAPE','<p>&nbsp;</p>\r <p>&ldquo;Por gentileza, responda nossa pesquisa de satisfa&ccedil;&atilde;o do Sistema de Protocolo Eletr&ocirc;nico. Sua contribui&ccedil;&atilde;o &eacute; de extrema valia.&nbsp;&nbsp;<a href=\"http://formsus.datasus.gov.br/site/formulario.php?id_aplicacao=36481\">Clique aqui</a>&rdquo;</p>\r <p>&nbsp;</p>\r <p style=\"text-align: justify; font-size: 10px;\">S&atilde;o de exclusiva responsabilidade do usu&aacute;rio: A conformidade entre os dados informados e os documentos; A conserva&ccedil;&atilde;o dos originais em papel de documentos digitalizados at&eacute; que decaia o direito de revis&atilde;o dos atos praticados no processo, para que, caso solicitado, sejam apresentados para qualquer tipo de confer&ecirc;ncia; A observa&ccedil;&atilde;o de que os atos processuais se consideram realizados no dia e hora do recebimento pelo SEI, considerando-se tempestivos os praticados at&eacute; 23h59min59s do &uacute;ltimo dia do prazo, considerando sempre o hor&aacute;rio oficial de Bras&iacute;lia, independente do fuso hor&aacute;rio em que se encontre. &nbsp;</p>'),(10,'EMAIL_CONTEUDO_DESBLOQUEIO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />Usuário bloqueado, favor acessar o LINK <span>{$METADADO_USUARIO_URLDESBLOQUEIO}</span></span></p>\r\n<p><span><br />para desbloqueiar o usuário.</span></p>');  
116 -/*!40000 ALTER TABLE `configuracao_email` ENABLE KEYS */;  
117 -UNLOCK TABLES;  
118 -  
119 ---  
120 --- Table structure for table `expedicao`  
121 ---  
122 -  
123 -DROP TABLE IF EXISTS `expedicao`;  
124 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
125 -/*!40101 SET character_set_client = utf8 */;  
126 -CREATE TABLE `expedicao` (  
127 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
128 - `numero_processo` varchar(100) NOT NULL,  
129 - `data_expedicao` datetime NOT NULL,  
130 - `usuario_codigo` bigint(20) NOT NULL,  
131 - `status_expedicao` varchar(45) DEFAULT NULL,  
132 - PRIMARY KEY (`codigo`),  
133 - KEY `fk_expedicao_usuario1_idx` (`usuario_codigo`),  
134 - CONSTRAINT `fk_expedicao_usuario1` FOREIGN KEY (`usuario_codigo`) REFERENCES `usuario` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION  
135 -) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;  
136 -/*!40101 SET character_set_client = @saved_cs_client */;  
137 -  
138 -  
139 ---  
140 --- Table structure for table `grupo`  
141 ---  
142 -  
143 -DROP TABLE IF EXISTS `grupo`;  
144 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
145 -/*!40101 SET character_set_client = utf8 */;  
146 -CREATE TABLE `grupo` (  
147 - `codigo` bigint(20) NOT NULL,  
148 - `nome` varchar(50) NOT NULL,  
149 - PRIMARY KEY (`codigo`)  
150 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
151 -/*!40101 SET character_set_client = @saved_cs_client */;  
152 -  
153 ---  
154 --- Dumping data for table `grupo`  
155 ---  
156 -  
157 -LOCK TABLES `grupo` WRITE;  
158 -/*!40000 ALTER TABLE `grupo` DISABLE KEYS */;  
159 -INSERT INTO `grupo` VALUES (1,'Administrador'),(2,'Protocolo'),(3,'Brasil Cidadao'),(4,'Usuario Expedidor');  
160 -/*!40000 ALTER TABLE `grupo` ENABLE KEYS */;  
161 -UNLOCK TABLES;  
162 -  
163 ---  
164 --- Table structure for table `grupo_permissao`  
165 ---  
166 -  
167 -DROP TABLE IF EXISTS `grupo_permissao`;  
168 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
169 -/*!40101 SET character_set_client = utf8 */;  
170 -CREATE TABLE `grupo_permissao` (  
171 - `codigo_grupo` bigint(20) NOT NULL,  
172 - `codigo_permissao` bigint(20) NOT NULL,  
173 - PRIMARY KEY (`codigo_grupo`,`codigo_permissao`),  
174 - KEY `codigo_permissao` (`codigo_permissao`),  
175 - CONSTRAINT `grupo_permissao_ibfk_1` FOREIGN KEY (`codigo_grupo`) REFERENCES `grupo` (`codigo`),  
176 - CONSTRAINT `grupo_permissao_ibfk_2` FOREIGN KEY (`codigo_permissao`) REFERENCES `permissao` (`codigo`)  
177 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
178 -/*!40101 SET character_set_client = @saved_cs_client */;  
179 -  
180 ---  
181 --- Dumping data for table `grupo_permissao`  
182 ---  
183 -  
184 -LOCK TABLES `grupo_permissao` WRITE;  
185 -/*!40000 ALTER TABLE `grupo_permissao` DISABLE KEYS */;  
186 -INSERT INTO `grupo_permissao` VALUES (1,1),(2,2),(3,3),(4,4);  
187 -/*!40000 ALTER TABLE `grupo_permissao` ENABLE KEYS */;  
188 -UNLOCK TABLES;  
189 -  
190 ---  
191 --- Table structure for table `link_expedicao_sei`  
192 ---  
193 -  
194 -DROP TABLE IF EXISTS `link_expedicao_sei`;  
195 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
196 -/*!40101 SET character_set_client = utf8 */;  
197 -CREATE TABLE `link_expedicao_sei` (  
198 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
199 - `link` varchar(255) NOT NULL,  
200 - `data` datetime NOT NULL,  
201 - `status` varchar(10) NOT NULL,  
202 - `usuario_codigo` bigint(20) NOT NULL,  
203 - `expedicao_codigo` bigint(20) NOT NULL,  
204 - PRIMARY KEY (`codigo`),  
205 - KEY `fk_link_expedicao_sei_usuario1_idx` (`usuario_codigo`),  
206 - KEY `fk_link_expedicao_sei_expedicao1_idx` (`expedicao_codigo`),  
207 - CONSTRAINT `fk_link_expedicao_sei_expedicao1` FOREIGN KEY (`expedicao_codigo`) REFERENCES `expedicao` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,  
208 - CONSTRAINT `fk_link_expedicao_sei_usuario1` FOREIGN KEY (`usuario_codigo`) REFERENCES `usuario` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION  
209 -) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8;  
210 -/*!40101 SET character_set_client = @saved_cs_client */;  
211 -  
212 -  
213 ---  
214 --- Table structure for table `log_sistema`  
215 ---  
216 -  
217 -DROP TABLE IF EXISTS `log_sistema`;  
218 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
219 -/*!40101 SET character_set_client = utf8 */;  
220 -CREATE TABLE `log_sistema` (  
221 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
222 - `codigo_entidade` bigint(20) NOT NULL,  
223 - `entidade` varchar(45) NOT NULL,  
224 - `acao` varchar(45) NOT NULL,  
225 - `antes` text,  
226 - `depois` text,  
227 - `data_hora` datetime NOT NULL,  
228 - `codigo_usuario` bigint(20) DEFAULT NULL,  
229 - PRIMARY KEY (`codigo`)  
230 -) ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=utf8;  
231 -/*!40101 SET character_set_client = @saved_cs_client */;  
232 -  
233 -  
234 ---  
235 --- Table structure for table `login_attempt`  
236 ---  
237 -  
238 -DROP TABLE IF EXISTS `login_attempt`;  
239 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
240 -/*!40101 SET character_set_client = utf8 */;  
241 -CREATE TABLE `login_attempt` (  
242 - `id` int(11) NOT NULL AUTO_INCREMENT,  
243 - `key` varchar(255) NOT NULL,  
244 - `amount` int(2) NOT NULL DEFAULT '1',  
245 - `reset_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
246 - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
247 - `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
248 - PRIMARY KEY (`id`),  
249 - KEY `amount` (`amount`),  
250 - KEY `reset_at` (`reset_at`),  
251 - KEY `key` (`key`) USING BTREE  
252 -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1;  
253 -/*!40101 SET character_set_client = @saved_cs_client */;  
254 -  
255 -  
256 ---  
257 --- Table structure for table `metadado`  
258 ---  
259 -  
260 -DROP TABLE IF EXISTS `metadado`;  
261 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
262 -/*!40101 SET character_set_client = utf8 */;  
263 -CREATE TABLE `metadado` (  
264 - `codigo` int(11) NOT NULL,  
265 - `nome` varchar(45) NOT NULL,  
266 - `valor` text,  
267 - `descricao` text,  
268 - PRIMARY KEY (`codigo`)  
269 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
270 -/*!40101 SET character_set_client = @saved_cs_client */;  
271 -  
272 ---  
273 --- Dumping data for table `metadado`  
274 ---  
275 -  
276 -LOCK TABLES `metadado` WRITE;  
277 -/*!40000 ALTER TABLE `metadado` DISABLE KEYS */;  
278 -INSERT INTO `metadado` VALUES (1,'METADADO_LOGO_EMAIL','<img src=\"../../static/images/brasao-brasil.png\" th:src=\"|cid:logo|\"/>','Imagem do logótipo do ministério.'),(2,'METADADO_MSGERRO','<span th:text=\"${msgErro}\">Erro no protocolo.</span>','Mensagem de erro ao enviar ao SEI.'),(3,'METADADO_PROTOCOLO_DATAHORAFORMADATA','<span th:text=\"${protocolo.dataHoraFormatada}\">','Data de criação do protocolo.'),(4,'METADADO_PROTOCOLO_EMAIL1','<span th:text=\"${protocolo.email1}\">E-mail: protocolo.email1</span>','E-mail 1 de interessado.'),(5,'METADADO_PROTOCOLO_EMAIL2','<span th:text=\"${protocolo.email2}\">E-mail: protocolo.emails</span>','E-mail 2 de interessado.'),(6,'METADADO_PROTOCOLO_LINKSEI','<a th:href=\"|https://protocolointegrado.gov.br/protocolo/documento/detalhes_documento.jsf?protocolo=${protocolo.nupe}|\">Link protocolo integrado.</a>','Link de acesso ao protocolo no SEI.'),(7,'METADADO_PROTOCOLO_NUMERO','<span th:text=\"${protocolo.numero}\">Nmero do Protocolo Provisrio: 123ads31232asfd</span>','Numero do protocolo.'),(8,'METADADO_PROTOCOLO_NUMEROANTERIOR','<span th:text=\"${protocolo.numeroProtocoloAnterior}\">Referncia ao protocolo anterior: 121345461</span>','Numero de protocolo anterior.'),(9,'METADADO_PROTOCOLO_NUPE','<span th:text=\"${protocolo.nupe}\">protocolo.nupe</span>','Numero único do protocolo no SEI.'),(10,'METADADO_PROTOCOLO_OBSERVACAO','<span th:text=\"${protocolo.observacao}\">observacao</span>','Obsersavação cadastrada no cancelamento do protocolo.'),(11,'METADADO_PROTOCOLO_TABELAARQUIVO','<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" style=\"width: 100%\">\n <thead>\n <tr>\n <td style=\"text-align: center\">\n Descrição do documento\n </td>\n <td style=\"text-align: center\">\n Arquivo\n </td>\n </tr>\n </thead>\n <tbody>\n <tr th:each=\"arquivo: ${protocolo.arquivosList}\">\n <td th:text=\"${arquivo.tipoDocumento.descricao}\">${arquivo.tipoDocumento.descricao}</td>\n <td th:text=\"${arquivo.nomeOriginal}\">${arquivo.nomeOriginal}</td>\n </tr>\n </tbody>\n</table>','Tabela com a lista de arquivos do protocolo.'),(12,'METADADO_PROTOCOLO_USUARIOEMAIL','<span th:text=\"${protocolo.usuario.email}\">E-mail: protocolo.email1</span>','E-mail do usuário que cadastrou o protocolo.'),(13,'METADADO_PROTOCOLO_USUARIONOME','<span th:text=\"${protocolo.usuario.nome}\">$ usuario nome</span>','Nome do usuário que cadastrou o protocolo.'),(14,'METADADO_USUARIO_NOVASENHA','<span th:text=\"${usuario.senha}\">Sua nova senha : 5as4f56as4f5as4</span>','Nova senha gerada para o usuário.'),(15,'METADADO_USUARIO_URLCONFIRMACAO','<a th:href=\"${usuario.urlConfirmacaoCadastro}\">CONFIRMAR MEU CADASTRO.</a>','Url para ativação do usuário.'),(16,'METADADO_USUARIO_URLCONSILIACAO','<a th:href=\"${usuario.urlConfirmacaoCadastro}\">CONFIRMAR MEU CADASTRO.</a>','Url para consiliação de usuário protocolo com usuário brasil cidadão.'),(17,'METADADO_USUARIO_URLDESBLOQUEIO','<a th:href=\"${usuario.urlDesbloqueio}\">Link de desbloqueio</a>',NULL);  
279 -/*!40000 ALTER TABLE `metadado` ENABLE KEYS */;  
280 -UNLOCK TABLES;  
281 -  
282 ---  
283 --- Table structure for table `metadado_email`  
284 ---  
285 -  
286 -DROP TABLE IF EXISTS `metadado_email`;  
287 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
288 -/*!40101 SET character_set_client = utf8 */;  
289 -CREATE TABLE `metadado_email` (  
290 - `codigo_email` int(11) NOT NULL,  
291 - `codigo_metadado` int(11) NOT NULL,  
292 - PRIMARY KEY (`codigo_metadado`,`codigo_email`),  
293 - KEY `fk_metadado_email_configuracao_email1_idx` (`codigo_email`),  
294 - CONSTRAINT `metadado_email_fk1` FOREIGN KEY (`codigo_email`) REFERENCES `configuracao_email` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,  
295 - CONSTRAINT `metadado_email_fk2` FOREIGN KEY (`codigo_metadado`) REFERENCES `metadado` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION  
296 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
297 -/*!40101 SET character_set_client = @saved_cs_client */;  
298 -  
299 ---  
300 --- Dumping data for table `metadado_email`  
301 ---  
302 -  
303 -LOCK TABLES `metadado_email` WRITE;  
304 -/*!40000 ALTER TABLE `metadado_email` DISABLE KEYS */;  
305 -INSERT INTO `metadado_email` VALUES (1,15),(2,16),(3,2),(3,7),(4,14),(5,3),(5,4),(5,5),(5,7),(5,8),(5,10),(5,11),(5,12),(5,13),(6,3),(6,4),(6,5),(6,7),(6,10),(6,12),(6,13),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(7,10),(7,11),(7,12),(7,13),(8,1),(9,1),(10,17);  
306 -/*!40000 ALTER TABLE `metadado_email` ENABLE KEYS */;  
307 -UNLOCK TABLES;  
308 -  
309 ---  
310 --- Table structure for table `permissao`  
311 ---  
312 -  
313 -DROP TABLE IF EXISTS `permissao`;  
314 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
315 -/*!40101 SET character_set_client = utf8 */;  
316 -CREATE TABLE `permissao` (  
317 - `codigo` bigint(20) NOT NULL,  
318 - `nome` varchar(50) NOT NULL,  
319 - PRIMARY KEY (`codigo`)  
320 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
321 -/*!40101 SET character_set_client = @saved_cs_client */;  
322 -  
323 ---  
324 --- Dumping data for table `permissao`  
325 ---  
326 -  
327 -LOCK TABLES `permissao` WRITE;  
328 -/*!40000 ALTER TABLE `permissao` DISABLE KEYS */;  
329 -INSERT INTO `permissao` VALUES (1,'ROLE_CADASTRO'),(2,'ROLE_PROTOCOLO'),(3,'ROLE_BRASILCIDADAO'),(4,'ROLE_EXPEDIDOR');  
330 -/*!40000 ALTER TABLE `permissao` ENABLE KEYS */;  
331 -UNLOCK TABLES;  
332 -  
333 ---  
334 --- Table structure for table `protocolo`  
335 ---  
336 -  
337 -DROP TABLE IF EXISTS `protocolo`;  
338 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
339 -/*!40101 SET character_set_client = utf8 */;  
340 -CREATE TABLE `protocolo` (  
341 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
342 - `numero` varchar(50) NOT NULL,  
343 - `data_hora` datetime DEFAULT NULL,  
344 - `codigo_usuario` bigint(20) NOT NULL,  
345 - `status` varchar(20) NOT NULL DEFAULT 'PENDENTE',  
346 - `email1` varchar(50) DEFAULT NULL,  
347 - `email2` varchar(50) DEFAULT NULL,  
348 - `observacao` text,  
349 - `nupe` varchar(20) DEFAULT NULL,  
350 - `data_envio` datetime DEFAULT NULL,  
351 - `erro_ws` text,  
352 - `nr_protocolo_anterior` varchar(50) DEFAULT NULL,  
353 - `id_unidade` bigint(20) DEFAULT NULL,  
354 - `linksei` varchar(255) DEFAULT NULL,  
355 - PRIMARY KEY (`codigo`),  
356 - KEY `codigo_usuario` (`codigo_usuario`),  
357 - CONSTRAINT `protocolo_ibfk_1` FOREIGN KEY (`codigo_usuario`) REFERENCES `usuario` (`codigo`)  
358 -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;  
359 -/*!40101 SET character_set_client = @saved_cs_client */;  
360 -  
361 -  
362 ---  
363 --- Table structure for table `schema_version`  
364 ---  
365 -  
366 -DROP TABLE IF EXISTS `schema_version`;  
367 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
368 -/*!40101 SET character_set_client = utf8 */;  
369 -CREATE TABLE `schema_version` (  
370 - `installed_rank` int(11) NOT NULL,  
371 - `version` varchar(50) DEFAULT NULL,  
372 - `description` varchar(200) NOT NULL,  
373 - `type` varchar(20) NOT NULL,  
374 - `script` varchar(1000) NOT NULL,  
375 - `checksum` int(11) DEFAULT NULL,  
376 - `installed_by` varchar(100) NOT NULL,  
377 - `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
378 - `execution_time` int(11) NOT NULL,  
379 - `success` tinyint(1) NOT NULL,  
380 - PRIMARY KEY (`installed_rank`),  
381 - KEY `schema_version_s_idx` (`success`)  
382 -) ENGINE=InnoDB DEFAULT CHARSET=latin1;  
383 -/*!40101 SET character_set_client = @saved_cs_client */;  
384 -  
385 ---  
386 --- Dumping data for table `schema_version`  
387 ---  
388 -  
389 -LOCK TABLES `schema_version` WRITE;  
390 -/*!40000 ALTER TABLE `schema_version` DISABLE KEYS */;  
391 -INSERT INTO `schema_version` VALUES (1,'01','Script inicial','SQL','V01__Start.sql',107793004,'root','2018-10-26 14:48:18',1610,1);  
392 -/*!40000 ALTER TABLE `schema_version` ENABLE KEYS */;  
393 -UNLOCK TABLES;  
394 -  
395 ---  
396 --- Table structure for table `temp_arquivo`  
397 ---  
398 -  
399 -DROP TABLE IF EXISTS `temp_arquivo`;  
400 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
401 -/*!40101 SET character_set_client = utf8 */;  
402 -CREATE TABLE `temp_arquivo` (  
403 - `id` int(11) NOT NULL AUTO_INCREMENT,  
404 - `nome` varchar(255) CHARACTER SET latin1 NOT NULL,  
405 - `pagina` varchar(10) CHARACTER SET latin1 NOT NULL,  
406 - `temp_desc_arquivo_idarquivo` varchar(2) CHARACTER SET latin1 NOT NULL,  
407 - `temp_desc_arquivo_token` varchar(6) CHARACTER SET latin1 NOT NULL,  
408 - PRIMARY KEY (`id`),  
409 - KEY `fk_temp_arquivo_temp_desc_arquivo1_idx` (`temp_desc_arquivo_idarquivo`,`temp_desc_arquivo_token`),  
410 - CONSTRAINT `fk_temp_arquivo_temp_desc_arquivo1` FOREIGN KEY (`temp_desc_arquivo_idarquivo`, `temp_desc_arquivo_token`) REFERENCES `temp_desc_arquivo` (`idarquivo`, `token`) ON DELETE NO ACTION ON UPDATE NO ACTION  
411 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
412 -/*!40101 SET character_set_client = @saved_cs_client */;  
413 -  
414 -  
415 ---  
416 --- Table structure for table `temp_desc_arquivo`  
417 ---  
418 -  
419 -DROP TABLE IF EXISTS `temp_desc_arquivo`;  
420 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
421 -/*!40101 SET character_set_client = utf8 */;  
422 -CREATE TABLE `temp_desc_arquivo` (  
423 - `tipo` varchar(45) CHARACTER SET latin1 NOT NULL,  
424 - `qtd_paginas` varchar(10) CHARACTER SET latin1 NOT NULL,  
425 - `temp_protocolo_token` varchar(6) CHARACTER SET latin1 NOT NULL,  
426 - `idarquivo` varchar(2) CHARACTER SET latin1 NOT NULL,  
427 - `token` varchar(6) CHARACTER SET latin1 NOT NULL,  
428 - `descricao` varchar(45) CHARACTER SET latin1 NOT NULL,  
429 - PRIMARY KEY (`idarquivo`,`token`),  
430 - KEY `fk_temp_desc_arquivo_temp_protocolo1_idx` (`temp_protocolo_token`),  
431 - CONSTRAINT `fk_temp_desc_arquivo_temp_protocolo1` FOREIGN KEY (`temp_protocolo_token`) REFERENCES `temp_protocolo` (`token`) ON DELETE NO ACTION ON UPDATE NO ACTION  
432 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
433 -/*!40101 SET character_set_client = @saved_cs_client */;  
434 -  
435 -  
436 ---  
437 --- Table structure for table `temp_protocolo`  
438 ---  
439 -  
440 -DROP TABLE IF EXISTS `temp_protocolo`;  
441 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
442 -/*!40101 SET character_set_client = utf8 */;  
443 -CREATE TABLE `temp_protocolo` (  
444 - `token` varchar(6) CHARACTER SET latin1 NOT NULL,  
445 - `email1` varchar(100) CHARACTER SET latin1 DEFAULT NULL,  
446 - `email2` varchar(100) CHARACTER SET big5 DEFAULT NULL,  
447 - `nr_protocolo_anterior` varchar(100) CHARACTER SET latin1 DEFAULT NULL,  
448 - `usuario_codigo` bigint(20) NOT NULL,  
449 - PRIMARY KEY (`token`),  
450 - KEY `fk_temp_protocolo_usuario1_idx` (`usuario_codigo`),  
451 - CONSTRAINT `fk_temp_protocolo_usuario1` FOREIGN KEY (`usuario_codigo`) REFERENCES `usuario` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION  
452 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
453 -/*!40101 SET character_set_client = @saved_cs_client */;  
454 -  
455 -  
456 ---  
457 --- Table structure for table `tipo_documento`  
458 ---  
459 -  
460 -DROP TABLE IF EXISTS `tipo_documento`;  
461 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
462 -/*!40101 SET character_set_client = utf8 */;  
463 -CREATE TABLE `tipo_documento` (  
464 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
465 - `descricao` varchar(50) NOT NULL,  
466 - `codigo_sei` varchar(45) NOT NULL,  
467 - `ativo` tinyint(4) NOT NULL,  
468 - PRIMARY KEY (`codigo`)  
469 -) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;  
470 -/*!40101 SET character_set_client = @saved_cs_client */;  
471 -  
472 ---  
473 --- Dumping data for table `tipo_documento`  
474 ---  
475 -  
476 -LOCK TABLES `tipo_documento` WRITE;  
477 -/*!40000 ALTER TABLE `tipo_documento` DISABLE KEYS */;  
478 -INSERT INTO `tipo_documento` VALUES (14,'Requerimento','238',1),(15,'Complemento','651',1);  
479 -/*!40000 ALTER TABLE `tipo_documento` ENABLE KEYS */;  
480 -UNLOCK TABLES;  
481 -  
482 ---  
483 --- Table structure for table `usuario`  
484 ---  
485 -  
486 -DROP TABLE IF EXISTS `usuario`;  
487 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
488 -/*!40101 SET character_set_client = utf8 */;  
489 -CREATE TABLE `usuario` (  
490 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
491 - `nome` varchar(50) NOT NULL,  
492 - `email` varchar(50) NOT NULL,  
493 - `senha` varchar(120) NOT NULL,  
494 - `telefone` varchar(15) DEFAULT NULL,  
495 - `ativo` tinyint(1) DEFAULT '1',  
496 - `token` varchar(255) NOT NULL DEFAULT '0',  
497 - `nome_social` varchar(50) DEFAULT NULL,  
498 - `status_expedicao` tinyint(1) DEFAULT '0',  
499 - `listexpedidor` varchar(30) DEFAULT NULL,  
500 - `unidade` varchar(12) DEFAULT NULL,  
501 - PRIMARY KEY (`codigo`),  
502 - UNIQUE KEY `email` (`email`)  
503 -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;  
504 -/*!40101 SET character_set_client = @saved_cs_client */;  
505 -  
506 ---  
507 --- Dumping data for table `usuario`  
508 ---  
509 -  
510 -LOCK TABLES `usuario` WRITE;  
511 -/*!40000 ALTER TABLE `usuario` DISABLE KEYS */;  
512 -INSERT INTO `usuario` VALUES (1,'Admin','admin@admin.com','$2a$10$g.wT4R0Wnfel1jc/k84OXuwZE02BlACSLfWy6TycGPvvEKvIm86SG',NULL,1,'0',NULL,0,'LISTA1',NULL),(2,'Dário','dario.santos.bsb@gmail.com','$2a$10$kGXHZvmTfzS3.uAn7L5q1e6LXrQAhA29qFG0/d4jIUA684i8EJtNC','(99) 99999-9999',0,'0','',0,'selecionadosUsuarioExpedicao',NULL),(6,'FABIO HENRIQUE MAXIMIANO','dario.santos@redes.unb.br','$2a$10$Wv4zAd2QnmS.sFtvQf2xFuJZBCqkfyKeqI8lw3yEht/E6IUN9WgBm','(00)00000-0000',1,'0',NULL,1,'selecionadosUsuarioExpedicao',NULL),(7,'EXPEDIDOR','dariobsb@hotmail.com','$2a$10$K27B2DRGIjZAZxNXWzhkc./JFAQM98LJtzZbbGLm5Y6H0eSCDZTLO','(61) 99999-9999',1,'0','EXPED',0,'0',NULL),(8,'EXP@EXP.COM','exp@exp.com','$2a$10$sXtxt6ZrHbh8048pAppe8ubWUMJosr7wBVYsnMaIcpPAXM6SMT/1W','(11) 11111-1111',1,'0','EXP@EXP.COM',NULL,NULL,'110001972'),(9,'JOSE','jose@jose.com','$2a$10$BqBmIANciq4iZrPzJSXq8uTk5i/jZ8V0eFLetVUZohrLXEaRrznYi','(11) 2255-3366',1,'0','',NULL,NULL,'110001896');  
513 -/*!40000 ALTER TABLE `usuario` ENABLE KEYS */;  
514 -UNLOCK TABLES;  
515 -  
516 ---  
517 --- Table structure for table `usuario_brasil_cidadao`  
518 ---  
519 -  
520 -DROP TABLE IF EXISTS `usuario_brasil_cidadao`;  
521 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
522 -/*!40101 SET character_set_client = utf8 */;  
523 -CREATE TABLE `usuario_brasil_cidadao` (  
524 - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,  
525 - `cpf` varchar(15) NOT NULL,  
526 - `codigo_usuario` bigint(20) NOT NULL,  
527 - `token` text,  
528 - `ativo` tinyint(4) NOT NULL,  
529 - `email` varchar(50) DEFAULT NULL,  
530 - PRIMARY KEY (`codigo`),  
531 - KEY `usuario_brasil_cidadao_fki_1` (`codigo_usuario`),  
532 - CONSTRAINT `usuario_brasil_cidadao_ibfk_1` FOREIGN KEY (`codigo_usuario`) REFERENCES `usuario` (`codigo`) ON UPDATE CASCADE  
533 -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;  
534 -/*!40101 SET character_set_client = @saved_cs_client */;  
535 -  
536 ---  
537 --- Dumping data for table `usuario_brasil_cidadao`  
538 ---  
539 -  
540 -LOCK TABLES `usuario_brasil_cidadao` WRITE;  
541 -/*!40000 ALTER TABLE `usuario_brasil_cidadao` DISABLE KEYS */;  
542 -INSERT INTO `usuario_brasil_cidadao` VALUES (1,'29752304869',6,'eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIyOTc1MjMwNDg2OSIsImF6cCI6IjUxNmE5YjU3LWQwMjItNDg0My1hNzkyLTkzYjRkYzk1NjIyYiIsInNjb3BlIjpbImRhZG9zX2JyYXNpbF9jaWRhZGFvIiwib3BlbmlkIl0sIm5hbWUiOiJGQUJJTyBIRU5SSVFVRSBNQVhJTUlBTk8iLCJpc3MiOiJodHRwczpcL1wvdGVzdGVzY3AtZWNpZGFkYW8uZXN0YWxlaXJvLnNlcnByby5nb3YuYnJcL3NjcFwvIiwiZXhwIjoxNTQwNTg0NDY1LCJpYXQiOjE1NDA1ODA4NjYsImF1dGhfZmFjdG9yIjoiQ1BGX1NFTkhBIiwianRpIjoiZjM2MjQ0N2YtMjQxYi00MGJkLWFiNjEtMTQ5ODc3NjJjYWZmIn0.Ra8uMYFaxwXKhy3YG2Lu6HEC61hNVRW5bH2adk3oP3VgyC2wySvviXqz_Jd805Thl86SCVtWhr2csXWllBn0_gELW6BVAawePP7izaUef1Oohby9e7yluugMglvfqxQ8cRX0CZnprEflrS_SuWkvbW_ULxQ7clfSdJVkK0nkho9xgoQT133F-sCjjfPvg44jLqeNjbnVkRTtZwWBK14_pkDq90QLmZKryFwIstHuiVb-vTMdSMIbo4w3ppoT8UZaD8EXVoi_pAN8pXc8RLLi3gvGqxBvw71Zm18uJhf_bVkvlhClfwO-qK6oCxRTHMkBiFfUjpcLLuNS-GuSHS3AwQ',1,NULL);  
543 -/*!40000 ALTER TABLE `usuario_brasil_cidadao` ENABLE KEYS */;  
544 -UNLOCK TABLES;  
545 -  
546 ---  
547 --- Table structure for table `usuario_grupo`  
548 ---  
549 -  
550 -DROP TABLE IF EXISTS `usuario_grupo`;  
551 -/*!40101 SET @saved_cs_client = @@character_set_client */;  
552 -/*!40101 SET character_set_client = utf8 */;  
553 -CREATE TABLE `usuario_grupo` (  
554 - `codigo_usuario` bigint(20) NOT NULL,  
555 - `codigo_grupo` bigint(20) NOT NULL,  
556 - PRIMARY KEY (`codigo_usuario`,`codigo_grupo`),  
557 - KEY `codigo_grupo` (`codigo_grupo`),  
558 - CONSTRAINT `usuario_grupo_ibfk_1` FOREIGN KEY (`codigo_usuario`) REFERENCES `usuario` (`codigo`)  
559 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
560 -/*!40101 SET character_set_client = @saved_cs_client */;  
561 -  
562 ---  
563 --- Dumping data for table `usuario_grupo`  
564 ---  
565 -  
566 -LOCK TABLES `usuario_grupo` WRITE;  
567 -/*!40000 ALTER TABLE `usuario_grupo` DISABLE KEYS */;  
568 -INSERT INTO `usuario_grupo` VALUES (1,1),(2,2),(6,3),(7,4),(8,4),(9,4);  
569 -/*!40000 ALTER TABLE `usuario_grupo` ENABLE KEYS */;  
570 -UNLOCK TABLES;  
571 -  
572 -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;  
573 -  
574 -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;  
575 -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;  
576 -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;  
577 -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;  
578 -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;  
579 -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;  
580 -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;  
581 -  
582 --- Dump completed on 2018-11-19 13:32:46  
src/main/resources/db/migration/V01__criar_tabela_usuario_grupo_permissao.sql 0 → 100644
@@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
  1 +CREATE TABLE usuario (
  2 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3 + nome VARCHAR(50) NOT NULL,
  4 + email VARCHAR(50) NOT NULL,
  5 + senha VARCHAR(120) NOT NULL,
  6 + ativo BOOLEAN DEFAULT true,
  7 + data_nascimento DATE
  8 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  9 +
  10 +CREATE TABLE grupo (
  11 + codigo BIGINT(20) PRIMARY KEY,
  12 + nome VARCHAR(50) NOT NULL
  13 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  14 +
  15 +CREATE TABLE permissao (
  16 + codigo BIGINT(20) PRIMARY KEY,
  17 + nome VARCHAR(50) NOT NULL
  18 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  19 +
  20 +CREATE TABLE usuario_grupo (
  21 + codigo_usuario BIGINT(20) NOT NULL,
  22 + codigo_grupo BIGINT(20) NOT NULL,
  23 + PRIMARY KEY (codigo_usuario, codigo_grupo),
  24 + FOREIGN KEY (codigo_usuario) REFERENCES usuario(codigo),
  25 + FOREIGN KEY (codigo_grupo) REFERENCES grupo(codigo)
  26 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  27 +
  28 +CREATE TABLE grupo_permissao (
  29 + codigo_grupo BIGINT(20) NOT NULL,
  30 + codigo_permissao BIGINT(20) NOT NULL,
  31 + PRIMARY KEY (codigo_grupo, codigo_permissao),
  32 + FOREIGN KEY (codigo_grupo) REFERENCES grupo(codigo),
  33 + FOREIGN KEY (codigo_permissao) REFERENCES permissao(codigo)
  34 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  35 +
  36 +ALTER TABLE usuario
  37 + MODIFY ativo BOOLEAN DEFAULT true NOT NULL;
  38 +
  39 +INSERT INTO grupo (codigo, nome) VALUES (1, 'Administrador');
  40 +INSERT INTO grupo (codigo, nome) VALUES (2, 'Consulta');
  41 +
  42 +INSERT INTO usuario (nome, email, senha, ativo) VALUES ('Admin', 'admin@admin.com', '$2a$10$g.wT4R0Wnfel1jc/k84OXuwZE02BlACSLfWy6TycGPvvEKvIm86SG', 1)
0 \ No newline at end of file 43 \ No newline at end of file
src/main/resources/db/migration/V02__inserir_permissoes_e_relacionar_usuario_admin.sql 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +INSERT INTO permissao VALUES (1, 'ROLE_CADASTRO');
  2 +
  3 +INSERT INTO grupo_permissao (codigo_grupo, codigo_permissao) VALUES (1, 1);
  4 +
  5 +INSERT INTO usuario_grupo (codigo_usuario, codigo_grupo) VALUES (
  6 + (SELECT codigo FROM usuario WHERE email = 'admin@admin.com'), 1);
0 \ No newline at end of file 7 \ No newline at end of file
src/main/resources/db/migration/V03__criar_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +CREATE TABLE protocolo (
  2 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3 + nome VARCHAR(80) NOT NULL,
  4 + rg VARCHAR(20) NOT NULL,
  5 + cpf VARCHAR(11) NOT NULL,
  6 + telefone VARCHAR(20) NOT NULL,
  7 + email VARCHAR(50) NOT NULL,
  8 + descricao VARCHAR(120) NOT NULL,
  9 + numero VARCHAR(50) NOT NULL,
  10 + arquivo VARCHAR(100) NOT NULL,
  11 + content_type VARCHAR(100) NOT NULL,
  12 + data_hora DATETIME
  13 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0 \ No newline at end of file 14 \ No newline at end of file
src/main/resources/db/migration/V04__criar_tabela_arquivos.sql 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +ALTER TABLE protocolo DROP COLUMN arquivo;
  2 +ALTER TABLE protocolo DROP COLUMN content_type;
  3 +
  4 +CREATE TABLE arquivos (
  5 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  6 + codigo_protocolo BIGINT(20),
  7 + nome VARCHAR(100) NOT NULL,
  8 + nome_original VARCHAR(100) NOT NULL,
  9 + content_type VARCHAR(100) NOT NULL,
  10 + tamanho VARCHAR(10) NOT NULL,
  11 + FOREIGN KEY (codigo_protocolo) REFERENCES protocolo(codigo)
  12 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0 \ No newline at end of file 13 \ No newline at end of file
src/main/resources/db/migration/V05__inserir_role_protocolo.sql 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +INSERT INTO permissao VALUES (2, 'ROLE_PROTOCOLO');
  2 +
  3 +INSERT INTO grupo_permissao (codigo_grupo, codigo_permissao) VALUES (2, 2);
src/main/resources/db/migration/V06__remover_coluna_dt_nascimento_e_ativo_tabela_usuario.sql 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +ALTER TABLE usuario DROP COLUMN data_nascimento;
  2 +ALTER TABLE usuario DROP COLUMN ativo;
src/main/resources/db/migration/V07__adicao_colula_telefone_tabela_usuario.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE usuario ADD COLUMN telefone VARCHAR(15);
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V08__remover_colunas_nome_rg_cpf_telefone_email_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +ALTER TABLE protocolo DROP COLUMN nome;
  2 +ALTER TABLE protocolo DROP COLUMN rg;
  3 +ALTER TABLE protocolo DROP COLUMN cpf;
  4 +ALTER TABLE protocolo DROP COLUMN telefone;
  5 +ALTER TABLE protocolo DROP COLUMN email;
src/main/resources/db/migration/V09__adicionar_coluna_codigo_usuario_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +ALTER TABLE protocolo ADD COLUMN codigo_usuario BIGINT(20);
  2 +
  3 +ALTER TABLE protocolo ADD FOREIGN KEY(codigo_usuario) REFERENCES usuario(codigo);
src/main/resources/db/migration/V10__criar_tabela_tipo_documento.sql 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +CREATE TABLE tipo_documento (
  2 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3 + descricao VARCHAR(50) NOT NULL
  4 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
src/main/resources/db/migration/V11__adicionar_coluna_tipo_doc_e_desc_doc_tabela_arquivos.sql 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +ALTER TABLE arquivos ADD COLUMN codigo_tipo_documento BIGINT(20);
  2 +
  3 +ALTER TABLE arquivos ADD FOREIGN KEY(codigo_tipo_documento) REFERENCES tipo_documento(codigo);
  4 +
  5 +ALTER TABLE arquivos ADD COLUMN descricao_documento VARCHAR(200);
src/main/resources/db/migration/V12__retornando_coluna_ativo_tabela_usuario.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE usuario ADD COLUMN ativo BOOLEAN DEFAULT true;
src/main/resources/db/migration/V13__remover_coluna_descricao_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo DROP COLUMN descricao;
src/main/resources/db/migration/V14__adicionar_not_null_coluna_codigo_usuario_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo MODIFY codigo_usuario BIGINT(20) NOT NULL;
src/main/resources/db/migration/V15__adicionar_coluna_status_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN status VARCHAR(10) NOT NULL DEFAULT 'PENDENTE';
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V16__adicionar_coluna_emails_secundarios_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +ALTER TABLE protocolo ADD COLUMN email1 VARCHAR(50);
  2 +ALTER TABLE protocolo ADD COLUMN email2 VARCHAR(50);
src/main/resources/db/migration/V17__alterar_conteudo_grupo_de_consulta_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +update grupo set nome = 'Protocolo' where codigo = 2;
src/main/resources/db/migration/V18__adicionar_coluna_observacao_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN observacao VARCHAR(50);
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V19__adicionar_coluna_nupe_e_data_envio_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +ALTER TABLE protocolo ADD COLUMN nupe VARCHAR(20);
  2 +ALTER TABLE protocolo ADD COLUMN data_envio DATETIME;
0 \ No newline at end of file 3 \ No newline at end of file
src/main/resources/db/migration/V20__tipo_documento_insert.sql 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +INSERT INTO tipo_documento (descricao) VALUES ('APOLICE (RECEBIMENTO)');
  2 +INSERT INTO tipo_documento (descricao) VALUES ('ATA (RECEBIMENTO)');
  3 +INSERT INTO tipo_documento (descricao) VALUES ('BOLETIM');
  4 +INSERT INTO tipo_documento (descricao) VALUES ('BOLETO (RECEBIMENTO)');
  5 +INSERT INTO tipo_documento (descricao) VALUES ('CARTA (RECEBIMENTO)');
  6 +INSERT INTO tipo_documento (descricao) VALUES ('CARTA CIRCULAR (RECEBIMENTO)');
  7 +INSERT INTO tipo_documento (descricao) VALUES ('CARTA CIRCULAR CONJUNTA (RECEBIMENTO)');
  8 +INSERT INTO tipo_documento (descricao) VALUES ('COMUNICAÇÃO EXTERNA');
  9 +INSERT INTO tipo_documento (descricao) VALUES ('CONVITE');
  10 +INSERT INTO tipo_documento (descricao) VALUES ('CURRICULUM VITAE');
  11 +INSERT INTO tipo_documento (descricao) VALUES ('DECLARAÇÃO (RECEBIMENTO)');
  12 +INSERT INTO tipo_documento (descricao) VALUES ('OFÍCIO (RECEBIMENTO)');
  13 +INSERT INTO tipo_documento (descricao) VALUES ('Meu tipo');
0 \ No newline at end of file 14 \ No newline at end of file
src/main/resources/db/migration/V21__remover_meu_tipo_documento.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +DELETE FROM tipo_documento WHERE descricao = 'Meu tipo';
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V22__alterar_tamanho_campo_nome_tabela_arquivo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE arquivos MODIFY nome VARCHAR(250) NOT NULL;
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V23__alterar_tamanho_campo_nome_original_tabela_arquivo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE arquivos MODIFY nome VARCHAR(200) NOT NULL;
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V24__adicionar_coluna_nr_protocolo_anterior_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN nr_protocolo_anterior VARCHAR(50);
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V25__adicionar_coluna_id_unidade_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN id_unidade BIGINT(20);
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V26__alterar_tamanho_campo_status_tabela_protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo MODIFY status VARCHAR(20) NOT NULL DEFAULT 'PENDENTE';
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V27__alterar_tamanho_campo_ observacao _protocolo.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 + ALTER TABLE `protocolo` CHANGE `observacao` `observacao` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V28__alterar_tabela_tipodocumento_com_campo_codigo_sei_e _campo_ativo.sql 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +ALTER TABLE `tipo_documento`
  2 + ADD `codigo_sei` VARCHAR(45) NOT NULL AFTER `descricao`,
  3 + ADD `ativo` TINYINT NOT NULL AFTER `codigo_sei`;
0 \ No newline at end of file 4 \ No newline at end of file
src/main/resources/db/migration/V29__limpa_as_tabelas_arquivos_protocolo_e_tipodocumento.sql 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +SET sql_safe_updates=0;
  2 +
  3 +DELETE FROM arquivos;
  4 +
  5 +DELETE FROM protocolo;
  6 +
  7 +DELETE FROM tipo_documento;
  8 +
  9 +INSERT INTO tipo_documento (descricao, codigo_sei, ativo) values ('Requerimento', '238', 1);
  10 +
  11 +INSERT INTO tipo_documento (descricao, codigo_sei, ativo) values ('Complemento', '651', 1);
0 \ No newline at end of file 12 \ No newline at end of file
src/main/resources/db/migration/V30__tabela_usuario_estrutura_campo_email_para_unico.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE usuario ADD UNIQUE(`email`);
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V31__tabela_usuario_estrutura_campo_token_mobile.sql 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +ALTER TABLE `usuario`
  2 + ADD COLUMN `token` VARCHAR(255) NOT NULL DEFAULT '0' AFTER `ativo`;
src/main/resources/db/migration/V32__inserir_role_brasilcidadao.sql 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 +INSERT INTO permissao VALUES (3, 'ROLE_BRASILCIDADAO');
  2 +
  3 +INSERT INTO grupo VALUES (3, 'Brasil Cidadao');
  4 +
  5 +INSERT INTO grupo_permissao (codigo_grupo, codigo_permissao) VALUES (3, 3);
  6 +
  7 +CREATE TABLE usuario_brasil_cidadao (
  8 + codigo BIGINT NOT NULL AUTO_INCREMENT,
  9 + cpf VARCHAR(15) NOT NULL,
  10 + codigo_usuario BIGINT NOT NULL,
  11 + FOREIGN KEY (codigo_usuario)
  12 + REFERENCES usuario(codigo)
  13 + ON UPDATE CASCADE ON DELETE RESTRICT,
  14 + PRIMARY KEY(codigo)
  15 +
  16 + );
0 \ No newline at end of file 17 \ No newline at end of file
src/main/resources/db/migration/V33__criacao_de_tabela_de_log_protocolo_correcao_unique_cpf.sql 0 → 100644
@@ -0,0 +1,102 @@ @@ -0,0 +1,102 @@
  1 +-- MySQL Workbench Synchronization
  2 +-- Generated: 2018-02-26 14:06
  3 +-- Model: New Model
  4 +-- Version: 1.0
  5 +-- Project: Name of the project
  6 +-- Author: 01572931140
  7 +
  8 +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  9 +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  10 +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
  11 +
  12 +CREATE TABLE IF NOT EXISTS `configuracao` (
  13 + `codigo` BIGINT(20) NOT NULL AUTO_INCREMENT,
  14 + `nome` VARCHAR(45) NOT NULL,
  15 + `valor` TEXT NULL DEFAULT NULL,
  16 + `descricao` TEXT NULL DEFAULT NULL,
  17 + `id_enum` INT(11) NULL DEFAULT NULL,
  18 + `id_classificacao` INT(11) NULL DEFAULT NULL,
  19 + `classificacao` VARCHAR(45) NULL DEFAULT NULL,
  20 + PRIMARY KEY (`codigo`))
  21 +ENGINE = InnoDB
  22 +AUTO_INCREMENT = 53
  23 +DEFAULT CHARACTER SET = utf8;
  24 +
  25 +CREATE TABLE IF NOT EXISTS `log_sistema` (
  26 + `codigo` BIGINT(20) NOT NULL AUTO_INCREMENT,
  27 + `codigo_entidade` BIGINT(20) NOT NULL,
  28 + `entidade` VARCHAR(45) NOT NULL,
  29 + `acao` VARCHAR(45) NOT NULL,
  30 + `antes` TEXT NULL DEFAULT NULL,
  31 + `depois` TEXT NULL DEFAULT NULL,
  32 + `data_hora` DATETIME NOT NULL,
  33 + `codigo_usuario` BIGINT(20) NULL DEFAULT NULL,
  34 + PRIMARY KEY (`codigo`))
  35 +ENGINE = InnoDB
  36 +AUTO_INCREMENT = 33
  37 +DEFAULT CHARACTER SET = utf8;
  38 +
  39 +CREATE TABLE IF NOT EXISTS `temp_arquivo` (
  40 + `id` INT(11) NOT NULL AUTO_INCREMENT,
  41 + `nome` VARCHAR(255) NOT NULL,
  42 + `pagina` VARCHAR(10) NOT NULL,
  43 + `temp_desc_arquivo_idarquivo` VARCHAR(2) NOT NULL,
  44 + `temp_desc_arquivo_token` VARCHAR(6) NOT NULL,
  45 + PRIMARY KEY (`id`),
  46 + INDEX `fk_temp_arquivo_temp_desc_arquivo1_idx` (`temp_desc_arquivo_idarquivo` ASC, `temp_desc_arquivo_token` ASC),
  47 + CONSTRAINT `fk_temp_arquivo_temp_desc_arquivo1`
  48 + FOREIGN KEY (`temp_desc_arquivo_idarquivo` , `temp_desc_arquivo_token`)
  49 + REFERENCES `temp_desc_arquivo` (`idarquivo` , `token`)
  50 + ON DELETE NO ACTION
  51 + ON UPDATE NO ACTION)
  52 +ENGINE = InnoDB
  53 +DEFAULT CHARACTER SET = latin1;
  54 +
  55 +CREATE TABLE IF NOT EXISTS `temp_desc_arquivo` (
  56 + `tipo` VARCHAR(45) NOT NULL,
  57 + `qtd_paginas` VARCHAR(10) NOT NULL,
  58 + `temp_protocolo_token` VARCHAR(6) NOT NULL,
  59 + `idarquivo` VARCHAR(2) NOT NULL,
  60 + `token` VARCHAR(6) NOT NULL,
  61 + `descricao` VARCHAR(45) NOT NULL,
  62 + PRIMARY KEY (`idarquivo`, `token`),
  63 + INDEX `fk_temp_desc_arquivo_temp_protocolo1_idx` (`temp_protocolo_token` ASC),
  64 + CONSTRAINT `fk_temp_desc_arquivo_temp_protocolo1`
  65 + FOREIGN KEY (`temp_protocolo_token`)
  66 + REFERENCES `temp_protocolo` (`token`)
  67 + ON DELETE NO ACTION
  68 + ON UPDATE NO ACTION)
  69 +ENGINE = InnoDB
  70 +DEFAULT CHARACTER SET = latin1;
  71 +
  72 +CREATE TABLE IF NOT EXISTS `temp_protocolo` (
  73 + `token` VARCHAR(6) NOT NULL,
  74 + `email1` VARCHAR(100) NULL DEFAULT NULL,
  75 + `email2` VARCHAR(100) CHARACTER SET 'big5' NULL DEFAULT NULL,
  76 + `nr_protocolo_anterior` VARCHAR(100) NULL DEFAULT NULL,
  77 + `usuario_codigo` BIGINT(20) NOT NULL,
  78 + PRIMARY KEY (`token`),
  79 + INDEX `fk_temp_protocolo_usuario1_idx` (`usuario_codigo` ASC),
  80 + CONSTRAINT `fk_temp_protocolo_usuario1`
  81 + FOREIGN KEY (`usuario_codigo`)
  82 + REFERENCES `usuario` (`codigo`)
  83 + ON DELETE NO ACTION
  84 + ON UPDATE NO ACTION)
  85 +ENGINE = InnoDB
  86 +DEFAULT CHARACTER SET = latin1;
  87 +
  88 +ALTER TABLE `usuario`
  89 +ADD COLUMN `nome_social` VARCHAR(50) NULL DEFAULT NULL AFTER `token`;
  90 +
  91 +ALTER TABLE `temp_arquivo`
  92 +CHARACTER SET = utf8 ;
  93 +
  94 +ALTER TABLE `temp_desc_arquivo`
  95 +CHARACTER SET = utf8 ;
  96 +
  97 +ALTER TABLE `temp_protocolo`
  98 +CHARACTER SET = utf8 ;
  99 +
  100 +SET SQL_MODE=@OLD_SQL_MODE;
  101 +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  102 +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
src/main/resources/db/migration/V34__correcao_tabela_log.sql 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +-- MySQL Workbench Synchronization
  2 +-- Generated: 2018-03-01 16:29
  3 +-- Model: New Model
  4 +-- Version: 1.0
  5 +-- Project: Name of the project
  6 +-- Author: 01572931140
  7 +
  8 +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  9 +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  10 +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  11 +
  12 +--ALTER TABLE `protocolo`.`log_sistema`
  13 +--CHANGE COLUMN `codigo` `codigo` BIGINT(20) NOT NULL AUTO_INCREMENT ,
  14 +--ADD COLUMN `codigo_usuario` BIGINT(20) NULL DEFAULT NULL AFTER `data_hora`;
  15 +
  16 +
  17 +SET SQL_MODE=@OLD_SQL_MODE;
  18 +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  19 +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
src/main/resources/db/migration/V35__tabela_metadad_configuracao_email.sql 0 → 100644
@@ -0,0 +1,180 @@ @@ -0,0 +1,180 @@
  1 +-- MySQL Workbench Synchronization
  2 +-- Generated: 2018-03-07 12:38
  3 +-- Model: New Model
  4 +-- Version: 1.0
  5 +-- Project: Name of the project
  6 +-- Author: 01572931140
  7 +
  8 +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  9 +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  10 +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  11 +
  12 +ALTER TABLE `configuracao`
  13 +CHANGE COLUMN `codigo` `codigo` INT(11) NOT NULL AUTO_INCREMENT ;
  14 +
  15 +CREATE TABLE IF NOT EXISTS `configuracao_email` (
  16 + `codigo` INT(11) NOT NULL,
  17 + `nome` VARCHAR(45) NULL DEFAULT NULL,
  18 + `valor` TEXT NULL DEFAULT NULL,
  19 + PRIMARY KEY (`codigo`))
  20 +ENGINE = InnoDB
  21 +DEFAULT CHARACTER SET = utf8;
  22 +
  23 +CREATE TABLE IF NOT EXISTS `metadado` (
  24 + `codigo` INT(11) NOT NULL,
  25 + `nome` VARCHAR(45) NOT NULL,
  26 + `valor` TEXT NULL DEFAULT NULL,
  27 + `descricao` TEXT NULL DEFAULT NULL,
  28 + PRIMARY KEY (`codigo`))
  29 +ENGINE = InnoDB
  30 +DEFAULT CHARACTER SET = utf8;
  31 +
  32 +CREATE TABLE IF NOT EXISTS `metadado_email` (
  33 + `codigo_email` INT(11) NOT NULL,
  34 + `codigo_metadado` INT(11) NOT NULL,
  35 + PRIMARY KEY (`codigo_metadado`, `codigo_email`),
  36 + INDEX `fk_metadado_email_configuracao_email1_idx` (`codigo_email` ASC),
  37 + CONSTRAINT `metadado_email_fk1`
  38 + FOREIGN KEY (`codigo_email`)
  39 + REFERENCES `configuracao_email` (`codigo`)
  40 + ON DELETE NO ACTION
  41 + ON UPDATE NO ACTION,
  42 + CONSTRAINT `metadado_email_fk2`
  43 + FOREIGN KEY (`codigo_metadado`)
  44 + REFERENCES `metadado` (`codigo`)
  45 + ON DELETE NO ACTION
  46 + ON UPDATE NO ACTION)
  47 +ENGINE = InnoDB
  48 +DEFAULT CHARACTER SET = utf8;
  49 +
  50 +SET SQL_MODE=@OLD_SQL_MODE;
  51 +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  52 +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
  53 +
  54 +
  55 +/*
  56 +-- Insert protocolo.configuracao
  57 +LIMIT 0, 1000
  58 +
  59 +-- Date: 2018-03-07 12:42
  60 +*/
  61 +SET FOREIGN_KEY_CHECKS = 0;
  62 +truncate table `configuracao`;
  63 +SET FOREIGN_KEY_CHECKS = 1;
  64 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (1,'SMTP_SERVER','10.209.253.28','',1,1,'server-email');
  65 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (2,'SMTP_PORT','25','teste3',2,1,'server-email');
  66 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (3,'MAIL_FROM','xxx@yyy.zzz','',3,1,'server-email');
  67 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (4,'EMAIL_RESPONSAVEL','sss@sssf.com',NULL,4,1,'server-email');
  68 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (9,'URL_AUTORIZAR','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/authorize',NULL,17,4,'brasil-cidadao');
  69 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (10,'URL_TOKEN','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/token',NULL,18,4,'brasil-cidadao');
  70 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (11,'URL_DADOS_USUARIO','https://testeservicos-ecidadao.estaleiro.serpro.gov.br/servicos-ecidadao/ecidadao/usuario/getUserInfo/',NULL,19,4,'brasil-cidadao');
  71 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (12,'CLIENT_ID','516a9b57-d022-4843-a792-93b4dc95622b',NULL,20,4,'brasil-cidadao');
  72 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (13,'SCOPE','openid',NULL,21,4,'brasil-cidadao');
  73 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (14,'REDIRECT_URI','https://protocolo.planejamento.gov.br/login',NULL,22,4,'brasil-cidadao');
  74 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (15,'CLIENT_SECRET','Ld65DuKIva0_EU0LO1VrVC6Be7b-_AsgvkueKpW4OJlhDdJQ4TJ9nKB173M5c5mmG03uhZvEbBKnDRmAe7gZkw',NULL,23,4,'brasil-cidadao');
  75 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (16,'ESCOPO','dados_brasil_cidadao',NULL,24,4,'brasil-cidadao');
  76 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (18,'URL_BRASIL_CIDADAO','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/login',NULL,25,4,'brasil-cidadao');
  77 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (19,'URL_PRIMEIRO_ACESSO','https://testeportal-ecidadao.estaleiro.serpro.gov.br/servicos-cidadao/acesso/#/primeiro-acesso',NULL,26,4,'brasil-cidadao');
  78 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (20,'STORAGE_PATH','E:/Ambiente/Desenvolvimento/estorage/temp','teste2',16,3,'storage');
  79 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (21,'URL_ENDPOINT','https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php','teste4',5,2,'sei');
  80 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (22,'ASSUNTO_CODIGO_ESTRUTURADO','520.1',NULL,6,2,'sei');
  81 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (23,'PROCEDIMENTO_ESPECIFICADO','Especificacao do processo',NULL,7,2,'sei');
  82 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (24,'PROCEDIMENTO_NIVEL_ACESSO','0',NULL,8,2,'sei');
  83 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO','100000346',NULL,9,2,'sei');
  84 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (26,'DOCUMENTO_TIPO','R',NULL,10,2,'sei');
  85 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (27,'DOCUMENTO_ID_SERIE','1',NULL,11,2,'sei');
  86 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (28,'DOCUMENTO_NIVEL_ACESSO','0',NULL,12,2,'sei');
  87 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (29,'SIGLA_SISTEMA','UNB',NULL,13,2,'sei');
  88 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (30,'IDENTIFICACAO_SERVICO','testeunb',NULL,14,2,'sei');
  89 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (31,'ID_UNIDADE','110001972',NULL,15,2,'sei');
  90 +
  91 +/*
  92 +-- insert protocolo.configuracao_email
  93 +LIMIT 0, 1000
  94 +
  95 +-- Date: 2018-03-07 12:41
  96 +*/
  97 +SET FOREIGN_KEY_CHECKS = 0;
  98 +truncate table `configuracao_email`;
  99 +SET FOREIGN_KEY_CHECKS = 1;
  100 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (1,'EMAIL_CONTEUDO_CADASTRO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONFIRMACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>');
  101 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (2,'EMAIL_CONTEUDO_CONSOLIDACAO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONSILIACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>');
  102 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (3,'EMAIL_CONTEUDO_ERRO_SEI','<h1 style=\"font-size: 15px;\">Erro ao enviar o protocolo N&ordm;&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span>para o SEI</h1>\r\n<p>Detalhe do Erro:&nbsp;<span>{$METADADO_MSGERRO}</span>.</p>');
  103 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (4,'EMAIL_CONTEUDO_ESQUECI_SENHA','<p style=\"font-size: 15px;\">Recebemos uma solicita&ccedil;&atilde;o de recupera&ccedil;&atilde;o de senha, por isso estamos enviando uma nova para que voc&ecirc; possa continuar usando nosso sistema de protocolo.</p>\r\n<h1 style=\"font-size: 15px;\">Sua nova senha &eacute;:&nbsp;<span>{$METADADO_USUARIO_NOVASENHA}</span></h1>');
  104 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (5,'EMAIL_CONTEUDO_PROTOCOLO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">N&uacute;mero &Uacute;nico de Protocolo: Ser&aacute; enviado para o(s) e-mail(s) cadastrado(s) no prazo m&aacute;ximo de vinte e quatro horas, contadas do recebimento, salvo quando este ocorrer &agrave;s sextas-feiras, v&eacute;spera de feriados ou pontos facultativos ou haja restri&ccedil;&atilde;o t&eacute;cnica da unidade, devidamente fundamentada.</p>\r\n<p>Data:&nbsp;<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span></p>\r\n<p>Nome:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:&nbsp;<span>{$METADADO_PROTOCOLO_NUMEROANTERIOR}</span></p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>');
  105 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (6,'EMAIL_CONTEUDO_NEGADO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a)<span>{$METADADO_PROTOCOLO_USUARIONOME}</span>, <br /> Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. <br /> Seu protocolo n&atilde;o foi aceito pelo motivo abaixo especificado: <br /><span>{$METADADO_PROTOCOLO_OBSERVACAO}</span></p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>');
  106 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (7,'EMAIL_CONTEUDO_RECEBIMENTO_SEI','<h3>N&uacute;mero &Uacute;nico de Protocolo:<span>{$METADADO_PROTOCOLO_NUPE}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a) usu&aacute;rio (a), Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. Informamos que seu protocolo foi entregue ao setor respons&aacute;vel e que foi gerado o NUP:<span>{$METADADO_PROTOCOLO_NUPE}</span>. Quaisquer diverg&ecirc;ncias das informa&ccedil;&otilde;es prestadas ou problemas nos arquivos anexados ser&atilde;o comunicados ao (&agrave;) senhor (a) atrav&eacute;s dos e-mails informados em seu cadastro. Informa&ccedil;&otilde;es referentes &agrave; tramita&ccedil;&atilde;o de seu processo ser&atilde;o atualizadas at&eacute; 24 horas e estar&atilde;o acess&iacute;veis no s&iacute;tio do protocolo integrado do Governo Federal, dispon&iacute;vel em&nbsp;<span>{$METADADO_PROTOCOLO_LINKSEI}</span></p>\r\n<p>Data:<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span>}.</p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:</p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>');
  107 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (8,'EMAIL_CABECALHO','<table>\r\n<tbody>\r\n<tr style=\"text-align: center;\">\r\n<td><span>{$METADADO_LOGO_EMAIL}</span></td>\r\n</tr>\r\n<tr style=\"text-align: center;\">\r\n<td>\r\n<h4>Minist&eacute;rio do Planejamento, Desenvolvimento e Gest&atilde;o <br /> Protocolo Central <br /> Esplanada dos Minist&eacute;rios Bloco K, T&eacute;rreo, sala T 28, CEP 70.040-906 &ndash; Bras&iacute;lia-DF <br /> protocolo@planejamento.gov.br <br /> (61) 2020-5195/5580&nbsp;</h4>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>');
  108 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (9,'EMAIL_RODAPE','<p>&nbsp;</p>\r\n<p>&ldquo;Por gentileza, responda nossa pesquisa de satisfa&ccedil;&atilde;o do Sistema de Protocolo Eletr&ocirc;nico. Sua contribui&ccedil;&atilde;o &eacute; de extrema valia. <a href=\"http://formsus.datasus.gov.br/site/formulario.php?id_aplicacao=36481\" target=\"_blank\" rel=\"noopener\"> Clique aqui</a>&rdquo;</p>\r\n<p>&nbsp;</p>\r\n<p style=\"text-align: justify; font-size: 10px;\">S&atilde;o de exclusiva responsabilidade do usu&aacute;rio: A conformidade entre os dados informados e os documentos; A conserva&ccedil;&atilde;o dos originais em papel de documentos digitalizados at&eacute; que decaia o direito de revis&atilde;o dos atos praticados no processo, para que, caso solicitado, sejam apresentados para qualquer tipo de confer&ecirc;ncia; A observa&ccedil;&atilde;o de que os atos processuais se consideram realizados no dia e hora do recebimento pelo SEI, considerando-se tempestivos os praticados at&eacute; 23h59min59s do &uacute;ltimo dia do prazo, considerando sempre o hor&aacute;rio oficial de Bras&iacute;lia, independente do fuso hor&aacute;rio em que se encontre.&nbsp;</p>');
  109 +
  110 +/*
  111 +-- Insert protocolo.metadado
  112 +LIMIT 0, 1000
  113 +
  114 +-- Date: 2018-03-07 12:42
  115 +*/
  116 +SET FOREIGN_KEY_CHECKS = 0;
  117 +truncate table `metadado`;
  118 +SET FOREIGN_KEY_CHECKS = 1;
  119 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (1,'METADADO_LOGO_EMAIL','<img src=\"../../static/images/brasao-brasil.png\" th:src=\"|cid:logo|\"/>','Imagem do logótipo do ministério.');
  120 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (2,'METADADO_MSGERRO','<span th:text=\"&{msgErro}\">Erro no protocolo.</span>','Mensagem de erro ao enviar ao SEI.');
  121 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (3,'METADADO_PROTOCOLO_DATAHORAFORMADATA','<span th:text=\"&{protocolo.dataHoraFormatada}\">','Data de criação do protocolo.');
  122 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (4,'METADADO_PROTOCOLO_EMAIL1','<span th:text=\"&{protocolo.email1}\">E-mail: protocolo.email1</span>','E-mail 1 de interessado.');
  123 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (5,'METADADO_PROTOCOLO_EMAIL2','<span th:text=\"&{protocolo.email2}\">E-mail: protocolo.emails</span>','E-mail 2 de interessado.');
  124 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (6,'METADADO_PROTOCOLO_LINKSEI','<span th:text=\"&{protocolo.linkSEI}\">linksei</span>','Link de acesso ao protocolo no SEI.');
  125 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (7,'METADADO_PROTOCOLO_NUMERO','<span th:text=\"&{protocolo.numero}\">Nmero do Protocolo Provisrio: 123ads31232asfd</span>','Numero do protocolo.');
  126 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (8,'METADADO_PROTOCOLO_NUMEROANTERIOR','<span th:text=\"&{protocolo.numeroProtocoloAnterior}\">Referncia ao protocolo anterior: 121345461</span>','Numero de protocolo anterior.');
  127 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (9,'METADADO_PROTOCOLO_NUPE','<span th:text=\"&{protocolo.nupe}\">protocolo.nupe</span>','Numero único do protocolo no SEI.');
  128 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (10,'METADADO_PROTOCOLO_OBSERVACAO','<span th:text=\"&{protocolo.observacao}\">observacao</span>','Obsersavação cadastrada no cancelamento do protocolo.');
  129 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (11,'METADADO_PROTOCOLO_TABELAARQUIVO','<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" style=\"width: 100%\">\n <thead>\n <tr>\n <td style=\"text-align: center\">\n Descrição do documento\n </td>\n <td style=\"text-align: center\">\n Arquivo\n </td>\n </tr>\n </thead>\n <tbody>\n <tr th:each=\"arquivo: &{protocolo.arquivosList}\">\n <td th:text=\"&{arquivo.tipoDocumento.descricao}\">&{arquivo.tipoDocumento.descricao}</td>\n <td th:text=\"&{arquivo.nomeOriginal}\">&{arquivo.nomeOriginal}</td>\n </tr>\n </tbody>\n</table>','Tabela com a lista de arquivos do protocolo.');
  130 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (12,'METADADO_PROTOCOLO_USUARIOEMAIL','<span th:text=\"&{protocolo.usuario.email}\">E-mail: protocolo.email1</span>','E-mail do usuário que cadastrou o protocolo.');
  131 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (13,'METADADO_PROTOCOLO_USUARIONOME','<span th:text=\"&{protocolo.usuario.nome}\">& usuario nome</span>','Nome do usuário que cadastrou o protocolo.');
  132 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (14,'METADADO_USUARIO_NOVASENHA','<span th:text=\"&{usuario.senha}\">Sua nova senha : 5as4f56as4f5as4</span>','Nova senha gerada para o usuário.');
  133 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (15,'METADADO_USUARIO_URLCONFIRMACAO','<a th:href=\"&{usuario.urlConfirmacaoCadastro}\">CONFIRMAR&nbsp;MEU CADASTRO.</a>','Url para ativação do usuário.');
  134 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (16,'METADADO_USUARIO_URLCONSILIACAO','<a th:href=\"&{usuario.urlConfirmacaoCadastro}\">CONFIRMAR&nbsp;MEU CADASTRO.</a>','Url para consiliação de usuário protocolo com usuário brasil cidadão.');
  135 +UPDATE metadado SET valor = REPLACE(valor,'&','$');
  136 +
  137 +/*
  138 +-- insert protocolo.metadado_email
  139 +LIMIT 0, 1000
  140 +
  141 +-- Date: 2018-03-07 12:42
  142 +*/
  143 +SET FOREIGN_KEY_CHECKS = 0;
  144 +truncate table `metadado_email`;
  145 +SET FOREIGN_KEY_CHECKS = 1;
  146 +
  147 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (1,15);
  148 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (2,16);
  149 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (3,2);
  150 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (3,7);
  151 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (4,14);
  152 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,3);
  153 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,4);
  154 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,5);
  155 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,7);
  156 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,8);
  157 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,10);
  158 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,11);
  159 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,12);
  160 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,13);
  161 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,3);
  162 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,4);
  163 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,5);
  164 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,7);
  165 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,10);
  166 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,12);
  167 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,13);
  168 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,3);
  169 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,4);
  170 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,5);
  171 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,6);
  172 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,7);
  173 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,8);
  174 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,9);
  175 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,10);
  176 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,11);
  177 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,12);
  178 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,13);
  179 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (8,1);
  180 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (9,1);
src/main/resources/db/migration/V36__tabela_protocolo_erro_ws.sql 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +ALTER TABLE `protocolo` ADD `erro_ws` TEXT NULL AFTER `data_envio`;
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/db/migration/V37__correcao_metadado_urlconfirmacao.sql 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +
  2 +UPDATE metadado
  3 + SET valor=concat('<a th:href="', '$', '{usuario.urlConfirmacaoCadastro}">CONFIRMAR MEU CADASTRO.</a>')
  4 + WHERE (codigo=15);
  5 +
  6 +UPDATE metadado
  7 + SET valor=concat('<a th:href="', '$', '{usuario.urlConfirmacaoCadastro}">CONFIRMAR MEU CADASTRO.</a>')
  8 + WHERE (codigo=16);
  9 +
  10 +UPDATE configuracao_email
  11 + SET valor=concat('<h4 style="background-color: #fafafa; color: #626262; text-align: center;"><span>{', '$', 'METADADO_LOGO_EMAIL}</span></h4><h4 style="background-color: #fafafa; color: #626262; text-align: center;">Minist&eacute;rio do Planejamento, Desenvolvimento e Gest&atilde;o&nbsp;<br />Protocolo Central&nbsp;<br />Esplanada dos Minist&eacute;rios Bloco K, T&eacute;rreo, sala T 28, CEP 70.040-906 &ndash; Bras&iacute;lia-DF&nbsp;<br />protocolo@planejamento.gov.br&nbsp;<br />(61) 2020-5195/5580&nbsp;</h4>')
  12 + WHERE (codigo=8);
0 \ No newline at end of file 13 \ No newline at end of file