Commit fbaf4344272255e258b40a8b6630fb83a0b95450

Authored by ROGERIO CASSIMIRO DE SOUZA
1 parent 040d1e71
Exists in master

redmine #4583 panel para visualizar assinaturas; validacao senha ao assinar; bus…

…ca de tarja assinatura interna;
Showing 26 changed files with 580 additions and 48 deletions   Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/TarjaAssinaturaDao.java
1 package br.com.centralit.api.dao; 1 package br.com.centralit.api.dao;
2 2
  3 +import br.com.centralit.api.model.TarjaAssinatura;
3 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; 4 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
  5 +import br.com.centralit.framework.model.Dominio;
4 6
5 7
6 /** 8 /**
@@ -16,4 +18,13 @@ import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; @@ -16,4 +18,13 @@ import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
16 * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) 18 * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>)
17 * 19 *
18 */ 20 */
19 -public interface TarjaAssinaturaDao extends CitGenericDAO {} 21 +public interface TarjaAssinaturaDao extends CitGenericDAO {
  22 +
  23 + /**
  24 + * Método responsável por obter tarja assinatura interna
  25 + * @author rogerio.cassimiro
  26 + * @param dominio
  27 + * @return {@link TarjaAssinatura}
  28 + */
  29 + TarjaAssinatura getTarjaAssinaturaInterna(Dominio dominio);
  30 +}
cit-ecm-api/src/main/java/br/com/centralit/api/dao/TarjaAssinaturaDaoHibernate.java
@@ -4,6 +4,8 @@ import org.springframework.stereotype.Repository; @@ -4,6 +4,8 @@ import org.springframework.stereotype.Repository;
4 4
5 import br.com.centralit.api.model.TarjaAssinatura; 5 import br.com.centralit.api.model.TarjaAssinatura;
6 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; 6 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl;
  7 +import br.com.centralit.framework.dao.arquitetura.SearchSeven;
  8 +import br.com.centralit.framework.model.Dominio;
7 9
8 /** 10 /**
9 * <p><img src="http://centralit.com.br/images/logo_central.png"></p> 11 * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
@@ -25,4 +27,16 @@ public class TarjaAssinaturaDaoHibernate extends CitGenericDAOImpl implements Ta @@ -25,4 +27,16 @@ public class TarjaAssinaturaDaoHibernate extends CitGenericDAOImpl implements Ta
25 super(TarjaAssinatura.class); 27 super(TarjaAssinatura.class);
26 } 28 }
27 29
  30 + /**
  31 + * Método responsável por obter tarja assinatura interna
  32 + * @author rogerio.cassimiro
  33 + * @param dominio
  34 + * @return {@link TarjaAssinatura}
  35 + */
  36 + @Override
  37 + public TarjaAssinatura getTarjaAssinaturaInterna(Dominio dominio){
  38 + SearchSeven searchSeven = new SearchSeven(Boolean.TRUE);
  39 + searchSeven.addFilterEqual("tipoAssinatura.id", dominio.getId());
  40 + return searchUnique(searchSeven);
  41 + }
28 } 42 }
cit-ecm-api/src/main/java/br/com/centralit/api/model/Assinatura.java
1 package br.com.centralit.api.model; 1 package br.com.centralit.api.model;
2 2
  3 +import javax.persistence.CascadeType;
3 import javax.persistence.Entity; 4 import javax.persistence.Entity;
4 import javax.persistence.FetchType; 5 import javax.persistence.FetchType;
5 import javax.persistence.GeneratedValue; 6 import javax.persistence.GeneratedValue;
6 import javax.persistence.GenerationType; 7 import javax.persistence.GenerationType;
7 import javax.persistence.Id; 8 import javax.persistence.Id;
8 import javax.persistence.ManyToOne; 9 import javax.persistence.ManyToOne;
  10 +import javax.persistence.OneToOne;
9 import javax.persistence.Transient; 11 import javax.persistence.Transient;
10 12
11 import br.com.centralit.api.framework.json.ViewsEcm; 13 import br.com.centralit.api.framework.json.ViewsEcm;
@@ -79,9 +81,24 @@ public class Assinatura extends PersistentObjectAudit { @@ -79,9 +81,24 @@ public class Assinatura extends PersistentObjectAudit {
79 @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class }) 81 @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class })
80 private Funcao funcao; 82 private Funcao funcao;
81 83
  84 + /** Atributo idTask. */
82 @Transient 85 @Transient
83 private Long idTask; 86 private Long idTask;
84 87
  88 + /** Atributo password. */
  89 + @Transient
  90 + private String password;
  91 +
  92 + /** Atributo conteudoTarja. */
  93 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  94 + @JsonView({ Views.DocumentoGedEdit.class })
  95 + private ConteudoTarja conteudoTarja;
  96 +
  97 + /** Atributo pessoa. */
  98 + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class })
  99 + @ManyToOne(fetch = FetchType.LAZY)
  100 + private Pessoa pessoa;
  101 +
85 /** 102 /**
86 * Retorna o valor do atributo <code>id</code> 103 * Retorna o valor do atributo <code>id</code>
87 * 104 *
@@ -202,4 +219,64 @@ public class Assinatura extends PersistentObjectAudit { @@ -202,4 +219,64 @@ public class Assinatura extends PersistentObjectAudit {
202 this.idTask = idTask; 219 this.idTask = idTask;
203 } 220 }
204 221
  222 + /**
  223 + * Retorna o valor do atributo <code>conteudoTarja</code>
  224 + *
  225 + * @return <code>ConteudoTarja</code>
  226 + */
  227 + public ConteudoTarja getConteudoTarja() {
  228 +
  229 + return conteudoTarja;
  230 + }
  231 +
  232 + /**
  233 + * Define o valor do atributo <code>conteudoTarja</code>.
  234 + *
  235 + * @param conteudoTarja
  236 + */
  237 + public void setConteudoTarja(ConteudoTarja conteudoTarja) {
  238 +
  239 + this.conteudoTarja = conteudoTarja;
  240 + }
  241 +
  242 + /**
  243 + * Retorna o valor do atributo <code>password</code>
  244 + *
  245 + * @return <code>String</code>
  246 + */
  247 + public String getPassword() {
  248 +
  249 + return password;
  250 + }
  251 +
  252 + /**
  253 + * Define o valor do atributo <code>password</code>.
  254 + *
  255 + * @param password
  256 + */
  257 + public void setPassword(String password) {
  258 +
  259 + this.password = password;
  260 + }
  261 +
  262 + /**
  263 + * Retorna o valor do atributo <code>pessoa</code>
  264 + *
  265 + * @return <code>Pessoa</code>
  266 + */
  267 + public Pessoa getPessoa() {
  268 +
  269 + return pessoa;
  270 + }
  271 +
  272 + /**
  273 + * Define o valor do atributo <code>pessoa</code>.
  274 + *
  275 + * @param pessoa
  276 + */
  277 + public void setPessoa(Pessoa pessoa) {
  278 +
  279 + this.pessoa = pessoa;
  280 + }
  281 +
205 } 282 }
cit-ecm-api/src/main/java/br/com/centralit/api/model/ConteudoTarja.java 0 → 100644
@@ -0,0 +1,108 @@ @@ -0,0 +1,108 @@
  1 +package br.com.centralit.api.model;
  2 +
  3 +import javax.persistence.Basic;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.FetchType;
  6 +import javax.persistence.GeneratedValue;
  7 +import javax.persistence.GenerationType;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.Lob;
  10 +import javax.persistence.Transient;
  11 +
  12 +import org.hibernate.annotations.Type;
  13 +
  14 +import br.com.centralit.framework.json.Views;
  15 +
  16 +import com.fasterxml.jackson.annotation.JsonView;
  17 +
  18 +/**
  19 + * <p>
  20 + * <b>Title: </b>
  21 + * </p>
  22 + * <p>
  23 + * <b>Description: </b>
  24 + * </p>
  25 + *
  26 + * @since 27/04/2016 - 08:22:01
  27 + * @author rogerio.cassimiro
  28 + *
  29 + */
  30 +@Entity
  31 +public class ConteudoTarja {
  32 +
  33 + /** Atributo id. */
  34 + @Id
  35 + @GeneratedValue(strategy = GenerationType.AUTO)
  36 + @JsonView({ Views.GenericView.class })
  37 + private Long id;
  38 +
  39 + @JsonView({ Views.DocumentoGedEdit.class })
  40 + @Transient
  41 + private String conteudo;
  42 +
  43 + @Lob
  44 + @Basic(fetch = FetchType.LAZY)
  45 + @Type(type = "org.hibernate.type.BinaryType")
  46 + private byte[] conteudoCriptografado;
  47 +
  48 + /**
  49 + * Retorna o valor do atributo <code>id</code>
  50 + *
  51 + * @return <code>Long</code>
  52 + */
  53 + public Long getId() {
  54 +
  55 + return id;
  56 + }
  57 +
  58 + /**
  59 + * Define o valor do atributo <code>id</code>.
  60 + *
  61 + * @param id
  62 + */
  63 + public void setId(Long id) {
  64 +
  65 + this.id = id;
  66 + }
  67 +
  68 + /**
  69 + * Retorna o valor do atributo <code>conteudo</code>
  70 + *
  71 + * @return <code>String</code>
  72 + */
  73 + public String getConteudo() {
  74 +
  75 + return conteudo;
  76 + }
  77 +
  78 + /**
  79 + * Define o valor do atributo <code>conteudo</code>.
  80 + *
  81 + * @param conteudo
  82 + */
  83 + public void setConteudo(String conteudo) {
  84 +
  85 + this.conteudo = conteudo;
  86 + }
  87 +
  88 + /**
  89 + * Retorna o valor do atributo <code>conteudoCriptografado</code>
  90 + *
  91 + * @return <code>byte[]</code>
  92 + */
  93 + public byte[] getConteudoCriptografado() {
  94 +
  95 + return conteudoCriptografado;
  96 + }
  97 +
  98 + /**
  99 + * Define o valor do atributo <code>conteudoCriptografado</code>.
  100 + *
  101 + * @param conteudoCriptografado
  102 + */
  103 + public void setConteudoCriptografado(byte[] conteudoCriptografado) {
  104 +
  105 + this.conteudoCriptografado = conteudoCriptografado;
  106 + }
  107 +
  108 +}
cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java
@@ -244,6 +244,14 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { @@ -244,6 +244,14 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable {
244 @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) 244 @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class })
245 private Collection<Assinatura> assinaturas; 245 private Collection<Assinatura> assinaturas;
246 246
  247 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  248 + @JsonView({ Views.DocumentoGedEdit.class })
  249 + private ConteudoTarja conteudoTarja;
  250 +
  251 + @Transient
  252 + @JsonView({ Views.ProcessoEdit.class, Views.DocumentoGedEdit.class })
  253 + private String tresAssinaturas;
  254 +
247 /** 255 /**
248 * @return the novaVersao 256 * @return the novaVersao
249 */ 257 */
@@ -1022,4 +1030,44 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { @@ -1022,4 +1030,44 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable {
1022 this.assinaturas = assinaturas; 1030 this.assinaturas = assinaturas;
1023 } 1031 }
1024 1032
  1033 + /**
  1034 + * Retorna o valor do atributo <code>conteudoTarja</code>
  1035 + *
  1036 + * @return <code>ConteudoTarja</code>
  1037 + */
  1038 + public ConteudoTarja getConteudoTarja() {
  1039 +
  1040 + return conteudoTarja;
  1041 + }
  1042 +
  1043 + /**
  1044 + * Define o valor do atributo <code>conteudoTarja</code>.
  1045 + *
  1046 + * @param conteudoTarja
  1047 + */
  1048 + public void setConteudoTarja(ConteudoTarja conteudoTarja) {
  1049 +
  1050 + this.conteudoTarja = conteudoTarja;
  1051 + }
  1052 +
  1053 + /**
  1054 + * Retorna o valor do atributo <code>tresAssinaturas</code>
  1055 + *
  1056 + * @return <code>String</code>
  1057 + */
  1058 + public String getTresAssinaturas() {
  1059 +
  1060 + return tresAssinaturas;
  1061 + }
  1062 +
  1063 + /**
  1064 + * Define o valor do atributo <code>tresAssinaturas</code>.
  1065 + *
  1066 + * @param tresAssinaturas
  1067 + */
  1068 + public void setTresAssinaturas(String tresAssinaturas) {
  1069 +
  1070 + this.tresAssinaturas = tresAssinaturas;
  1071 + }
  1072 +
1025 } 1073 }
cit-ecm-api/src/main/java/br/com/centralit/api/model/TarjaAssinatura.java
@@ -43,6 +43,13 @@ public class TarjaAssinatura extends PersistentObjectAudit{ @@ -43,6 +43,13 @@ public class TarjaAssinatura extends PersistentObjectAudit{
43 @OneToOne 43 @OneToOne
44 @JsonView({ ViewsEcm.TarjaAssinaturaEditview.class }) 44 @JsonView({ ViewsEcm.TarjaAssinaturaEditview.class })
45 private AnexoImagem anexoImagem; 45 private AnexoImagem anexoImagem;
  46 +
  47 + public static String LOGO = "@logo@";
  48 + public static String NOME_ASSINANTE = "@nome_assinante@";
  49 + public static String FUNCAO_ASSINANTE = " @funcao_assinante@";
  50 + public static String DATA_ASSINATURA = " @data_assinatura@";
  51 + public static String HORA_ASSINATURA = "@hora_assinatura@";
  52 + public static String CODIGO_ASSINATURA = "@codigo_assinatura@";
46 53
47 public Long getId() { 54 public Long getId() {
48 55
cit-ecm-api/src/main/java/br/com/centralit/api/service/DocumentoGedService.java
@@ -78,4 +78,10 @@ public interface DocumentoGedService extends GenericService&lt;DocumentoGed, Long&gt; @@ -78,4 +78,10 @@ public interface DocumentoGedService extends GenericService&lt;DocumentoGed, Long&gt;
78 */ 78 */
79 Collection<DocumentoGed> atualizarSigiloDocumentos(Collection<DocumentoGed> listaDocumentos); 79 Collection<DocumentoGed> atualizarSigiloDocumentos(Collection<DocumentoGed> listaDocumentos);
80 80
  81 + /**
  82 + * Método responsável por montar as três primeiras assinaturas por documento para apresentação no tooltip da tela de execução de tarefa
  83 + * @author rogerio.cassimiro
  84 + * @param documentos
  85 + */
  86 + void montarTresAssinantesPorDocumento(Collection<DocumentoGed> documentos);
81 } 87 }
cit-ecm-api/src/main/java/br/com/centralit/api/service/TarjaAssinaturaService.java
@@ -2,6 +2,7 @@ package br.com.centralit.api.service; @@ -2,6 +2,7 @@ package br.com.centralit.api.service;
2 2
3 import org.springframework.web.multipart.MultipartFile; 3 import org.springframework.web.multipart.MultipartFile;
4 4
  5 +import br.com.centralit.api.model.Assinatura;
5 import br.com.centralit.api.model.TarjaAssinatura; 6 import br.com.centralit.api.model.TarjaAssinatura;
6 import br.com.centralit.framework.service.arquitetura.GenericService; 7 import br.com.centralit.framework.service.arquitetura.GenericService;
7 8
@@ -54,4 +55,18 @@ public interface TarjaAssinaturaService extends GenericService&lt;TarjaAssinatura, @@ -54,4 +55,18 @@ public interface TarjaAssinaturaService extends GenericService&lt;TarjaAssinatura,
54 * @return 55 * @return
55 */ 56 */
56 TarjaAssinatura removeImagem (TarjaAssinatura tarjaAssinatura); 57 TarjaAssinatura removeImagem (TarjaAssinatura tarjaAssinatura);
  58 +
  59 + /**
  60 + * Método responsável por obter tarja assinatura interna
  61 + * @author rogerio.cassimiro
  62 + * @return {@link TarjaAssinatura}
  63 + */
  64 + TarjaAssinatura getTarjaAssinaturaInterna();
  65 +
  66 + /**
  67 + * Método responsável por gerar assinatura interna por usuário e por documento
  68 + * @author rogerio.cassimiro
  69 + * @param assinatura
  70 + */
  71 + void gerarAssinaturaInternaUsuario(Assinatura assinatura);
57 } 72 }
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AnexoGedServiceImpl.java
@@ -107,7 +107,7 @@ public class AnexoGedServiceImpl extends GenericServiceImpl&lt;AnexoGed, Long&gt; impl @@ -107,7 +107,7 @@ public class AnexoGedServiceImpl extends GenericServiceImpl&lt;AnexoGed, Long&gt; impl
107 107
108 documentoGed.setConteudo(this.gedFileService.doOcr(anexo)); 108 documentoGed.setConteudo(this.gedFileService.doOcr(anexo));
109 109
110 - this.solrService.addDocumento(documentoGed); 110 +// this.solrService.addDocumento(documentoGed);
111 111
112 anexo.setDocumentoGed(documentoGed); 112 anexo.setDocumentoGed(documentoGed);
113 113
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java
1 package br.com.centralit.api.service.impl; 1 package br.com.centralit.api.service.impl;
2 2
3 import org.springframework.beans.factory.annotation.Autowired; 3 import org.springframework.beans.factory.annotation.Autowired;
  4 +import org.springframework.beans.factory.annotation.Value;
4 import org.springframework.security.core.context.SecurityContextHolder; 5 import org.springframework.security.core.context.SecurityContextHolder;
5 import org.springframework.stereotype.Service; 6 import org.springframework.stereotype.Service;
6 7
@@ -11,10 +12,16 @@ import br.com.centralit.api.service.DocumentoGedService; @@ -11,10 +12,16 @@ import br.com.centralit.api.service.DocumentoGedService;
11 import br.com.centralit.api.service.DominioService; 12 import br.com.centralit.api.service.DominioService;
12 import br.com.centralit.api.service.FuncaoService; 13 import br.com.centralit.api.service.FuncaoService;
13 import br.com.centralit.api.service.HistoricoAlteracaoProcessoService; 14 import br.com.centralit.api.service.HistoricoAlteracaoProcessoService;
  15 +import br.com.centralit.api.service.PessoaService;
  16 +import br.com.centralit.api.service.TarjaAssinaturaService;
14 import br.com.centralit.api.service.UsuarioService; 17 import br.com.centralit.api.service.UsuarioService;
  18 +import br.com.centralit.framework.exception.BusinessException;
  19 +import br.com.centralit.framework.exception.CodigoErro;
15 import br.com.centralit.framework.model.Dominio; 20 import br.com.centralit.framework.model.Dominio;
16 import br.com.centralit.framework.model.Usuario; 21 import br.com.centralit.framework.model.Usuario;
17 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 22 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
  23 +import br.com.centralit.framework.util.UtilObjeto;
  24 +import br.com.centralit.framework.util.UtilString;
18 25
19 26
20 /** 27 /**
@@ -44,9 +51,18 @@ public class AssinaturaServiceImpl extends GenericServiceImpl&lt;Assinatura, Long&gt; @@ -44,9 +51,18 @@ public class AssinaturaServiceImpl extends GenericServiceImpl&lt;Assinatura, Long&gt;
44 private FuncaoService funcaoService; 51 private FuncaoService funcaoService;
45 52
46 @Autowired 53 @Autowired
  54 + private PessoaService pessoaService;
  55 +
  56 + @Autowired
47 private HistoricoAlteracaoProcessoService historicoAlteracaoProcessoService; 57 private HistoricoAlteracaoProcessoService historicoAlteracaoProcessoService;
48 58
49 @Autowired 59 @Autowired
  60 + private TarjaAssinaturaService tarjaAssinaturaService;
  61 +
  62 + @Value("${metodo.autenticacao.ldap}")
  63 + private String ldap;
  64 +
  65 + @Autowired
50 public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) { 66 public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) {
51 this.dao = assinaturaDao; 67 this.dao = assinaturaDao;
52 } 68 }
@@ -56,14 +72,48 @@ public class AssinaturaServiceImpl extends GenericServiceImpl&lt;Assinatura, Long&gt; @@ -56,14 +72,48 @@ public class AssinaturaServiceImpl extends GenericServiceImpl&lt;Assinatura, Long&gt;
56 */ 72 */
57 @Override 73 @Override
58 public Assinatura saveAssinaturaInterna(Assinatura assinatura) { 74 public Assinatura saveAssinaturaInterna(Assinatura assinatura) {
  75 + Usuario usuario = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
  76 + this.validarSenha(assinatura.getPassword(), usuario);
59 assinatura.setDocumentoGed(this.documentoGedService.getReference(assinatura.getDocumentoGed().getId())); 77 assinatura.setDocumentoGed(this.documentoGedService.getReference(assinatura.getDocumentoGed().getId()));
60 - assinatura.setUsuario((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()); 78 + assinatura.setUsuario(usuario);
  79 + assinatura.setPessoa(this.pessoaService.getReference(assinatura.getPessoa().getId()));
61 assinatura.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA)); 80 assinatura.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA));
62 assinatura.setFuncao(funcaoService.getReference(assinatura.getFuncao().getId())); 81 assinatura.setFuncao(funcaoService.getReference(assinatura.getFuncao().getId()));
63 historicoAlteracaoProcessoService.gerarHistoricoAssinatura(assinatura); 82 historicoAlteracaoProcessoService.gerarHistoricoAssinatura(assinatura);
  83 + salvarTarjaAssinaturaPorTipoDocumento(assinatura);
64 return super.save(assinatura); 84 return super.save(assinatura);
65 } 85 }
  86 +
  87 + private void salvarTarjaAssinaturaPorTipoDocumento(Assinatura assinatura) {
  88 + //OnLine
  89 + if(assinatura.getDocumentoGed().getFormaCriacao().getCodigo() == 1){
  90 + //TODO ON LINE
  91 + }else {
  92 + this.tarjaAssinaturaService.gerarAssinaturaInternaUsuario(assinatura);
  93 + }
  94 + }
  95 +
  96 + /**
  97 + * Método responsável por validar senha para assinar o documento
  98 + * @author rogerio.cassimiro
  99 + * @param password
  100 + * @param usuario
  101 + */
  102 + private void validarSenha(String password, Usuario usuario) {
  103 +
  104 + if(!UtilString.isNullOrEmpty(ldap) && ldap.equals("false")) {
66 105
  106 + if(UtilString.isNullOrEmpty(password))
  107 + throw new BusinessException("ECM.VALIDACAO.SENHA_ASSINATURA", CodigoErro.REGRA_NEGOCIO.getValue(), "");
  108 +
  109 + if(!UtilObjeto.isReferencia(this.usuarioService.loadUserByUsernamePasswordMobile(usuario.getUsername(), password)))
  110 + throw new BusinessException("ECM.VALIDACAO.SENHA_ASSINATURA_INVALIDA", CodigoErro.REGRA_NEGOCIO.getValue(), "");
  111 +
  112 + } else {
  113 + //TODO LDAP validação
  114 + }
  115 + }
  116 +
67 /** 117 /**
68 * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado 118 * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado
69 * @author rogerio.cassimiro 119 * @author rogerio.cassimiro
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java
@@ -22,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile; @@ -22,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile;
22 22
23 import br.com.centralit.api.dao.DocumentoGedDao; 23 import br.com.centralit.api.dao.DocumentoGedDao;
24 import br.com.centralit.api.model.AnexoGed; 24 import br.com.centralit.api.model.AnexoGed;
  25 +import br.com.centralit.api.model.Assinatura;
25 import br.com.centralit.api.model.DocumentoGed; 26 import br.com.centralit.api.model.DocumentoGed;
26 import br.com.centralit.api.model.InteressadoDocumento; 27 import br.com.centralit.api.model.InteressadoDocumento;
27 import br.com.centralit.api.model.Processo; 28 import br.com.centralit.api.model.Processo;
@@ -230,7 +231,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo @@ -230,7 +231,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
230 // Verifica se o documento é sigiloso 231 // Verifica se o documento é sigiloso
231 if (!UtilObjeto.isReferencia(entity.getSigilo())) { 232 if (!UtilObjeto.isReferencia(entity.getSigilo())) {
232 233
233 - this.solrService.addDocumento(entity); 234 + //this.solrService.addDocumento(entity);
234 } 235 }
235 236
236 } catch (Exception e) { 237 } catch (Exception e) {
@@ -316,9 +317,9 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo @@ -316,9 +317,9 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
316 317
317 if (UtilObjeto.isReferencia(entity.getProcesso().getSigilo())) { 318 if (UtilObjeto.isReferencia(entity.getProcesso().getSigilo())) {
318 if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 1L) { 319 if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 1L) {
319 - if (entity.getSigilo().getTipoSigilo().getCodigo() == 0L) {  
320 - throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());  
321 - } 320 +// if (entity.getSigilo().getTipoSigilo().getCodigo() == 0L) {
  321 +// throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
  322 +// }
322 } else if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 2L) { 323 } else if (entity.getProcesso().getSigilo().getTipoSigilo().getCodigo() == 2L) {
323 if (!UtilObjeto.isReferencia(entity.getSigilo()) || entity.getSigilo().getTipoSigilo().getCodigo() != 2L) { 324 if (!UtilObjeto.isReferencia(entity.getSigilo()) || entity.getSigilo().getTipoSigilo().getCodigo() != 2L) {
324 throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue()); 325 throw new BusinessException(DocumentoGedServiceImpl.VALIDAR_NIVEL_ACESSO, CodigoErro.REGRA_NEGOCIO.getValue());
@@ -1020,5 +1021,32 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo @@ -1020,5 +1021,32 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
1020 1021
1021 return this.documentoGedDao.findPorPlanoClassificacao(idPlanoClassificacao); 1022 return this.documentoGedDao.findPorPlanoClassificacao(idPlanoClassificacao);
1022 } 1023 }
  1024 +
  1025 + /**
  1026 + * Método responsável por montar as três primeiras assinaturas por documento para apresentação no tooltip da tela de execução de tarefa
  1027 + * @author rogerio.cassimiro
  1028 + * @param documentos
  1029 + */
  1030 + @Override
  1031 + public void montarTresAssinantesPorDocumento(Collection<DocumentoGed> documentos) {
  1032 +
  1033 + if(!UtilColecao.isVazio(documentos)){
  1034 + for (DocumentoGed documentoGed : documentos) {
  1035 + if(!UtilColecao.isVazio(documentoGed.getAssinaturas())){
  1036 + int maxAssinatura = 0;
  1037 + StringBuilder tresAssinaturas = new StringBuilder();
  1038 + for (Assinatura assinatura : documentoGed.getAssinaturas()) {
  1039 + if(++maxAssinatura < 4)
  1040 + tresAssinaturas.append(UtilObjeto.isReferencia(assinatura.getPessoa()) ? assinatura.getPessoa().getNome() : "").append(" - ").append(assinatura.getFuncao().getNome()).append(". ");
  1041 + else {
  1042 + tresAssinaturas.append("...");
  1043 + break;
  1044 + }
  1045 + }
  1046 + documentoGed.setTresAssinaturas(tresAssinaturas.toString());
  1047 + }
  1048 + }
  1049 + }
  1050 + }
1023 1051
1024 } 1052 }
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/HistoricoAlteracaoProcessoServiceImpl.java
@@ -213,7 +213,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl&lt;Hi @@ -213,7 +213,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl&lt;Hi
213 mapaAtributos.put("tipo_documento", null); 213 mapaAtributos.put("tipo_documento", null);
214 mapaAtributos.put("numero_documento", null); 214 mapaAtributos.put("numero_documento", null);
215 HistoricoAlteracaoProcesso hap = new HistoricoAlteracaoProcesso(assinatura.getDocumentoGed().getProcesso(), Calendar.getInstance(), 215 HistoricoAlteracaoProcesso hap = new HistoricoAlteracaoProcesso(assinatura.getDocumentoGed().getProcesso(), Calendar.getInstance(),
216 - usuario.getUnidade().getNome(), usuario.getUsername(), assinatura.getIdTask(), AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_DESCRICAO, 216 + UtilObjeto.isReferencia(usuario.getUnidade()) ? usuario.getUnidade().getNome() : null, usuario.getUsername(), assinatura.getIdTask(), AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_DESCRICAO,
217 AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_CHAVE, assinatura.getDocumentoGed(), mapaAtributos); 217 AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_CHAVE, assinatura.getDocumentoGed(), mapaAtributos);
218 hap.setAutor(usuario); 218 hap.setAutor(usuario);
219 this.saveWithParams(hap); 219 this.saveWithParams(hap);
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
@@ -53,7 +53,6 @@ import br.com.centralit.framework.model.Notificacao; @@ -53,7 +53,6 @@ import br.com.centralit.framework.model.Notificacao;
53 import br.com.centralit.framework.model.NotificacaoGrupo; 53 import br.com.centralit.framework.model.NotificacaoGrupo;
54 import br.com.centralit.framework.model.Unidade; 54 import br.com.centralit.framework.model.Unidade;
55 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 55 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
56 -import br.com.centralit.framework.util.Util;  
57 import br.com.centralit.framework.util.UtilColecao; 56 import br.com.centralit.framework.util.UtilColecao;
58 import br.com.centralit.framework.util.UtilDate; 57 import br.com.centralit.framework.util.UtilDate;
59 import br.com.centralit.framework.util.UtilObjeto; 58 import br.com.centralit.framework.util.UtilObjeto;
@@ -278,7 +277,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -278,7 +277,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
278 277
279 if (!UtilObjeto.isReferencia(processo.getSigilo())) { 278 if (!UtilObjeto.isReferencia(processo.getSigilo())) {
280 279
281 - this.solrService.addProcesso(processo); 280 +// this.solrService.addProcesso(processo);
282 } 281 }
283 282
284 } catch (final Exception e) { 283 } catch (final Exception e) {
@@ -709,6 +708,8 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -709,6 +708,8 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
709 Processo processo = super.getReference(id); 708 Processo processo = super.getReference(id);
710 709
711 processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id)); 710 processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id));
  711 +
  712 + this.documentoGedService.montarTresAssinantesPorDocumento(processo.getDocumentos());
712 713
713 return processo; 714 return processo;
714 } 715 }
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java
@@ -9,12 +9,17 @@ import org.springframework.stereotype.Service; @@ -9,12 +9,17 @@ import org.springframework.stereotype.Service;
9 import org.springframework.validation.Validator; 9 import org.springframework.validation.Validator;
10 import org.springframework.web.multipart.MultipartFile; 10 import org.springframework.web.multipart.MultipartFile;
11 11
  12 +import com.ibm.icu.util.Calendar;
  13 +
12 import br.com.centralit.api.dao.TarjaAssinaturaDao; 14 import br.com.centralit.api.dao.TarjaAssinaturaDao;
  15 +import br.com.centralit.api.model.Assinatura;
13 import br.com.centralit.api.model.TarjaAssinatura; 16 import br.com.centralit.api.model.TarjaAssinatura;
14 import br.com.centralit.api.service.AnexoImagemService; 17 import br.com.centralit.api.service.AnexoImagemService;
  18 +import br.com.centralit.api.service.DominioService;
15 import br.com.centralit.api.service.OrganizacaoService; 19 import br.com.centralit.api.service.OrganizacaoService;
16 import br.com.centralit.api.service.TarjaAssinaturaService; 20 import br.com.centralit.api.service.TarjaAssinaturaService;
17 import br.com.centralit.framework.model.AnexoImagem; 21 import br.com.centralit.framework.model.AnexoImagem;
  22 +import br.com.centralit.framework.model.Dominio;
18 import br.com.centralit.framework.model.Organizacao; 23 import br.com.centralit.framework.model.Organizacao;
19 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 24 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
20 25
@@ -43,6 +48,9 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl&lt;TarjaAssinatu @@ -43,6 +48,9 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl&lt;TarjaAssinatu
43 private AnexoImagemService anexoImagemService; 48 private AnexoImagemService anexoImagemService;
44 49
45 private TarjaAssinaturaDao tarjaAssinaturaDao; 50 private TarjaAssinaturaDao tarjaAssinaturaDao;
  51 +
  52 + @Autowired
  53 + private DominioService dominioService;
46 54
47 @Autowired 55 @Autowired
48 public TarjaAssinaturaServiceImpl (TarjaAssinaturaDao tarjaAssinaturaDao, @Qualifier("tarjaAssinaturaValidator") Validator validator) { 56 public TarjaAssinaturaServiceImpl (TarjaAssinaturaDao tarjaAssinaturaDao, @Qualifier("tarjaAssinaturaValidator") Validator validator) {
@@ -90,4 +98,31 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl&lt;TarjaAssinatu @@ -90,4 +98,31 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl&lt;TarjaAssinatu
90 + "identificar a causa: ", ioe.getCause()); 98 + "identificar a causa: ", ioe.getCause());
91 } 99 }
92 } 100 }
  101 +
  102 + /**
  103 + * Método responsável por obter tarja assinatura interna
  104 + * @author rogerio.cassimiro
  105 + * @return {@link TarjaAssinatura}
  106 + */
  107 + @Override
  108 + public TarjaAssinatura getTarjaAssinaturaInterna() {
  109 + Dominio dominio = dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA);
  110 + return this.tarjaAssinaturaDao.getTarjaAssinaturaInterna(dominio);
  111 + }
  112 +
  113 + /**
  114 + * Método responsável por gerar assinatura interna por usuário e por documento
  115 + * @author rogerio.cassimiro
  116 + * @param assinatura
  117 + */
  118 + @Override
  119 + public void gerarAssinaturaInternaUsuario(Assinatura assinatura) {
  120 + String conteudo = assinatura.getConteudoTarja().getConteudo();
  121 + conteudo = conteudo.replaceAll(TarjaAssinatura.DATA_ASSINATURA, Calendar.getInstance().toString())
  122 + .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome())
  123 + .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome())
  124 + .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome())
  125 + .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome());
  126 +
  127 + }
93 } 128 }
cit-ecm-api/src/main/resources/scripts/release-2.0.0-spring-2/01-cit-ecm-2.0.0-sprint-2-postgres.sql 0 → 100644
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
  1 +-- 27/04/2016 ROGERIO CASSIMIRO TARJA PARA DOC E ASSINATURA
  2 +CREATE TABLE public.conteudotarja
  3 +(
  4 + id bigint NOT NULL,
  5 + conteudocriptografado bytea,
  6 + CONSTRAINT conteudotarja_pkey PRIMARY KEY (id)
  7 +)
  8 +WITH (
  9 + OIDS=FALSE
  10 +);
  11 +ALTER TABLE public.conteudotarja
  12 + OWNER TO postgres;
  13 +
  14 +ALTER TABLE assinatura ADD COLUMN conteudotarja_id bigint,
  15 + ADD CONSTRAINT fk_conteudo_tarja FOREIGN KEY (conteudotarja_id)
  16 + REFERENCES conteudotarja (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;
  17 +
  18 +ALTER TABLE documentoged
  19 + ADD COLUMN conteudotarja_id bigint,
  20 + ADD CONSTRAINT fk_conteudo_tarja FOREIGN KEY (conteudotarja_id)
  21 + REFERENCES conteudotarja (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;
  22 + -- 27/04/2016 ROGERIO CASSIMIRO
0 \ No newline at end of file 23 \ No newline at end of file
cit-ecm-api/src/main/resources/scripts/v1.0.0-alpha9/01-cit-ecm-1.0.0-ALFA-3-postgres.sql
@@ -33,7 +33,7 @@ CREATE TABLE anexoimagem @@ -33,7 +33,7 @@ CREATE TABLE anexoimagem
33 ); 33 );
34 34
35 INSERT INTO tarjaassinatura(id, databloqueio, datainativo, datacriacao, dataedicao, version, conteudo, descricao, inativador_id, autor_id, editor_id, anexoimagem_id, tipoassinatura_id) 35 INSERT INTO tarjaassinatura(id, databloqueio, datainativo, datacriacao, dataedicao, version, conteudo, descricao, inativador_id, autor_id, editor_id, anexoimagem_id, tipoassinatura_id)
36 -VALUES (NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, NULL, LOCALTIMESTAMP, LOCALTIMESTAMP, 0, '', '', null, (select id from seguranca_usuario where username = 'admin'), null, null, (select id from dominio where chave = 'tipoAssinatura' and codigo = 1)); 36 +VALUES (NEXTVAL('hibernate_sequence'), NULL, NULL, LOCALTIMESTAMP, LOCALTIMESTAMP, 0, '', '', null, (select id from seguranca_usuario where username = 'admin'), null, null, (select id from dominio where chave = 'tipoAssinatura' and codigo = 1));
37 INSERT INTO tarjaassinatura(id, databloqueio, datainativo, datacriacao, dataedicao, version, conteudo, descricao, inativador_id, autor_id, editor_id, anexoimagem_id, tipoassinatura_id) 37 INSERT INTO tarjaassinatura(id, databloqueio, datainativo, datacriacao, dataedicao, version, conteudo, descricao, inativador_id, autor_id, editor_id, anexoimagem_id, tipoassinatura_id)
38 -VALUES (NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, NULL, LOCALTIMESTAMP, LOCALTIMESTAMP, 0, '', '', null, (select id from seguranca_usuario where username = 'admin'), null, null, (select id from dominio where chave = 'tipoAssinatura' and codigo = 2)); 38 +VALUES (NEXTVAL('hibernate_sequence'), NULL, NULL, LOCALTIMESTAMP, LOCALTIMESTAMP, 0, '', '', null, (select id from seguranca_usuario where username = 'admin'), null, null, (select id from dominio where chave = 'tipoAssinatura' and codigo = 2));
39 -- CIRO - 18/04/2016 - FIM 39 -- CIRO - 18/04/2016 - FIM
40 \ No newline at end of file 40 \ No newline at end of file
cit-ecm-web/src/main/java/br/com/centralit/controller/DocumentoGedController.java
1 package br.com.centralit.controller; 1 package br.com.centralit.controller;
2 2
  3 +import java.util.ArrayList;
3 import java.util.Collection; 4 import java.util.Collection;
  5 +import java.util.List;
4 6
5 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Controller; 8 import org.springframework.stereotype.Controller;
  9 +import org.springframework.web.bind.annotation.PathVariable;
7 import org.springframework.web.bind.annotation.RequestMapping; 10 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.RequestMethod; 11 import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam; 12 import org.springframework.web.bind.annotation.RequestParam;
@@ -192,4 +195,15 @@ public class DocumentoGedController extends GenericController&lt;DocumentoGed&gt; { @@ -192,4 +195,15 @@ public class DocumentoGedController extends GenericController&lt;DocumentoGed&gt; {
192 195
193 return ViewsEcm.DocumentoGedList.class; 196 return ViewsEcm.DocumentoGedList.class;
194 } 197 }
  198 +
  199 + @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  200 + @ResponseBody
  201 + public ResponseBodyWrapper getObject(@PathVariable("id") Long id) {
  202 + ResultResponseVH<DocumentoGed> resultResponseVH = new ResultResponseVH<DocumentoGed>(genericService.getReference(id));
  203 + List<DocumentoGed> list = new ArrayList<DocumentoGed>();
  204 + list.add(resultResponseVH.getPayload());
  205 + this.documentoGedService.montarTresAssinantesPorDocumento(list);
  206 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView());
  207 + return responseBody;
  208 + }
195 } 209 }
cit-ecm-web/src/main/java/br/com/centralit/controller/TarjaAssinaturaController.java
@@ -16,6 +16,7 @@ import br.com.centralit.api.model.TarjaAssinatura; @@ -16,6 +16,7 @@ import br.com.centralit.api.model.TarjaAssinatura;
16 import br.com.centralit.api.service.TarjaAssinaturaService; 16 import br.com.centralit.api.service.TarjaAssinaturaService;
17 import br.com.centralit.framework.controller.GenericController; 17 import br.com.centralit.framework.controller.GenericController;
18 import br.com.centralit.framework.json.ResponseBodyWrapper; 18 import br.com.centralit.framework.json.ResponseBodyWrapper;
  19 +import br.com.centralit.framework.view.ResultResponseVH;
19 20
20 @Controller 21 @Controller
21 @RequestMapping("/rest/tarjaAssinatura") 22 @RequestMapping("/rest/tarjaAssinatura")
@@ -61,5 +62,13 @@ public class TarjaAssinaturaController extends GenericController&lt;TarjaAssinatura @@ -61,5 +62,13 @@ public class TarjaAssinaturaController extends GenericController&lt;TarjaAssinatura
61 62
62 return responseBody; 63 return responseBody;
63 } 64 }
  65 +
  66 + @RequestMapping(value = "/getTarjaAssinaturaInterna", method = RequestMethod.GET)
  67 + @ResponseBody
  68 + public ResponseBodyWrapper getTarjaAssinaturaInterna() {
  69 + ResultResponseVH<TarjaAssinatura> resultResponseVH = new ResultResponseVH<TarjaAssinatura>(tarjaAssinaturaService.getTarjaAssinaturaInterna());
  70 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView());
  71 + return responseBody;
  72 + }
64 73
65 } 74 }
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
@@ -489,8 +489,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -489,8 +489,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
489 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE", "O grupo selecionado como padrão está sendo usado como grupo padrão da unidade ", dominio, modulo)); 489 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE", "O grupo selecionado como padrão está sendo usado como grupo padrão da unidade ", dominio, modulo));
490 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES", "Não é possível alterar o nível de acesso para sigiloso, pois o processo foi enviado para outra unidade.", dominio, modulo)); 490 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES", "Não é possível alterar o nível de acesso para sigiloso, pois o processo foi enviado para outra unidade.", dominio, modulo));
491 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO", "Não é possível incluir documento com o nível de acesso menor que o do processo.", dominio, modulo)); 491 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO", "Não é possível incluir documento com o nível de acesso menor que o do processo.", dominio, modulo));
492 -  
493 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.SENHA_ASSINATURA", "Informe sua senha para assinar!", dominio, modulo)); 492 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.SENHA_ASSINATURA", "Informe sua senha para assinar!", dominio, modulo));
  493 + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.SENHA_ASSINATURA_INVALIDA", "Senha do usuário inválida!", dominio, modulo));
494 } 494 }
495 495
496 /** 496 /**
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/AssinarDocumentoController.js
1 'use strict'; 1 'use strict';
2 2
3 3
4 -citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'GerenciarProcessoRepository', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository', 'PessoaRepository', '$q', 'AssinaturaRepository',  
5 - function AssinarDocumentoController($scope, $translate, GerenciarProcessoRepository, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository, PessoaRepository, $q, AssinaturaRepository) { 4 +citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'GerenciarProcessoRepository', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository', '$q', 'AssinaturaRepository', 'TarjaAssinaturaRepository', '$timeout',
  5 + function AssinarDocumentoController($scope, $translate, GerenciarProcessoRepository, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository, $q, AssinaturaRepository, TarjaAssinaturaRepository, $timeout) {
6 6
7 /* 7 /*
8 * Abre panel assinar documento 8 * Abre panel assinar documento
@@ -26,7 +26,7 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren @@ -26,7 +26,7 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren
26 _exibirNenhumaAssinatura(); 26 _exibirNenhumaAssinatura();
27 _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){ 27 _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){
28 $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true); 28 $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true);
29 - //_obterPermissaoAssinaturaDocumentoExterno(); 29 + $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura;
30 }); 30 });
31 }); 31 });
32 } 32 }
@@ -38,7 +38,7 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren @@ -38,7 +38,7 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren
38 _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){ 38 _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){
39 $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true); 39 $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true);
40 $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura; 40 $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura;
41 - //_obterPermissaoAssinaturaDocumentoExterno(); 41 + _getTarjaAssinaturaInterna();
42 }); 42 });
43 }); 43 });
44 }; 44 };
@@ -75,21 +75,47 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren @@ -75,21 +75,47 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren
75 } 75 }
76 76
77 AssinaturaRepository.saveAssinaturaInterna(_getAssinatura()).then(function(result){ 77 AssinaturaRepository.saveAssinaturaInterna(_getAssinatura()).then(function(result){
78 - if($scope.documentoSelecionado.assinaturas)  
79 - $scope.documentoSelecionado.assinaturas.push(result.originalElement);  
80 - $scope.autenticacao = null;  
81 - $scope.exibirIncluirAssinatura = false;  
82 - $scope.nenhumaAssinatura = false;  
83 - $scope.documentosSelecionados.forEach(function(doc){  
84 - if(doc.id == $scope.documentoSelecionado.id)  
85 - doc.assinaturas = $scope.documentoSelecionado.assinaturas;  
86 - }); 78 + _atualizarDocumentoSelecionadoAposAssinar(result.originalElement);
  79 + _resetAssinar();
  80 + _atualizarDocDoProcessoAposAssinar();
87 $scope.showAlert("success", $translate.instant('ECM.ASSINADO_SUCESSO')); 81 $scope.showAlert("success", $translate.instant('ECM.ASSINADO_SUCESSO'));
88 }); 82 });
89 }; 83 };
90 84
91 function _getAssinatura(){ 85 function _getAssinatura(){
92 - return {documentoGed : { id : $scope.documentoSelecionado.id }, funcao : {id : _getFuncaoChecked()}, idTask : $scope.$parent.task.id }; 86 + return {
  87 + documentoGed : { id : $scope.documentoSelecionado.id },
  88 + funcao : {id : _getFuncaoChecked()},
  89 + idTask : $scope.$parent.task.id,
  90 + password : $scope.autenticacao,
  91 + pessoa : { id : $scope.pessoa.id},
  92 + conteudoTarja : { id : $scope.tarjaAssinatura.id}};
  93 + };
  94 +
  95 + function _atualizarDocumentoSelecionadoAposAssinar(assinatura){
  96 + if($scope.documentoSelecionado.assinaturas)
  97 + $scope.documentoSelecionado.assinaturas.push(assinatura);
  98 + $scope.documentosSelecionados.forEach(function(doc){
  99 + if(doc.id == $scope.documentoSelecionado.id)
  100 + doc.assinaturas = $scope.documentoSelecionado.assinaturas;
  101 + });
  102 + };
  103 +
  104 + function _resetAssinar() {
  105 + $scope.autenticacao = null;
  106 + $scope.exibirIncluirAssinatura = false;
  107 + $scope.nenhumaAssinatura = false;
  108 + };
  109 +
  110 + function _atualizarDocDoProcessoAposAssinar() {
  111 + DocumentoGedRepository.get($scope.documentoSelecionado.id).then(function(result){
  112 + $scope.processo.documentos.forEach(function(doc){
  113 + if(doc.id == result.originalElement.id) {
  114 + doc.assinaturas = result.originalElement.assinaturas;
  115 + doc.tresAssinaturas = result.originalElement.tresAssinaturas;
  116 + }
  117 + });
  118 + });
93 }; 119 };
94 120
95 function _getFuncaoChecked(){ 121 function _getFuncaoChecked(){
@@ -124,4 +150,36 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren @@ -124,4 +150,36 @@ citApp.controller(&#39;AssinarDocumentoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;Geren
124 }); 150 });
125 }; 151 };
126 152
  153 + $scope.visualizarAssinatura = function(docSelecionado, assinatura){
  154 + var valorOriginal = assinatura.isVisualizarAssinatura;
  155 + if(valorOriginal)
  156 + assinatura.isVisualizarAssinatura = false;
  157 + else
  158 + DocumentoGedRepository.get(docSelecionado.id).then(function(result){
  159 + $scope.doc = result.originalElement;
  160 + $scope.documentosSelecionados.forEach(function(doc){
  161 + doc.assinaturas.forEach(function(ass){
  162 + ass.isVisualizarAssinatura = false;
  163 + });
  164 + if(doc.id == docSelecionado.id)
  165 + doc.assinaturas.forEach(function(ass){
  166 + if(ass.id != assinatura.id)
  167 + ass.isVisualizarAssinatura = false;
  168 + else
  169 + ass.isVisualizarAssinatura = valorOriginal != true;
  170 + });
  171 + });
  172 +
  173 + $scope.visualizarAssinaturaOnLine = $scope.doc.formaCriacao.codigo == 1;
  174 + });
  175 + };
  176 +
  177 + function _getTarjaAssinaturaInterna(){
  178 + $scope.tarjaAssinatura = null;
  179 + TarjaAssinaturaRepository.getTarjaAssinaturaInterna().then(function(result){
  180 + $timeout(function(){
  181 + $scope.tarjaAssinatura = result.originalElement;
  182 + });
  183 + });
  184 + };
127 }] ); 185 }] );
128 \ No newline at end of file 186 \ No newline at end of file
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoListUnidadeController.js
@@ -69,10 +69,13 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -69,10 +69,13 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
69 }; 69 };
70 70
71 $scope.obterTransclude = function() { 71 $scope.obterTransclude = function() {
  72 + $scope.setLoadingGet(true);
72 _getProcesso(); 73 _getProcesso();
73 if($scope.modelSelecionado){ 74 if($scope.modelSelecionado){
74 _getFilterCriteriaTarefa(); 75 _getFilterCriteriaTarefa();
75 _fetchBusinessProcess(); 76 _fetchBusinessProcess();
  77 + } else {
  78 + $scope.setLoading(true);
76 } 79 }
77 }; 80 };
78 81
@@ -114,8 +117,10 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -114,8 +117,10 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
114 $scope.assignments = result.originalElement.objects; 117 $scope.assignments = result.originalElement.objects;
115 if($scope.assignments.length > 0) 118 if($scope.assignments.length > 0)
116 _recuperarPermissoes($scope.assignments[0].id); 119 _recuperarPermissoes($scope.assignments[0].id);
117 - else 120 + else {
118 $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido; 121 $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  122 + $scope.setLoading(false);
  123 + }
119 }); 124 });
120 }; 125 };
121 126
@@ -126,6 +131,7 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -126,6 +131,7 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
126 $scope.btnAction = !(!$scope.workItem.execute && !$scope.workItem.suspend && !$scope.workItem.delegate && !$scope.workItem.restart && !$scope.workItem.visualize); 131 $scope.btnAction = !(!$scope.workItem.execute && !$scope.workItem.suspend && !$scope.workItem.delegate && !$scope.workItem.restart && !$scope.workItem.visualize);
127 $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido; 132 $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
128 $scope.modelSelecionado.workItem = $scope.workItem; 133 $scope.modelSelecionado.workItem = $scope.workItem;
  134 + $scope.setLoading(false);
129 }); 135 });
130 }; 136 };
131 137
cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/TarjaAssinaturaRepository.js
@@ -11,6 +11,11 @@ citApp.factory(&#39;TarjaAssinaturaRepository&#39;, [&#39;RestangularEcm&#39;, &#39;AbstractReposito @@ -11,6 +11,11 @@ citApp.factory(&#39;TarjaAssinaturaRepository&#39;, [&#39;RestangularEcm&#39;, &#39;AbstractReposito
11 this.removeImagem = function(tarjaAssinatura) { 11 this.removeImagem = function(tarjaAssinatura) {
12 return restangularEcm.all(this.route + "/removeImagem").post(tarjaAssinatura).then(); 12 return restangularEcm.all(this.route + "/removeImagem").post(tarjaAssinatura).then();
13 }; 13 };
  14 +
  15 + this.getTarjaAssinaturaInterna = function() {
  16 + return this.restangular.one(this.route + "/getTarjaAssinaturaInterna").get();
  17 + };
  18 +
14 } 19 }
15 20
16 AbstractRepository.extend(TarjaAssinaturaRepository); 21 AbstractRepository.extend(TarjaAssinaturaRepository);
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaEdit.html
@@ -28,6 +28,9 @@ @@ -28,6 +28,9 @@
28 <div class="col-sm-4" > 28 <div class="col-sm-4" >
29 <label-input ng-type="password" ng-id="autenticacao" ng-disabled="false" ng-model="$parent.autenticacao" /> 29 <label-input ng-type="password" ng-id="autenticacao" ng-disabled="false" ng-model="$parent.autenticacao" />
30 </div> 30 </div>
  31 + <div class="col-sm-7">
  32 + <div ng-include src="'/cit-ecm-web/html/assinatura/documentoBtnAssinar.html'" ng-show="exibirIncluirAssinatura"/>
  33 + </div>
31 <!-- <div class="col-sm-4" style="margin-top: 5px; !important"> --> 34 <!-- <div class="col-sm-4" style="margin-top: 5px; !important"> -->
32 <!-- <label> --> 35 <!-- <label> -->
33 <!-- <translate>ECM.LABEL.OU</translate> --> 36 <!-- <translate>ECM.LABEL.OU</translate> -->
@@ -37,4 +40,10 @@ @@ -37,4 +40,10 @@
37 <!-- <i class="glyphicon glyphicon-info-sign blue" tooltip="{{$translate.instant('ECM.LABEL.CERTIFICADO_DIGITAL')}}" style="margin-left: 5px;"></i> --> 40 <!-- <i class="glyphicon glyphicon-info-sign blue" tooltip="{{$translate.instant('ECM.LABEL.CERTIFICADO_DIGITAL')}}" style="margin-left: 5px;"></i> -->
38 <!-- </label> --> 41 <!-- </label> -->
39 <!-- </div> --> 42 <!-- </div> -->
  43 +</div>
  44 +
  45 +<div class="row">
  46 + <div class="col-sm-12">
  47 + <div ng-include src="'/cit-ecm-web/html/assinatura/documentoTarjaAssinaturaInterna.html'" ng-show="exibirIncluirAssinatura"/>
  48 + </div>
40 </div> 49 </div>
41 \ No newline at end of file 50 \ No newline at end of file
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html
@@ -2,11 +2,11 @@ @@ -2,11 +2,11 @@
2 <div class="widget-header"> 2 <div class="widget-header">
3 <h2 class="widget-title"> 3 <h2 class="widget-title">
4 <div ng-if="exibirIncluirAssinatura"> 4 <div ng-if="exibirIncluirAssinatura">
5 - <translate>ECM.LABEL.ASSINATURA_DO_DOCUMENTO</translate> : {{documentoSelecionado.numero}} 5 + <translate>ECM.LABEL.ASSINATURA_DO_DOCUMENTO</translate> : {{documentoSelecionado.tipoDocumento.nome}} - {{documentoSelecionado.numero}}
6 <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}} 6 <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}}
7 </div> 7 </div>
8 <div ng-if="!exibirIncluirAssinatura"> 8 <div ng-if="!exibirIncluirAssinatura">
9 - <translate>ECM.LABEL.ASSINATURAS_DOCUMENTO</translate> : {{documentoSelecionado.numero}} 9 + <translate>ECM.LABEL.ASSINATURAS_DOCUMENTO</translate> : {{documentoSelecionado.tipoDocumento.nome}} - {{documentoSelecionado.numero}}
10 <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}} 10 <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}}
11 </div> 11 </div>
12 </h2> 12 </h2>
@@ -29,14 +29,6 @@ @@ -29,14 +29,6 @@
29 29
30 <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturas.html'" /> 30 <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturas.html'" />
31 31
32 - <div class="row" ng-if="exibirIncluirAssinatura">  
33 - <div class="col-md-12">  
34 - <button ng-click="assinar()" title="{{$translate.instant('ECM.LABEL.ASSINAR')}}" alt="{{$translate.instant('ECM.LABEL.ASSINAR')}}" type="button" class="btn btn-sm btn-primary">  
35 - <translate>ECM.LABEL.ASSINAR</translate>  
36 - </button>  
37 - </div>  
38 - </div>  
39 -  
40 </div> 32 </div>
41 </div> 33 </div>
42 </div> 34 </div>
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html
@@ -9,10 +9,11 @@ @@ -9,10 +9,11 @@
9 <th><small><translate>LABEL.UNIDADE</translate></small></th> 9 <th><small><translate>LABEL.UNIDADE</translate></small></th>
10 <th><small><translate>ECM.LABEL.TIPO_ASSINATURA</translate></small></th> 10 <th><small><translate>ECM.LABEL.TIPO_ASSINATURA</translate></small></th>
11 <th><small><translate>ECM.LABEL.DATA_DA_ASSINATURA</translate></small></th> 11 <th><small><translate>ECM.LABEL.DATA_DA_ASSINATURA</translate></small></th>
  12 + <th></th>
12 </tr> 13 </tr>
13 </thead> 14 </thead>
14 <tbody ng-repeat="docSelecionado in documentosSelecionados"> 15 <tbody ng-repeat="docSelecionado in documentosSelecionados">
15 - <tr ng-repeat="assinatura in docSelecionado.assinaturas"> 16 + <tr ng-repeat-start="assinatura in docSelecionado.assinaturas">
16 <td> 17 <td>
17 <small>{{docSelecionado.versaoDocumento}}</small> 18 <small>{{docSelecionado.versaoDocumento}}</small>
18 </td> 19 </td>
@@ -31,11 +32,25 @@ @@ -31,11 +32,25 @@
31 <td> 32 <td>
32 <small>{{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}}</small> 33 <small>{{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}}</small>
33 </td> 34 </td>
  35 + <td class="text-center">
  36 + <button type="button" class="btn btn-success btn-sm" ng-click="visualizarAssinatura(docSelecionado, assinatura);" style="padding-top: 0px; padding-bottom: 0px; !important">
  37 + <translate ng-if="assinatura.isVisualizarAssinatura">LABEL.FECHAR</translate>
  38 + <translate ng-hide="assinatura.isVisualizarAssinatura">LABEL.VISUALIZAR</translate>
  39 + </button>
  40 + </td>
  41 + </tr>
  42 + <tr ng-repeat-end ng-show="assinatura.isVisualizarAssinatura">
  43 + <td colspan="7">
  44 + <iframe id="visualizacaoConteudoDoc" srcdoc="{{doc.conteudo}}" allowfullscreen class="iframe-assinatura" ng-if="visualizarAssinaturaOnLine"></iframe>
  45 + <div ng-hide="visualizarAssinaturaOnLine">
  46 + doc anexo
  47 + </div>
  48 + </td>
34 </tr> 49 </tr>
35 </tbody> 50 </tbody>
36 <tfoot> 51 <tfoot>
37 <tr ng-hide="nenhumaAssinatura"> 52 <tr ng-hide="nenhumaAssinatura">
38 - <td colspan="6"> 53 + <td colspan="7">
39 <strong><translate>ECM.LABEL.DOCUMENTO_SEM_ASSINATURA</translate></strong> 54 <strong><translate>ECM.LABEL.DOCUMENTO_SEM_ASSINATURA</translate></strong>
40 </td> 55 </td>
41 </tr> 56 </tr>
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeDocumentosProcesso.html
@@ -17,13 +17,15 @@ @@ -17,13 +17,15 @@
17 <div class="text ellipsis" tooltip="{{documento.assuntoComplementar}}">{{documento.assuntoComplementar}}</div> 17 <div class="text ellipsis" tooltip="{{documento.assuntoComplementar}}">{{documento.assuntoComplementar}}</div>
18 18
19 <div class="itemdiv-informacoes"> 19 <div class="itemdiv-informacoes">
20 - <span class="label label-gray" ng-show="documento.sigilo.tipoSigilo.codigo == 0 ">{{documento.sigilo.tipoSigilo.descricao}}</span> <span class="label label-danger"  
21 - ng-show="documento.sigilo.tipoSigilo.codigo == 1 ">{{documento.sigilo.tipoSigilo.descricao}}</span> <span class="label label-black" ng-show="documento.sigilo.tipoSigilo.codigo == 2 ">{{documento.sigilo.tipoSigilo.descricao}}</span>  
22 - <span class="label label-warning" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 1">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-success"  
23 - ng-show="documento.nivelAcesso.nivelAcesso.codigo == 2">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-info" ng-show="documento.origem">Anexado</span> <span  
24 - class="label label-info" ng-show="documento.assinaturas && documento.assinaturas.length > 0">Assinado</span> <span class="label label-success" ng-show="false">Habilitado</span> <span class="label label-warning" ng-show="false">Ci&#xEA;ncia</span> <span  
25 - class="label label-danger" ng-show="documento.cancelado">Cancelado</span>  
26 - 20 + <span class="label label-gray" ng-show="documento.sigilo.tipoSigilo.codigo == 0 ">{{documento.sigilo.tipoSigilo.descricao}}</span>
  21 + <span class="label label-danger" ng-show="documento.sigilo.tipoSigilo.codigo == 1 ">{{documento.sigilo.tipoSigilo.descricao}}</span>
  22 + <span class="label label-black" ng-show="documento.sigilo.tipoSigilo.codigo == 2 ">{{documento.sigilo.tipoSigilo.descricao}}</span>
  23 + <span class="label label-warning" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 1">{{documento.nivelAcesso.nivelAcesso.descricao}}</span>
  24 + <span class="label label-success" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 2">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-info" ng-show="documento.origem">Anexado</span>
  25 + <span class="label" style="background : #0000FF" tooltip="{{documento.tresAssinaturas}}"
  26 + ng-show="documento.assinaturas && documento.assinaturas.length > 0">Assinado</span>
  27 + <span class="label label-success" ng-show="false">Habilitado</span> <span class="label label-warning" ng-show="false">Ci&#xEA;ncia</span>
  28 + <span class="label label-danger" ng-show="documento.cancelado">Cancelado</span>
27 </div> 29 </div>
28 30
29 </div> 31 </div>
@@ -35,7 +37,7 @@ @@ -35,7 +37,7 @@
35 </button> 37 </button>
36 38
37 <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu"> 39 <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu">
38 - <li ng-if='!documento.cancelado && documento.status.codigo != 0'><a href="#void" ng-click="editDocument(documento, true);"><translate>LABEL.EDITAR</translate></a></li> 40 + <li ng-if='!documento.cancelado && documento.status.codigo != 0 && documento.assinaturas && documento.assinaturas.length == 0'><a href="#void" ng-click="editDocument(documento, true);"><translate>LABEL.EDITAR</translate></a></li>
39 <li ng-if='!processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click="removeDocumento(documento, $index);"><translate>LABEL.REMOVER</translate></a></li> 41 <li ng-if='!processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click="removeDocumento(documento, $index);"><translate>LABEL.REMOVER</translate></a></li>
40 <li ng-if='processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click='cancelarDocumento(documento)'> <translate>ECM.LABEL.CANCELARDOCUMENTO</translate></a></li> 42 <li ng-if='processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click='cancelarDocumento(documento)'> <translate>ECM.LABEL.CANCELARDOCUMENTO</translate></a></li>
41 <li ng-if='!documento.cancelado'><a href="#void" ng-click="visualizarVersoes(documento);"> <translate>ECM.LABEL.VERSOESDODOCUMENTO</translate></a></li> 43 <li ng-if='!documento.cancelado'><a href="#void" ng-click="visualizarVersoes(documento);"> <translate>ECM.LABEL.VERSOESDODOCUMENTO</translate></a></li>