Commit 5c520265d4bbd93bb0fc8048806e13cf34b2f8e5

Authored by rogerio.costa
1 parent b8d3017b
Exists in master

[3576] - Ajustar modelo e cadastros: Tipo de documento, tipo de processo, documento e processo.

Showing 22 changed files with 897 additions and 340 deletions   Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/CredencialProcessoDao.java
... ... @@ -95,4 +95,41 @@ public interface CredencialProcessoDao extends CitGenericDAO {
95 95 */
96 96 CredencialProcesso obterPorGrupoEProcesso(Long idProcesso, Long idGrupo);
97 97  
  98 + /**
  99 + * <p>
  100 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  101 + * </p>
  102 + *
  103 + * <p>
  104 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  105 + * </p>
  106 + *
  107 + * Método responsável por verificar se o usuario contem credencial
  108 + *
  109 + * @author rogerio.costa
  110 + *
  111 + * @param idUsuario
  112 + * @param idProcesso
  113 + * @return Boolean
  114 + */
  115 + Boolean contemCredencial(Long idUsuario, Long idProcesso);
  116 +
  117 + /**
  118 + * <p>
  119 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  120 + * </p>
  121 + *
  122 + * <p>
  123 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  124 + * </p>
  125 + *
  126 + * Método responsável por listar através do id do processo
  127 + *
  128 + * @author rogerio.costa
  129 + *
  130 + * @param idProcesso
  131 + * @return Collection<CredencialProcesso>
  132 + */
  133 + Collection<CredencialProcesso> findByIdProcesso(Long idProcesso);
  134 +
98 135 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/dao/HistoricoCredencialProcessoDao.java
... ... @@ -2,6 +2,7 @@ package br.com.centralit.api.dao;
2 2  
3 3 import java.util.Collection;
4 4  
  5 +import br.com.centralit.api.model.CredencialProcesso;
5 6 import br.com.centralit.api.model.HistoricoCredencialProcesso;
6 7 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
7 8  
... ... @@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoDao extends CitGenericDAO {
58 59 */
59 60 Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso);
60 61  
  62 + /**
  63 + * <p>
  64 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  65 + * </p>
  66 + *
  67 + * <p>
  68 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  69 + * </p>
  70 + *
  71 + * Método responsável por listar através da credencial e credenciado
  72 + *
  73 + * @author rogerio.costa
  74 + *
  75 + * @param credencialProcesso
  76 + *
  77 + * @return HistoricoCredencialProcesso
  78 + */
  79 + HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso);
  80 +
61 81 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/CredencialProcessoDaoHibernate.java
... ... @@ -175,4 +175,58 @@ public class CredencialProcessoDaoHibernate extends CitGenericDAOImpl implements
175 175 return this.searchUnique(searchSeven, persistentClass);
176 176 }
177 177  
  178 + /**
  179 + * <p>
  180 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  181 + * </p>
  182 + *
  183 + * <p>
  184 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  185 + * </p>
  186 + *
  187 + * Método responsável por verificar se o usuario contem credencial
  188 + *
  189 + * @author rogerio.costa
  190 + *
  191 + * @param idUsuario
  192 + * @param idProcesso
  193 + * @return Boolean
  194 + */
  195 + public Boolean contemCredencial(Long idUsuario, Long idProcesso) {
  196 +
  197 + SearchSeven searchSeven = new SearchSeven();
  198 +
  199 + searchSeven.addFilterEqual("processo.id", idProcesso);
  200 +
  201 + searchSeven.addFilterEqual("usuario.id", idUsuario);
  202 +
  203 + return UtilObjeto.isReferencia(this.search(searchSeven));
  204 + }
  205 +
  206 + /**
  207 + * <p>
  208 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  209 + * </p>
  210 + *
  211 + * <p>
  212 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  213 + * </p>
  214 + *
  215 + * Método responsável por listar através do id do processo
  216 + *
  217 + * @author rogerio.costa
  218 + *
  219 + * @param idProcesso
  220 + * @return Collection<CredencialProcesso>
  221 + */
  222 + public Collection<CredencialProcesso> findByIdProcesso(Long idProcesso) {
  223 +
  224 + SearchSeven searchSeven = new SearchSeven();
  225 +
  226 + searchSeven.addFilterEqual("processo.id", idProcesso);
  227 +
  228 + return this.search(searchSeven);
  229 +
  230 + }
  231 +
178 232 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/HistoricoCredencialProcessoDaoHibernate.java
... ... @@ -81,4 +81,38 @@ public class HistoricoCredencialProcessoDaoHibernate extends CitGenericDAOImpl i
81 81  
82 82 }
83 83  
  84 + /**
  85 + * <p>
  86 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  87 + * </p>
  88 + *
  89 + * <p>
  90 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  91 + * </p>
  92 + *
  93 + * Método responsável por listar através da credencial e credenciado
  94 + *
  95 + * @author rogerio.costa
  96 + *
  97 + * @param credencialProcesso
  98 + *
  99 + * @return HistoricoCredencialProcesso
  100 + */
  101 + public HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso) {
  102 +
  103 + SearchSeven searchSeven = new SearchSeven();
  104 +
  105 + searchSeven.addFilterEqual("credencialProcesso.id", credencialProcesso.getId());
  106 +
  107 + if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) {
  108 +
  109 + searchSeven.addFilterEqual("grupo.id", credencialProcesso.getGrupo().getId());
  110 + } else {
  111 +
  112 + searchSeven.addFilterEqual("usuario.id", credencialProcesso.getUsuario().getId());
  113 + }
  114 +
  115 + return this.searchUnique(searchSeven);
  116 + }
  117 +
84 118 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/model/CredencialProcesso.java
... ... @@ -10,11 +10,13 @@ import javax.persistence.GenerationType;
10 10 import javax.persistence.Id;
11 11 import javax.persistence.ManyToOne;
12 12 import javax.persistence.OneToMany;
  13 +import javax.persistence.Transient;
13 14  
14 15 import br.com.centralit.framework.json.Views;
15 16 import br.com.centralit.framework.model.Grupo;
16 17 import br.com.centralit.framework.model.Usuario;
17 18 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
  19 +import br.com.centralit.framework.util.UtilObjeto;
18 20  
19 21 import com.fasterxml.jackson.annotation.JsonView;
20 22  
... ... @@ -70,6 +72,15 @@ public class CredencialProcesso extends PersistentObjectAudit {
70 72 @JsonView({ Views.CredencialProcessoView.class })
71 73 private String icon;
72 74  
  75 + /** Atributo idTask. */
  76 + @JsonView({ Views.CredencialProcessoView.class })
  77 + private Long idTask;
  78 +
  79 + /** Atributo permiteEdicao. */
  80 + @Transient
  81 + @JsonView({ Views.CredencialProcessoView.class })
  82 + private Boolean permiteEdicao;
  83 +
73 84 /** Atributo processo. */
74 85 @ManyToOne(fetch = FetchType.LAZY)
75 86 @JsonView({ Views.CredencialProcessoView.class})
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/model/HistoricoCredencialProcesso.java
... ... @@ -14,6 +14,7 @@ import javax.persistence.TemporalType;
14 14 import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer;
15 15 import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer;
16 16 import br.com.centralit.framework.json.Views;
  17 +import br.com.centralit.framework.model.Grupo;
17 18 import br.com.centralit.framework.model.Usuario;
18 19 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
19 20 import br.com.centralit.framework.util.UtilObjeto;
... ... @@ -73,6 +74,13 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
73 74 @JsonView({ Views.HistoricoCredencialProcesso.class })
74 75 private Calendar dataDescredenciado;
75 76  
  77 + /** Atributo dataDescredenciamento. */
  78 + @Temporal(TemporalType.TIMESTAMP)
  79 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  80 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  81 + @JsonView({ Views.HistoricoCredencialProcesso.class })
  82 + private Calendar dataDescredenciamento;
  83 +
76 84 /** Atributo credencialProcesso. */
77 85 @ManyToOne(fetch = FetchType.LAZY)
78 86 @JsonView({ Views.HistoricoCredencialProcesso.class })
... ... @@ -83,6 +91,38 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
83 91 @JsonView({ Views.HistoricoCredencialProcesso.class })
84 92 private Usuario descredenciador;
85 93  
  94 + @ManyToOne(fetch = FetchType.LAZY)
  95 + @JsonView({ Views.HistoricoCredencialProcesso.class })
  96 + private Grupo grupo;
  97 +
  98 + /** Atributo usuario. */
  99 + @ManyToOne(fetch = FetchType.LAZY)
  100 + @JsonView({ Views.HistoricoCredencialProcesso.class })
  101 + private Usuario usuario;
  102 +
  103 + /**
  104 + * Responsável pela criação de novas instâncias desta classe.
  105 + */
  106 + public HistoricoCredencialProcesso() {
  107 +
  108 + super();
  109 + }
  110 +
  111 + /**
  112 + * Responsável pela criação de novas instâncias desta classe.
  113 + *
  114 + * @param dataDescredenciado
  115 + * @param credencialProcesso
  116 + * @param descredenciador
  117 + */
  118 + public HistoricoCredencialProcesso( Calendar dataDescredenciado, CredencialProcesso credencialProcesso, Usuario descredenciador ) {
  119 +
  120 + this.dataDescredenciado = dataDescredenciado;
  121 + this.credencialProcesso = credencialProcesso;
  122 + this.descredenciador = descredenciador;
  123 +
  124 + }
  125 +
86 126 /**
87 127 * Retorna o valor do atributo <code>id</code>
88 128 *
... ... @@ -163,6 +203,66 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
163 203 this.descredenciador = descredenciador;
164 204 }
165 205  
  206 + /**
  207 + * Retorna o valor do atributo <code>dataDescredenciamento</code>
  208 + *
  209 + * @return <code>Calendar</code>
  210 + */
  211 + public Calendar getDataDescredenciamento() {
  212 +
  213 + return dataDescredenciamento;
  214 + }
  215 +
  216 + /**
  217 + * Define o valor do atributo <code>dataDescredenciamento</code>.
  218 + *
  219 + * @param dataDescredenciamento
  220 + */
  221 + public void setDataDescredenciamento(Calendar dataDescredenciamento) {
  222 +
  223 + this.dataDescredenciamento = dataDescredenciamento;
  224 + }
  225 +
  226 + /**
  227 + * Retorna o valor do atributo <code>grupo</code>
  228 + *
  229 + * @return <code>Grupo</code>
  230 + */
  231 + public Grupo getGrupo() {
  232 +
  233 + return grupo;
  234 + }
  235 +
  236 + /**
  237 + * Define o valor do atributo <code>grupo</code>.
  238 + *
  239 + * @param grupo
  240 + */
  241 + public void setGrupo(Grupo grupo) {
  242 +
  243 + this.grupo = grupo;
  244 + }
  245 +
  246 + /**
  247 + * Retorna o valor do atributo <code>usuario</code>
  248 + *
  249 + * @return <code>Usuario</code>
  250 + */
  251 + public Usuario getUsuario() {
  252 +
  253 + return usuario;
  254 + }
  255 +
  256 + /**
  257 + * Define o valor do atributo <code>usuario</code>.
  258 + *
  259 + * @param usuario
  260 + */
  261 + public void setUsuario(Usuario usuario) {
  262 +
  263 + this.usuario = usuario;
  264 + }
  265 +
166 266 @JsonView({ Views.HistoricoCredencialProcesso.class })
167 267 public String getUnidadeUsuarioCredenciado() {
168 268  
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
... ... @@ -143,7 +143,7 @@ public class Processo extends PersistentObjectUnidade {
143 143 @ManyToOne(fetch = FetchType.LAZY)
144 144 @JsonView({ Views.ProcessoList.class })
145 145 private NivelAcessoTipoProcesso nivelAcesso;
146   -
  146 +
147 147 @ManyToOne(fetch = FetchType.LAZY)
148 148 @JsonView({ Views.ProcessoList.class })
149 149 private NivelAcessoTipoProcesso nivelAcessoOriginal;
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java
... ... @@ -70,9 +70,6 @@ public class TipoProcesso extends PersistentObjectUnidade {
70 70 @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoList.class, Views.ProcessoRelacionadoList.class })
71 71 private String nome;
72 72  
73   - @Field
74   - private String name;
75   -
76 73 /** Atributo nome. */
77 74 @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoEdit.class })
78 75 private String processoNegocio;
... ... @@ -207,24 +204,4 @@ public class TipoProcesso extends PersistentObjectUnidade {
207 204 this.processoNegocio = processoNegocio;
208 205 }
209 206  
210   - /**
211   - * Retorna o valor do atributo <code>name</code>
212   - *
213   - * @return <code>String</code>
214   - */
215   - public String getName() {
216   -
217   - return name;
218   - }
219   -
220   - /**
221   - * Define o valor do atributo <code>name</code>.
222   - *
223   - * @param name
224   - */
225   - public void setName(String name) {
226   -
227   - this.name = name;
228   - }
229   -
230 207 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java
... ... @@ -4,7 +4,6 @@ import java.util.Collection;
4 4  
5 5 import br.com.centralit.api.model.CredencialProcesso;
6 6 import br.com.centralit.api.model.Processo;
7   -import br.com.centralit.api.viewHelper.CredencialUsuarioVH;
8 7 import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
9 8 import br.com.centralit.api.viewHelper.HerancaSistemaVH;
10 9 import br.com.centralit.framework.service.arquitetura.GenericService;
... ... @@ -123,14 +122,82 @@ public interface CredencialProcessoService extends GenericService&lt;CredencialProc
123 122 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
124 123 * </p>
125 124 *
126   - * Método responsável por montar um objeto com a credencial do usuario com base nas funcionalidades do sistema
  125 + * Método responsável por verificar se o usuario tem permissão para credenciar
  126 + *
  127 + * @author rogerio.costa
  128 + *
  129 + */
  130 + Boolean isCredenciar(Long idProcesso);
  131 +
  132 + /**
  133 + * <p>
  134 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  135 + * </p>
  136 + *
  137 + * <p>
  138 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  139 + * </p>
  140 + *
  141 + * Método responsável por verificar se o usuario logado não é o criador do processo, e se contem uma credencial para o mesmo
  142 + *
  143 + * @author rogerio.costa
  144 + *
  145 + * @param idProcesso
  146 + * @return boolean
  147 + */
  148 + Boolean permiteRenunciar(Long idProcesso);
  149 +
  150 + /**
  151 + * <p>
  152 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  153 + * </p>
  154 + *
  155 + * <p>
  156 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  157 + * </p>
  158 + *
  159 + * Método responsável por renunciar credencial.
127 160 *
128 161 * @author rogerio.costa
129 162 *
130 163 * @param idProcesso
  164 + */
  165 + Boolean renunciar(Long idProcesso);
  166 +
  167 + /**
  168 + * <p>
  169 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  170 + * </p>
131 171 *
132   - * @return CredencialUsuarioVH
  172 + * <p>
  173 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  174 + * </p>
  175 + *
  176 + * Método responsável por listar através do id do processo
  177 + *
  178 + * @author rogerio.costa
  179 + *
  180 + * @param idProcesso
  181 + * @return Collection<CredencialProcesso>
  182 + */
  183 + Collection<CredencialProcesso> findByIdProcesso(Long id);
  184 +
  185 + /**
  186 + * <p>
  187 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  188 + * </p>
  189 + *
  190 + * <p>
  191 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  192 + * </p>
  193 + *
  194 + * Método responsável por verificar se o usuarioLogado tem permissão no processo
  195 + *
  196 + * @author rogerio.costa
  197 + *
  198 + * @param idProcesso
  199 + * @return boolean
133 200 */
134   - CredencialUsuarioVH obterCredencialUsuarioLogado(Long idProcesso);
  201 + boolean contemPermissaoProcesso(Long idProcesso);
135 202  
136 203 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/HistoricoCredencialProcessoService.java
... ... @@ -2,6 +2,7 @@ package br.com.centralit.api.service;
2 2  
3 3 import java.util.Collection;
4 4  
  5 +import br.com.centralit.api.model.CredencialProcesso;
5 6 import br.com.centralit.api.model.HistoricoCredencialProcesso;
6 7 import br.com.centralit.framework.service.arquitetura.GenericService;
7 8  
... ... @@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoService extends GenericService&lt;Histo
58 59 */
59 60 Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso);
60 61  
  62 + /**
  63 + * <p>
  64 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  65 + * </p>
  66 + *
  67 + * <p>
  68 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  69 + * </p>
  70 + *
  71 + * Método responsável por listar através da credencial e credenciado
  72 + *
  73 + * @author rogerio.costa
  74 + *
  75 + * @param credencialProcesso
  76 + *
  77 + * @return HistoricoCredencialProcesso
  78 + */
  79 + HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso);
  80 +
61 81 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java
1 1 package br.com.centralit.api.service.impl;
2 2  
3   -import java.util.ArrayList;
4 3 import java.util.Collection;
5   -import java.util.HashMap;
6 4 import java.util.LinkedList;
7 5 import java.util.List;
8   -import java.util.Map;
9 6  
10   -import org.json.JSONObject;
11 7 import org.springframework.beans.factory.annotation.Autowired;
12 8 import org.springframework.stereotype.Service;
13 9  
... ... @@ -23,11 +19,8 @@ import br.com.centralit.api.service.HistoricoCredencialProcessoService;
23 19 import br.com.centralit.api.service.ProcessoService;
24 20 import br.com.centralit.api.service.SigiloService;
25 21 import br.com.centralit.api.service.UsuarioService;
26   -import br.com.centralit.api.viewHelper.CredencialUsuarioVH;
27 22 import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
28 23 import br.com.centralit.api.viewHelper.HerancaSistemaVH;
29   -import br.com.centralit.framework.esi.enumerated.VariableTypeEnum;
30   -import br.com.centralit.framework.esi.environment.EnvironmentVariable;
31 24 import br.com.centralit.framework.exception.BusinessException;
32 25 import br.com.centralit.framework.exception.CodigoErro;
33 26 import br.com.centralit.framework.model.Grupo;
... ... @@ -95,8 +88,12 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
95 88 @Autowired
96 89 private SigiloService sigiloService;
97 90  
98   - /** Atributo historicos. */
99   - private Collection<HistoricoCredencialProcesso> historicos;
  91 + /**
  92 + * Responsável pela criação de novas instâncias desta classe.
  93 + *
  94 + * @param credencialProcessoDao
  95 + */
  96 + private static final String SEM_PERMISSAO_OPERACAO = "ECM.VALIDACAO.PERMISSAO_OPERACAO";
100 97  
101 98 /**
102 99 * Responsável pela criação de novas instâncias desta classe.
... ... @@ -131,9 +128,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
131 128 @Override
132 129 public Collection<CredencialProcesso> save(Collection<CredencialProcesso> credenciais) {
133 130  
134   - this.resolveTransiente(credenciais);
  131 + this.resolveTransiente((List<CredencialProcesso>) credenciais);
135 132  
136   - return super.saveList((List<CredencialProcesso>) credenciais);
  133 + credenciais = super.saveList((List<CredencialProcesso>) credenciais);
  134 +
  135 + return this.montarPermissaoEdicao(credenciais);
137 136  
138 137 }
139 138  
... ... @@ -176,52 +175,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
176 175 }
177 176 // Gera a credencial do usuario que crio o processo
178 177 super.save(new CredencialProcesso(processo, getUsuario()));
179   -
180   -
181   - }
182   -
183   - }
184   -
185   - /**
186   - * <p>
187   - * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
188   - * </p>
189   - *
190   - * <p>
191   - * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
192   - * </p>
193   - *
194   - * Método responsável por startar o BusinessProcess do tipo sigiloso
195   - *
196   - * @author rogerio.costa
197   - *
198   - * @param processo
199   - */
200   - private void startBusinessProcessSigiloso(Processo processo, Grupo grupoPadrao) {
201   -
202   - final List<EnvironmentVariable> variaveis = new ArrayList<EnvironmentVariable>();
203   -
204   - final Map<String, Object> mapProcesso = new HashMap<String, Object>();
205   -
206   - mapProcesso.put("nivelAcesso", processo.getNivelAcesso().getNivelAcesso().getDescricao());
207   - mapProcesso.put("nup", processo.getNup());
208   - mapProcesso.put("assunto", processo.getAssunto().getCodigo() + '/' + processo.getAssunto().getNome());
209   - final JSONObject processoJSON = new JSONObject(mapProcesso);
210   -
211   - variaveis.add(new EnvironmentVariable("idProcesso", VariableTypeEnum.LONG, processo.getId(), false));
212   - variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false));
213   - variaveis.add(new EnvironmentVariable("nup", VariableTypeEnum.JSON, processo.getNup(), false));
214 178  
215   - variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, grupoPadrao.getSigla(), false));
216   -
217   - variaveis.add(new EnvironmentVariable("processoSIGAD", VariableTypeEnum.JSON, processoJSON, false));
218   -
219   - if (processo.getTipoProcesso().getProcessoNegocio() == null) {
220   - // O processo deverá estar vinculado a um fluxo no BPE/ESI
221   - throw new BusinessException("ECM.VALIDACAO.ERRO_VINCULO_FLUXO_BPE_ESI", CodigoErro.REGRA_NEGOCIO.getValue());
222 179 }
223 180  
224   - this.startBusinessProcess(processo.getTipoProcesso().getProcessoNegocio(), variaveis);
225 181 }
226 182  
227 183 /**
... ... @@ -266,9 +222,10 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
266 222 *
267 223 * @param credenciais
268 224 */
269   - private void resolveTransiente(Collection<CredencialProcesso> credenciais) {
  225 + private void resolveTransiente(List<CredencialProcesso> credenciais) {
270 226  
271   - this.historicos = new LinkedList<HistoricoCredencialProcesso>();
  227 + List<String> grupos = new LinkedList<String>();
  228 + List<String> usuarios = new LinkedList<String>();
272 229  
273 230 for (CredencialProcesso credencialProcesso : credenciais) {
274 231  
... ... @@ -277,9 +234,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
277 234 if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) {
278 235  
279 236 credencialProcesso.setGrupo(this.grupoService.getReference(credencialProcesso.getGrupo().getId()));
  237 + grupos.add(credencialProcesso.getGrupo().getSigla());
280 238 } else {
281 239  
282 240 credencialProcesso.setUsuario(this.usuarioService.find(credencialProcesso.getUsuario().getId()));
  241 + usuarios.add(credencialProcesso.getUsuario().getUsername());
283 242  
284 243 }
285 244 // Verifica se a credencial é nova, caso seja cria um histórico
... ... @@ -287,8 +246,39 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
287 246  
288 247 credencialProcesso.setHistoricoCredencialProcessos(new LinkedList<HistoricoCredencialProcesso>());
289 248 credencialProcesso.getHistoricoCredencialProcessos().add(this.addHistorico(credencialProcesso));
  249 + // Delega o processo para os grupos e usuario credenciados
  250 + this.delegateUserTask(credencialProcesso.getIdTask(), grupos, usuarios);
290 251 }
291 252 }
  253 +
  254 + }
  255 +
  256 + /**
  257 + * <p>
  258 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  259 + * </p>
  260 + *
  261 + * <p>
  262 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  263 + * </p>
  264 + *
  265 + * Método responsável por verificar se o usuario logado não é o criador do processo, e se contem uma credencial para o mesmo
  266 + *
  267 + * @author rogerio.costa
  268 + *
  269 + * @param idProcesso
  270 + * @return boolean
  271 + */
  272 + public Boolean permiteRenunciar(Long idProcesso) {
  273 +
  274 + Processo processo = this.processoService.getReference(idProcesso);
  275 +
  276 + if (!this.getUsuario().getId().equals(processo.getAutor().getId())) {
  277 +
  278 + return this.credencialProcessoDao.contemCredencial(this.getUsuario().getId(), idProcesso);
  279 + }
  280 +
  281 + return Boolean.FALSE;
292 282 }
293 283  
294 284 /**
... ... @@ -313,6 +303,13 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
313 303  
314 304 historicoCredencialProcesso.setCredencialProcesso(credencialProcesso);
315 305  
  306 + if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) {
  307 +
  308 + historicoCredencialProcesso.setGrupo(credencialProcesso.getGrupo());
  309 + } else {
  310 + historicoCredencialProcesso.setUsuario(credencialProcesso.getUsuario());
  311 + }
  312 +
316 313 return historicoCredencialProcesso;
317 314 }
318 315  
... ... @@ -321,10 +318,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
321 318  
322 319 CredencialProcesso credencialProcesso = this.getReference(id);
323 320  
324   - credencialProcesso.setProcessoRemocao(credencialProcesso.getProcesso());
325   - credencialProcesso.setProcesso(null);
  321 + this.validarPermissaoRemover(credencialProcesso);
326 322  
327   - this.saveHistoricoDescredenciado(credencialProcesso);
  323 + this.executarAcoesRemocao(credencialProcesso);
328 324  
329 325 return super.removeById(id);
330 326 }
... ... @@ -338,6 +334,87 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
338 334 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
339 335 * </p>
340 336 *
  337 + * Método responsável por validar a permissão
  338 + *
  339 + * @author rogerio.costa
  340 + *
  341 + * @param credencialProcesso
  342 + */
  343 + private void validarPermissaoRemover(CredencialProcesso credencialProcesso) {
  344 +
  345 + if (!credencialProcesso.getAutor().getId().equals(this.getUsuario().getId()) && !this.contemPermissaoHerdada(credencialProcesso.getProcesso().getSigilo())) {
  346 +
  347 + throw new BusinessException(SEM_PERMISSAO_OPERACAO, CodigoErro.REGRA_NEGOCIO.getValue());
  348 +
  349 + }
  350 + }
  351 +
  352 + /**
  353 + * <p>
  354 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  355 + * </p>
  356 + *
  357 + * <p>
  358 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  359 + * </p>
  360 + *
  361 + * Método responsável por executar ações da remoção
  362 + *
  363 + * @author rogerio.costa
  364 + *
  365 + * @param credencialProcesso
  366 + */
  367 + private void executarAcoesRemocao(CredencialProcesso credencialProcesso) {
  368 +
  369 + this.removeDelegacao(credencialProcesso);
  370 + Processo processo = this.processoService.getReference(credencialProcesso.getProcesso().getId());
  371 + credencialProcesso.setProcessoRemocao(processo);
  372 + credencialProcesso.setProcesso(null);
  373 + this.saveHistoricoDescredenciado(credencialProcesso);
  374 + }
  375 +
  376 + /**
  377 + * <p>
  378 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  379 + * </p>
  380 + *
  381 + * <p>
  382 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  383 + * </p>
  384 + *
  385 + * Método responsável por remover a delegação do grupo/usuario no processo
  386 + *
  387 + * @author rogerio.costa
  388 + *
  389 + * @param credencialProcesso
  390 + */
  391 + private void removeDelegacao(CredencialProcesso credencialProcesso) {
  392 +
  393 + List<String> listGrupoUsuarioRemocao = new LinkedList<String>();
  394 +
  395 + if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) {
  396 +
  397 + listGrupoUsuarioRemocao.add(credencialProcesso.getGrupo().getSigla());
  398 +
  399 + this.removeUserTaskDelegation(credencialProcesso.getIdTask(), listGrupoUsuarioRemocao, null);
  400 + } else {
  401 +
  402 + listGrupoUsuarioRemocao.add(credencialProcesso.getUsuario().getUsername());
  403 +
  404 + this.removeUserTaskDelegation(credencialProcesso.getIdTask(), null, listGrupoUsuarioRemocao);
  405 +
  406 + }
  407 + }
  408 +
  409 + /**
  410 + * <p>
  411 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  412 + * </p>
  413 + *
  414 + * <p>
  415 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  416 + * </p>
  417 + *
341 418 * Método responsável por salvar o histórico do descredenciamento
342 419 *
343 420 * @author rogerio.costa
... ... @@ -346,10 +423,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
346 423 */
347 424 private void saveHistoricoDescredenciado(CredencialProcesso credencialProcesso) {
348 425  
349   - HistoricoCredencialProcesso historicoCredencialProcesso = new HistoricoCredencialProcesso();
  426 + HistoricoCredencialProcesso historicoCredencialProcesso = this.historicoCredencialProcessoService.findByCredencialAndCredenciado(credencialProcesso);
350 427  
351 428 historicoCredencialProcesso.setDataDescredenciado(UtilDate.getDataAtualCalendar());
352   - historicoCredencialProcesso.setCredencialProcesso(credencialProcesso);
353 429 historicoCredencialProcesso.setDescredenciador(getUsuario());
354 430  
355 431 this.historicoCredencialProcessoService.save(historicoCredencialProcesso);
... ... @@ -364,6 +440,30 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
364 440 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
365 441 * </p>
366 442 *
  443 + * Método responsável por renunciar credencial.
  444 + *
  445 + * @author rogerio.costa
  446 + *
  447 + * @param idProcesso
  448 + */
  449 + public Boolean renunciar(Long idProcesso) {
  450 +
  451 + CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId());
  452 +
  453 + this.executarAcoesRemocao(credencialProcesso);
  454 +
  455 + return super.removeById(credencialProcesso.getId());
  456 + }
  457 +
  458 + /**
  459 + * <p>
  460 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  461 + * </p>
  462 + *
  463 + * <p>
  464 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  465 + * </p>
  466 + *
367 467 * Método responsável por listar grupo e usuarios que tem credenciais herdadas do sistema.
368 468 *
369 469 * @author rogerio.costa
... ... @@ -388,11 +488,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
388 488  
389 489 for (Grupo grupo : grupos) {
390 490  
391   - herancaList.add(new HerancaSistemaVH(grupo.getNome(), "-"));
  491 + herancaList.add(new HerancaSistemaVH(grupo.getId(), grupo.getNome(), "-"));
392 492 }
393 493 }
394 494  
395   - herancaList.add(new HerancaSistemaVH(processo.getAutor().getUsername(), UtilObjeto.isReferencia(processo.getAutor().getUnidade()) ? processo.getAutor().getUnidade().getNome() : "-"));
  495 + herancaList.add(new HerancaSistemaVH(processo.getAutor().getId(), processo.getAutor().getUsername(), UtilObjeto.isReferencia(processo.getAutor().getUnidade()) ? processo.getAutor().getUnidade().getNome() : "-"));
396 496 }
397 497  
398 498 return herancaList;
... ... @@ -433,60 +533,142 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
433 533 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
434 534 * </p>
435 535 *
436   - * Método responsável por montar um objeto com a credencial do usuario com base nas funcionalidades do sistema
  536 + * Método responsável por verificar se o usuarioLogado tem permissão herdadas do sistema para o sigilo
437 537 *
438 538 * @author rogerio.costa
439 539 *
440   - * @param idProcesso
  540 + * @param sigilo
  541 + */
  542 + public Boolean contemPermissaoHerdada(Sigilo sigilo) {
  543 +
  544 + Collection<Grupo> gruposHerdados = this.findGrupoPorSigilo(sigilo);
  545 +
  546 + for (Grupo grupo : gruposHerdados) {
  547 +
  548 + if (contemUsuarioLogadoNoGrupo(grupo))
  549 +
  550 + return Boolean.TRUE;
  551 +
  552 + }
  553 +
  554 + return Boolean.FALSE;
  555 + }
  556 +
  557 + /**
  558 + * <p>
  559 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  560 + * </p>
  561 + *
  562 + * <p>
  563 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  564 + * </p>
  565 + *
  566 + * Método responsável por verificar se o usuario logado está alocado no grupo
  567 + *
  568 + * @author rogerio.costa
441 569 *
442   - * @return CredencialUsuarioVH
  570 + * @param grupo
  571 + *
  572 + * @return Boolean
443 573 */
444   - public CredencialUsuarioVH obterCredencialUsuarioLogado(Long idProcesso) {
  574 + private Boolean contemUsuarioLogadoNoGrupo(Grupo grupo) {
445 575  
446   - CredencialUsuarioVH credencialUsuarioVH = new CredencialUsuarioVH();
  576 + for (GrupoUsuario grupoUsuario : grupo.getGrupoUsuarios()) {
447 577  
448   - Processo processo = this.processoService.getReference(idProcesso);
  578 + if (grupoUsuario.getUsuario().getId().equals(this.getUsuario().getId())) {
449 579  
450   - Sigilo sigilo = this.sigiloService.getReference(processo.getSigilo().getId());
  580 + return Boolean.TRUE;
451 581  
452   - // valida de se o usuario logado é autor do processo
453   - if (processo.getAutor().getId().equals(this.getUsuario().getId())) {
  582 + }
  583 + }
454 584  
455   - credencialUsuarioVH.setPermiteAtribuirCredencial(Boolean.TRUE);
456   - credencialUsuarioVH.setPermiteRemoverCredencial(Boolean.FALSE);
  585 + return Boolean.FALSE;
  586 + }
457 587  
458   - } else {
  588 + /**
  589 + * <p>
  590 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  591 + * </p>
  592 + *
  593 + * <p>
  594 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  595 + * </p>
  596 + *
  597 + * Método responsável por listar grupos e usuarios do sistema
  598 + *
  599 + * @author rogerio.costa
  600 + *
  601 + * @return Collection<GrupoUsuarioVH>
  602 + */
  603 + @Override
  604 + public Collection<GrupoUsuarioVH> findGrupoUsuarioByName(String nome) {
  605 +
  606 + return this.credencialProcessoDao.findGrupoUsuarioByName(nome);
  607 + }
  608 +
  609 + /**
  610 + * <p>
  611 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  612 + * </p>
  613 + *
  614 + * <p>
  615 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  616 + * </p>
  617 + *
  618 + * Método responsável por verificar se o usuario tem permissão para credenciar
  619 + *
  620 + * @author rogerio.costa
  621 + *
  622 + */
  623 + @Override
  624 + public Boolean isCredenciar(Long idProcesso) {
  625 +
  626 + Processo processo = this.processoService.getReference(idProcesso);
  627 +
  628 + if (UtilObjeto.isReferencia(processo.getSigilo())) {
459 629  
460   - CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId());
  630 + Sigilo sigilo = this.sigiloService.getReference(processo.getSigilo().getId());
461 631  
462   - // Verifica se o usuario contem credencial no processo.
463   - if (UtilObjeto.isReferencia(credencialProcesso)) {
  632 + // valida de se o usuario logado é autor do processo
  633 + if (processo.getAutor().getId().equals(this.getUsuario().getId())) {
464 634  
465   - credencialUsuarioVH.setPermiteAtribuirCredencial(credencialProcesso.getPermiteCredenciar());
466   - credencialUsuarioVH.setId(credencialProcesso.getId());
467   - // Verifica se o usuario tem permissão herdada.
468   - } else if (contemPermissaoHerdada(sigilo)) {
  635 + return Boolean.TRUE;
469 636  
470   - credencialUsuarioVH.setPermiteAtribuirCredencial(Boolean.TRUE);
471   - credencialUsuarioVH.setPermiteRemoverCredencial(Boolean.TRUE);
472 637 } else {
473   - // Verifica as credenciais vinculadas no processo
474   - for (CredencialProcesso credencialProcessoVinculada : processo.getCredenciais()) {
475 638  
476   - if (UtilObjeto.isReferencia(credencialProcessoVinculada.getGrupo())) {
  639 + CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId());
477 640  
478   - Grupo grupo = this.grupoService.getReference(credencialProcessoVinculada.getGrupo().getId());
  641 + // Verifica se o usuario contem credencial no processo.
  642 + if (UtilObjeto.isReferencia(credencialProcesso)) {
479 643  
480   - if (this.contemUsuarioLogadoNoGrupo(grupo)) {
  644 + return credencialProcesso.getPermiteCredenciar();
  645 +
  646 + // Verifica se o usuario tem permissão herdada.
  647 + } else if (contemPermissaoHerdada(sigilo)) {
  648 +
  649 + return Boolean.TRUE;
  650 +
  651 + } else {
  652 + // Verifica as credenciais vinculadas no processo
  653 + for (CredencialProcesso credencialProcessoVinculada : processo.getCredenciais()) {
481 654  
482   - credencialUsuarioVH.setPermiteAtribuirCredencial(credencialProcessoVinculada.getPermiteCredenciar());
  655 + if (UtilObjeto.isReferencia(credencialProcessoVinculada.getGrupo())) {
  656 +
  657 + Grupo grupo = this.grupoService.getReference(credencialProcessoVinculada.getGrupo().getId());
  658 +
  659 + if (this.contemUsuarioLogadoNoGrupo(grupo)) {
  660 +
  661 + return credencialProcessoVinculada.getPermiteCredenciar();
  662 + }
483 663 }
484 664 }
  665 +
485 666 }
486 667  
487 668 }
488 669 }
489   - return credencialUsuarioVH;
  670 +
  671 + return Boolean.FALSE;
490 672 }
491 673  
492 674 /**
... ... @@ -498,25 +680,19 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
498 680 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
499 681 * </p>
500 682 *
501   - * Método responsável por verificar se o usuarioLogado tem permissão herdadas do sistema para o sigilo
  683 + * Método responsável por listar através do id do processo
502 684 *
503 685 * @author rogerio.costa
504 686 *
505   - * @param sigilo
  687 + * @param idProcesso
  688 + * @return Collection<CredencialProcesso>
506 689 */
507   - private Boolean contemPermissaoHerdada(Sigilo sigilo) {
  690 + public Collection<CredencialProcesso> findByIdProcesso(Long id) {
508 691  
509   - Collection<Grupo> gruposHerdados = this.findGrupoPorSigilo(sigilo);
510   -
511   - for (Grupo grupo : gruposHerdados) {
512   -
513   - if (contemUsuarioLogadoNoGrupo(grupo))
  692 + Collection<CredencialProcesso> credenciais = this.credencialProcessoDao.findByIdProcesso(id);
514 693  
515   - return Boolean.TRUE;
516   -
517   - }
  694 + return this.montarPermissaoEdicao(credenciais);
518 695  
519   - return Boolean.FALSE;
520 696 }
521 697  
522 698 /**
... ... @@ -528,26 +704,24 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
528 704 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
529 705 * </p>
530 706 *
531   - * Método responsável por verificar se o usuario logado está alocado no grupo
  707 + * Método responsável por montar a parmissão de edição do usuarioLogado
532 708 *
533 709 * @author rogerio.costa
534 710 *
535   - * @param grupo
536   - *
537   - * @return Boolean
  711 + * @param credenciais
  712 + * @return
538 713 */
539   - private Boolean contemUsuarioLogadoNoGrupo(Grupo grupo) {
540   -
541   - for (GrupoUsuario grupoUsuario : grupo.getGrupoUsuarios()) {
  714 + private Collection<CredencialProcesso> montarPermissaoEdicao(Collection<CredencialProcesso> credenciais) {
542 715  
543   - if (grupoUsuario.getUsuario().getId().equals(this.getUsuario().getId())) {
  716 + if (!UtilColecao.isVazio(credenciais)) {
544 717  
545   - return Boolean.TRUE;
  718 + for (CredencialProcesso credencialProcesso : credenciais) {
546 719  
  720 + credencialProcesso.setPermiteEdicao(credencialProcesso.getAutor().getId().equals(this.getUsuario().getId()) || this.contemPermissaoHerdada(credencialProcesso.getProcesso().getSigilo()));
547 721 }
548   - }
549 722  
550   - return Boolean.FALSE;
  723 + }
  724 + return credenciais;
551 725 }
552 726  
553 727 /**
... ... @@ -559,16 +733,55 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
559 733 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
560 734 * </p>
561 735 *
562   - * Método responsável por listar grupos e usuarios do sistema
  736 + * Método responsável por verificar se o usuarioLogado tem permissão no processo
563 737 *
564 738 * @author rogerio.costa
565 739 *
566   - * @return Collection<GrupoUsuarioVH>
  740 + * @param idProcesso
  741 + * @return boolean
567 742 */
568 743 @Override
569   - public Collection<GrupoUsuarioVH> findGrupoUsuarioByName(String nome) {
  744 + public boolean contemPermissaoProcesso(Long idProcesso) {
570 745  
571   - return this.credencialProcessoDao.findGrupoUsuarioByName(nome);
  746 + if (UtilObjeto.isReferencia(idProcesso)) {
  747 +
  748 + Processo processo = this.processoService.getReference(idProcesso);
  749 +
  750 + if (UtilObjeto.isReferencia(processo.getSigilo())) {
  751 +
  752 + CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId());
  753 +
  754 + if (UtilObjeto.isReferencia(credencialProcesso)) {
  755 +
  756 + return Boolean.TRUE;
  757 + }
  758 +
  759 + Sigilo sigilo = this.sigiloService.getReference(processo.getSigilo().getId());
  760 +
  761 + if (contemPermissaoHerdada(sigilo)) {
  762 +
  763 + return Boolean.TRUE;
  764 + }
  765 +
  766 + // Verifica as credenciais vinculadas no processo
  767 + for (CredencialProcesso credencialProcessoVinculada : processo.getCredenciais()) {
  768 +
  769 + if (UtilObjeto.isReferencia(credencialProcessoVinculada.getGrupo())) {
  770 +
  771 + Grupo grupo = this.grupoService.getReference(credencialProcessoVinculada.getGrupo().getId());
  772 +
  773 + if (this.contemUsuarioLogadoNoGrupo(grupo)) {
  774 +
  775 + return Boolean.TRUE;
  776 + }
  777 + }
  778 + }
  779 +
  780 + }
  781 +
  782 + }
  783 +
  784 + return Boolean.FALSE;
572 785 }
573 786  
574 787 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java
... ... @@ -775,9 +775,8 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
775 775  
776 776 if (!UtilColecao.isVazio(listaDocumentos)) {
777 777 for (DocumentoGed documento : listaDocumentos) {
778   - DocumentoGed entity = (DocumentoGed) this.documentoGedDao.getReference(documento.getId());
779   - if (documento.getNivelAcesso() == null) {
780   - entity.setAprovado(Boolean.TRUE);
  778 + if (documento.getSigilo() == null) {
  779 + documento.setAprovado(Boolean.TRUE);
781 780 }
782 781  
783 782  
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/HistoricoCredencialProcessoServiceImpl.java
... ... @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
6 6 import org.springframework.stereotype.Service;
7 7  
8 8 import br.com.centralit.api.dao.HistoricoCredencialProcessoDao;
  9 +import br.com.centralit.api.model.CredencialProcesso;
9 10 import br.com.centralit.api.model.HistoricoCredencialProcesso;
10 11 import br.com.centralit.api.service.HistoricoCredencialProcessoService;
11 12 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
... ... @@ -76,9 +77,31 @@ public class HistoricoCredencialProcessoServiceImpl extends GenericServiceImpl&lt;H
76 77 *
77 78 * @return Collection<HistoricoCredencialProcesso>
78 79 */
79   - public Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso){
80   -
  80 + public Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso) {
  81 +
81 82 return this.historicoCredencialProcessoDao.findByIdProcessoAndIdProcessoRemocao(idProcesso);
82 83 }
83 84  
  85 + /**
  86 + * <p>
  87 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  88 + * </p>
  89 + *
  90 + * <p>
  91 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  92 + * </p>
  93 + *
  94 + * Método responsável por listar através da credencial e credenciado
  95 + *
  96 + * @author rogerio.costa
  97 + *
  98 + * @param credencialProcesso
  99 + *
  100 + * @return HistoricoCredencialProcesso
  101 + */
  102 + public HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso) {
  103 +
  104 + return this.historicoCredencialProcessoDao.findByCredencialAndCredenciado(credencialProcesso);
  105 + }
  106 +
84 107 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
... ... @@ -6,9 +6,12 @@ import java.util.Calendar;
6 6 import java.util.Collection;
7 7 import java.util.GregorianCalendar;
8 8 import java.util.HashMap;
  9 +import java.util.LinkedList;
9 10 import java.util.List;
10 11 import java.util.Map;
11 12  
  13 +import javax.servlet.http.HttpServletRequest;
  14 +
12 15 import org.apache.commons.lang.StringUtils;
13 16 import org.json.JSONObject;
14 17 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -22,6 +25,8 @@ import br.com.centralit.api.model.EstruturaOrganizacionalECM;
22 25 import br.com.centralit.api.model.InteressadoProcesso;
23 26 import br.com.centralit.api.model.PlanoClassificacao;
24 27 import br.com.centralit.api.model.Processo;
  28 +import br.com.centralit.api.model.Sigilo;
  29 +import br.com.centralit.api.model.SigiloPrivilegio;
25 30 import br.com.centralit.api.model.Temporalidade;
26 31 import br.com.centralit.api.model.UnidadeProcesso;
27 32 import br.com.centralit.api.service.CredencialProcessoService;
... ... @@ -40,6 +45,7 @@ import br.com.centralit.framework.esi.environment.EnvironmentOutput;
40 45 import br.com.centralit.framework.esi.environment.EnvironmentVariable;
41 46 import br.com.centralit.framework.exception.BusinessException;
42 47 import br.com.centralit.framework.exception.CodigoErro;
  48 +import br.com.centralit.framework.model.Grupo;
43 49 import br.com.centralit.framework.model.Unidade;
44 50 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
45 51 import br.com.centralit.framework.util.UtilColecao;
... ... @@ -123,6 +129,10 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
123 129 @Autowired
124 130 private CredencialProcessoService credencialProcessoService;
125 131  
  132 + /** Atributo request. */
  133 + @Autowired
  134 + private HttpServletRequest request;
  135 +
126 136 @Autowired
127 137 public ProcessoServiceImpl( final ProcessoDao processoDao, @Qualifier("processoValidator") final Validator validator ) {
128 138  
... ... @@ -142,7 +152,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
142 152  
143 153 final Processo processo = super.save(entity);
144 154  
145   - /* this.gerarCredenciais(processo); */
  155 +// this.credencialProcessoService.saveCredenciais(processo);
146 156  
147 157 if (processo.getTipoProtocolo().getCodigo().equals(1L)) {
148 158 this.gerarNUP(processo);
... ... @@ -274,11 +284,23 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
274 284 final JSONObject processoJSON = new JSONObject(mapProcesso);
275 285  
276 286 variaveis.add(new EnvironmentVariable("idProcesso", VariableTypeEnum.LONG, processo.getId(), false));
277   - variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false));
278 287 variaveis.add(new EnvironmentVariable("nup", VariableTypeEnum.JSON, processo.getNup(), false));
  288 + variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false));
  289 +
  290 + // Verifica se o processo é sigiloso.
  291 + if (UtilObjeto.isReferencia(processo.getSigilo())) {
279 292  
280   - // Verifica se foi configurado um grupo padrão para unidade o usuario.
281   - if (UtilObjeto.isReferencia(unidade.getGrupo())) {
  293 + variaveis.add(new EnvironmentVariable("usuario_criador_processo_sigiloso", VariableTypeEnum.JSON, processo.getAutor().getUsername(), false));
  294 +
  295 + List<Grupo> gruposPadraoSigilo = (List<Grupo>) this.findGrupoPorSigilo(processo.getSigilo());
  296 +
  297 + if (!UtilColecao.isVazio(gruposPadraoSigilo)) {
  298 + //No momento o sistema está aceitando somente um grupo para gerenciar cada nivel de sigilo.
  299 + variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, gruposPadraoSigilo.get(0).getSigla(), false));
  300 + }
  301 +
  302 + // Verifica se foi configurado um grupo padrão para unidade o usuario.
  303 + } else if (UtilObjeto.isReferencia(unidade.getGrupo())) {
282 304  
283 305 variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, unidade.getGrupo().getSigla(), false));
284 306 } else {
... ... @@ -306,6 +328,59 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
306 328 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
307 329 * </p>
308 330 *
  331 + * Método responsável por retornar os privilegios através do sigilo
  332 + *
  333 + * @author rogerio.costa
  334 + *
  335 + * @param sigilo
  336 + * @return Collection<Privilegio>
  337 + */
  338 + private Collection<Long> getPrivilegios(Sigilo sigilo) {
  339 +
  340 + Collection<Long> listIdsPrivilegio = new LinkedList<Long>();
  341 + // Cria uma lista de privilegios relacionados ao sigilo do processo
  342 + for (SigiloPrivilegio sigiloPrivilegio : sigilo.getSigiloPrivilegios()) {
  343 +
  344 + listIdsPrivilegio.add(sigiloPrivilegio.getPrivilegio().getId());
  345 + }
  346 + return listIdsPrivilegio;
  347 + }
  348 +
  349 + /**
  350 + * <p>
  351 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  352 + * </p>
  353 + *
  354 + * <p>
  355 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  356 + * </p>
  357 + *
  358 + * Método responsável por obter grupos através do sigilo
  359 + *
  360 + * @author rogerio.costa
  361 + *
  362 + * @param sigilo
  363 + *
  364 + * @return Collection<Grupo>
  365 + */
  366 + private Collection<Grupo> findGrupoPorSigilo(Sigilo sigilo) {
  367 +
  368 + Collection<Long> idPrivilegios = this.getPrivilegios(sigilo);
  369 +
  370 + Collection<Grupo> grupos = this.grupoService.findByPrivilegio(idPrivilegios);
  371 +
  372 + return grupos;
  373 + }
  374 +
  375 + /**
  376 + * <p>
  377 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  378 + * </p>
  379 + *
  380 + * <p>
  381 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  382 + * </p>
  383 + *
309 384 * Método responsável por resolver as pripriedades transiente
310 385 *
311 386 * @author rogerio.costa
... ... @@ -498,6 +573,8 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
498 573  
499 574 final Processo processo = super.getReference(id);
500 575  
  576 + request.getSession().setAttribute("idProcesso", id);
  577 +
501 578 processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id));
502 579  
503 580 return processo;
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/viewHelper/HerancaSistemaVH.java
... ... @@ -38,6 +38,10 @@ import br.com.centralit.framework.json.Views;
38 38 */
39 39 public class HerancaSistemaVH {
40 40  
  41 + /** Atributo id. */
  42 + @JsonView({ Views.GenericView.class })
  43 + private Long id;
  44 +
41 45 /** Atributo nome. */
42 46 @JsonView({ Views.GenericView.class })
43 47 private String nome;
... ... @@ -51,9 +55,11 @@ public class HerancaSistemaVH {
51 55 *
52 56 * @param nome
53 57 * @param nomeUnidade
  58 + * @param id
54 59 */
55   - public HerancaSistemaVH( String nome, String nomeUnidade ) {
  60 + public HerancaSistemaVH( Long id, String nome, String nomeUnidade ) {
56 61  
  62 + this.id = id;
57 63 this.nome = nome;
58 64 this.nomeUnidade = nomeUnidade;
59 65 }
... ...
cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java
... ... @@ -4,12 +4,14 @@ import java.util.Collection;
4 4  
5 5 import org.springframework.beans.factory.annotation.Autowired;
6 6 import org.springframework.stereotype.Controller;
  7 +import org.springframework.web.bind.annotation.PathVariable;
7 8 import org.springframework.web.bind.annotation.RequestBody;
8 9 import org.springframework.web.bind.annotation.RequestMapping;
9 10 import org.springframework.web.bind.annotation.RequestMethod;
10 11 import org.springframework.web.bind.annotation.RequestParam;
11 12 import org.springframework.web.bind.annotation.ResponseBody;
12 13  
  14 +import br.com.centralit.api.framework.json.ViewsEcm;
13 15 import br.com.centralit.api.model.CredencialProcesso;
14 16 import br.com.centralit.api.service.CredencialProcessoService;
15 17 import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
... ... @@ -122,18 +124,31 @@ public class CredencialProcessoController extends GenericController&lt;CredencialPr
122 124 }
123 125  
124 126 /**
125   - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
126   - *
127   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
128   - *
  127 + * <p>
  128 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  129 + * </p>
  130 + *
  131 + * <p>
  132 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  133 + * </p>
  134 + *
129 135 * Método responsável por listar as credenciais herdadas
130   - *
  136 + *
131 137 * @author rogerio.costa
132   - *
  138 + *
133 139 * @param idProcesso
134 140 * @return
135 141 * @throws Exception
136 142 */
  143 + @RequestMapping(value = "/findByIdProcesso", method = RequestMethod.GET, produces = "application/json")
  144 + @ResponseBody
  145 + public ResponseBodyWrapper findByIdProcesso(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception {
  146 +
  147 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.credencialProcessoService.findByIdProcesso(idProcesso), Views.CredencialProcessoView.class);
  148 +
  149 + return responseBody;
  150 + }
  151 +
137 152 @RequestMapping(value = "/findCredenciaisHerdadas", method = RequestMethod.GET, produces = "application/json")
138 153 @ResponseBody
139 154 public ResponseBodyWrapper findCredenciaisHerdadas(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception {
... ... @@ -143,24 +158,11 @@ public class CredencialProcessoController extends GenericController&lt;CredencialPr
143 158 return responseBody;
144 159 }
145 160  
146   - /**
147   - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
148   - *
149   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
150   - *
151   - * Método responsável por obter as credenciais do usuario logado
152   - *
153   - * @author rogerio.costa
154   - *
155   - * @param idProcesso
156   - * @return
157   - * @throws Exception
158   - */
159   - @RequestMapping(value = "/obterCredencialUsuarioLogado", method = RequestMethod.GET, produces = "application/json")
  161 + @RequestMapping(method = RequestMethod.DELETE, value = "/renunciar/{idProcesso}")
160 162 @ResponseBody
161   - public ResponseBodyWrapper obterCredencialUsuarioLogado(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception {
  163 + public ResponseBodyWrapper renunciar(@PathVariable("idProcesso") Long idProcesso) {
162 164  
163   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.credencialProcessoService.obterCredencialUsuarioLogado(idProcesso), Views.GenericView.class);
  165 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.credencialProcessoService.renunciar(idProcesso), getEditView());
164 166  
165 167 return responseBody;
166 168 }
... ...
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
... ... @@ -194,8 +194,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
194 194 list.add(new Dominio("tipoFormaCriacao", "Anexo", "ANEXO", 2L));
195 195 list.add(new Dominio("tipoFormaCriacao", "Ambos", "AMBOS", 3L));
196 196  
197   - list.add(new Dominio("tipoProtocoloNup", "Automático", "NUP_NOVO", 1L, Boolean.FALSE));
198   - list.add(new Dominio("tipoProtocoloNup", "Informado", "EXTERNO", 2L, Boolean.FALSE));
  197 + list.add(new Dominio("tipoProtocoloNup", "Automático", "EXTERNO", 1L, Boolean.FALSE));
  198 + list.add(new Dominio("tipoProtocoloNup", "Informado", "NUP_NOVO", 2L, Boolean.FALSE));
199 199  
200 200 this.dominioService.saveListIfNotExist(list);
201 201  
... ... @@ -408,6 +408,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
408 408 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_UNIDADE_ECM_VIGENTE_USUARIO", "O usuário vigente não possui unidade organizacional ECM vinculada!", dominio, modulo));
409 409 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_CONFIGURACAO_GRUPO_PADRAO_USUARIO", "O grupo padrão não foi configurado para unidade vigente", dominio, modulo));
410 410 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.REMOCAO_COM_VINCULO", "Não é possível excluir pois o mesmo encontra-se em uso por outro cadastro no sistema!", dominio, modulo));
  411 + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.PERMISSAO_OPERACAO", "Você não tem permissão para executar a operação.", dominio, modulo));
411 412  
412 413 }
413 414  
... ...
cit-ecm-web/src/main/resources/spring/applicationContext.xml
... ... @@ -36,7 +36,9 @@
36 36 p:jpaPropertyMap-ref="jpaPropertyMap" p:jpaVendorAdapter-ref="jpaVendorAdapter" />
37 37  
38 38 <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
39   -
  39 +
  40 + <bean id="webExpressionHandler" class="br.com.centralit.api.security.CustomExpressionHandler"/>
  41 +
40 42 <util:map id="jpaPropertyMap">
41 43 <entry key="generateDdl" value="${hibernate.generate.ddl}" />
42 44 <entry key="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl.auto}" />
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/CredencialProcessoController.js
... ... @@ -8,19 +8,19 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
8 8  
9 9  
10 10 //Iniciar credencial de acesso
11   - $scope.iniciarCredencial = function(idProcesso, credencialUsuarioProcesso){
  11 + $scope.iniciarCredencial = function(processo){
12 12 this.credenciarProcessoForm = $scope.credencialProcessoController.credenciarProcessoForm;
13 13 $scope.credenciais = [];
14   - $scope.idProcesso = idProcesso;
  14 + $scope.processo = processo;
15 15 $scope.herdadas = [];
16   - $scope.credencialUsuarioProcesso = credencialUsuarioProcesso;
17   - CredencialProcessoRepository.findByIdJoin('processo.id', $scope.idProcesso).then(function(result) {
  16 + $scope.credencialProcesso.grupoUsuario = null;
  17 + CredencialProcessoRepository.findByIdProcesso($scope.processo.id).then(function(result) {
18 18 result.forEach(function (credencialProcesso) {
19 19  
20 20 $scope.credenciais.push(credencialProcesso.originalElement);
21 21 });
22 22  
23   - CredencialProcessoRepository.findCredenciaisHerdadas($scope.idProcesso).then(function(result) {
  23 + CredencialProcessoRepository.findCredenciaisHerdadas($scope.processo.id).then(function(result) {
24 24 $scope.herdadas = result;
25 25 });
26 26  
... ... @@ -39,7 +39,7 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
39 39  
40 40 $scope.historicos = [];
41 41  
42   - HistoricoCredencialProcessoRepository.findByIdProcessoAndIdProcessoRemocao($scope.idProcesso).then(function(result) {
  42 + HistoricoCredencialProcessoRepository.findByIdProcessoAndIdProcessoRemocao($scope.processo.id).then(function(result) {
43 43 result.forEach(function (historico) {
44 44  
45 45 $scope.historicos.push(historico.originalElement);
... ... @@ -81,7 +81,9 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
81 81  
82 82 var listSemGrupoAdicionado = $filter('idNotEqualObj')(result, $scope.credenciais, 'grupo');
83 83  
84   - return $filter('idNotEqualObj')(listSemGrupoAdicionado, $scope.credenciais, 'usuario');
  84 + var credenciadosFiltrados = $filter('idNotEqualObj')(listSemGrupoAdicionado, $scope.credenciais, 'usuario');
  85 +
  86 + return $filter('idNotEqual')(credenciadosFiltrados, $scope.herdadas);
85 87 });
86 88 };
87 89  
... ... @@ -99,9 +101,8 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
99 101 var credencialProcesso = {};
100 102 credencialProcesso.id = $scope.credencialProcesso.id;
101 103 credencialProcesso.permiteCredenciar = $scope.credencialProcesso.permiteCredenciar;
102   - credencialProcesso.processo = {
103   - id : $scope.idProcesso
104   - };
  104 + credencialProcesso.processo = $scope.processo;
  105 + credencialProcesso.idTask = $scope.processo.idTask;
105 106  
106 107 //Verifica se o grupUsuario é um grupo, codigo 1 é grupo e 2 usuário
107 108 if($scope.credencialProcesso.grupoUsuario.codigo == 1){
... ... @@ -144,66 +145,59 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
144 145 };
145 146  
146 147 //Editar credencial
147   - $scope.editCredencial = function(){
  148 + $scope.editCredencial = function(credencialProcesso){
148 149 //prepara objeto edição
149 150 $scope.credencialProcesso = {
150 151 edit : true,
151   - $$hashKey : $scope.credencialProcessoChecked.$$hashKey,
152   - permiteCredenciar : $scope.credencialProcessoChecked.permiteCredenciar,
  152 + $$hashKey : credencialProcesso.$$hashKey,
  153 + permiteCredenciar : credencialProcesso.permiteCredenciar,
153 154 grupoUsuario : {
154   - nome : $scope.credencialProcessoChecked.grupo ? $scope.credencialProcessoChecked.grupo.nome : $scope.credencialProcessoChecked.usuario.username,
155   - id : $scope.credencialProcessoChecked.grupo ? $scope.credencialProcessoChecked.grupo.id : $scope.credencialProcessoChecked.usuario.id
  155 + nome : credencialProcesso.grupo ? credencialProcesso.grupo.nome : credencialProcesso.usuario.username,
  156 + id : credencialProcesso.grupo ? credencialProcesso.grupo.id : credencialProcesso.usuario.id
156 157 }
157 158 };
158 159  
159   - $scope.credencialProcessoChecked = null;
160   -
161 160 };
162 161  
163 162 //Exibir o dialog de confirmação de exclusão
164   - $scope.exibirDialogRemocao = function(){
165   - //Verifica se alguma credencial foi selecioanda
166   - if(!$scope.credencialProcessoChecked){
167   -
168   - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
169   -
170   - }else{
  163 + $scope.exibirDialogRemocao = function(credencialProcesso){
171 164  
172   - $scope.$openModalConfirm({message: $translate.instant('LABEL.CONFIRMA_EXCLUSAO'), callback: $scope.remove});
173   - }
174   -
  165 + $scope.$openModalConfirm({message: $translate.instant('LABEL.CONFIRMA_EXCLUSAO'), callback: $scope.remove, item : credencialProcesso});
175 166 };
176 167  
177 168 //Remover credencial
178 169 $scope.remove = function(){
179 170  
180 171 //Obter o index do elemento
181   - var index = $scope.credenciais.indexOf($scope.credencialProcessoChecked);
182   -
183   - $scope.showAlert("success", $translate.instant('MSG.EXCLUSAO_SUCESSO'));
184   -
  172 + var index = $scope.credenciais.indexOf(this.item);
  173 +
185 174 //Verifica se a credencial selecionada já foi persistida
186   - if($scope.credencialProcessoChecked.id){
  175 + if(this.item.id){
187 176  
188   - CredencialProcessoRepository.remove($scope.credencialProcessoChecked).then(function() {
189   -
  177 + CredencialProcessoRepository.remove(this.item).then(function() {
  178 + $scope.showAlert("success", $translate.instant('MSG.EXCLUSAO_SUCESSO'));
  179 + //Remove a credencial da lista de credenciais
  180 + $scope.credenciais.splice(index , 1);
  181 + $scope.credencialProcessoChecked = null;
190 182 $scope.findHistorico();
191 183  
192 184 });
193 185  
  186 + }else{
  187 + $scope.showAlert("success", $translate.instant('MSG.EXCLUSAO_SUCESSO'));
  188 + //Remove a credencial da lista de credenciais
  189 + $scope.credenciais.splice(index , 1);
  190 +
  191 + $scope.credencialProcessoChecked = null;
  192 +
194 193 }
195   - //Remove a credencial da lista de credenciais
196   - $scope.credenciais.splice(index , 1);
197   -
198   - $scope.credencialProcessoChecked = null;
199   -
200 194 $scope.$modalConfirmInstance.dismiss('cancel');
201 195 };
202 196  
203 197 //Verifica se o usuario logado tem permissão de remover a credencial
204 198 $scope.verificarPermissaoRemover = function(){
205 199  
206   - $scope.permiteRemoverCredencial = $scope.usuarioLogado.id === $scope.credencialProcessoChecked.autor.id || $scope.credencialUsuarioProcesso.permiteRemoverCredencial;
  200 + $scope.permiteRemoverCredencial = $scope.usuarioLogado.id === $scope.credencialProcessoChecked.autor.id;
207 201 };
208 202  
209 203  
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js
1 1 'use strict';
2 2  
3   -citApp.controller( 'GerenciarProcessoController', [
4   - '$scope',
5   - '$translate',
6   - '$timeout',
7   - 'GerenciarProcessoRepository',
8   - 'ProcessoRepository',
9   - 'RuntimeManagerRepository',
10   - '$rootScope',
11   - 'DocumentoGedRepository',
12   - 'HistoricoAlteracaoProcessoRepository',
13   - 'UnidadeRepository',
14   - 'UnidadeProcessoRepository',
15   - 'CredencialProcessoRepository',
16   - function GerenciarProcessoController ( $scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository, $rootScope, DocumentoGedRepository,
17   - HistoricoAlteracaoProcessoRepository, UnidadeRepository, UnidadeProcessoRepository, CredencialProcessoRepository ) {
18   -
19   - $scope.processo = {};
20   - $scope.iconAnexo = {};
21   - $scope.taskVariables = [];
22   - $scope.unidades = [];
23   -
24   - // INICIALIZA VARIAVEIS PARA HABILITAR E FECHAR DIVS DE AÇÕES DO PROCESSO
25   -
26   - $scope.isHistoricoProcesso = true;
27   - $scope.fecharPagina = function () {
28   - $scope.isProcessoRelacionado = false;
29   - $scope.isDocumentoEdit = false;
30   - $scope.isProcessoEdit = false;
31   - $scope.isHistoricoProcesso = false;
32   - $scope.isVersoesDocumento = false;
33   - $scope.isEnviarProcesso = false;
34   - $scope.isCancelarDocumento = false;
35   - $scope.isJustificativaAcaoProcesso = false;
36   - $scope.isHistoricoJustificativa = false;
37   - $scope.isAnexarProcesso = false;
38   - $scope.widgetExemploIsCollapsed = true;
39   - $scope.tratimitado();
40   - $scope.isGerenciarCredencialProcesso = false;
41   - $scope.isClassificarProcessoDocumento = false;
42   -
43   - };
44 3  
45   - // CRIAR RELACIONAMENTO DE PROCESSO
  4 +citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$timeout','GerenciarProcessoRepository', 'ProcessoRepository', 'RuntimeManagerRepository','$rootScope', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository','UnidadeRepository','UnidadeProcessoRepository','CredencialProcessoRepository',
  5 + function GerenciarProcessoController($scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository,$rootScope, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository,UnidadeRepository, UnidadeProcessoRepository,CredencialProcessoRepository ) {
  6 +
  7 + $scope.processo = {};
  8 + $scope.iconAnexo = {};
  9 + $scope.taskVariables = [];
  10 + $scope.unidades = [];
  11 +
  12 + $scope.url = '/cit-ecm-web/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.jsp?i=' + (new Date).getTime();
  13 +
  14 + //INICIALIZA VARIAVEIS PARA HABILITAR E FECHAR DIVS DE AÇÕES DO PROCESSO
  15 +
  16 + $scope.isHistoricoProcesso = true;
  17 + $scope.fecharPagina = function() {
  18 + $scope.isProcessoRelacionado = false;
  19 + $scope.isDocumentoEdit = false;
  20 + $scope.isProcessoEdit = false;
  21 + $scope.isHistoricoProcesso = false;
  22 + $scope.isVersoesDocumento = false;
  23 + $scope.isEnviarProcesso = false;
  24 + $scope.isCancelarDocumento = false;
  25 + $scope.isJustificativaAcaoProcesso = false;
  26 + $scope.isHistoricoJustificativa = false;
  27 + $scope.isAnexarProcesso = false;
  28 + $scope.widgetExemploIsCollapsed = true;
  29 + $scope.tratimitado();
  30 + $scope.isGerenciarCredencialProcesso = false;
  31 + $scope.isClassificarProcessoDocumento = false;
  32 +
  33 + // CRIAR RELACIONAMENTO DE PROCESSO
46 34 $scope.editProcessoRelacionado = function () {
47 35  
48 36 $scope.fecharPagina();
... ... @@ -594,7 +582,9 @@ citApp.controller( &#39;GerenciarProcessoController&#39;, [
594 582 $timeout( function () {
595 583 // console.log('idProcesso:' + $scope.idProcesso);
596 584 ProcessoRepository.get( $scope.idProcesso ).then( function ( result ) {
597   - $scope.processo = result.originalElement;
  585 + $scope.processo = result.originalElement;
  586 + $scope.apresentarCabecalho = true;
  587 + $scope.processo.idTask = $scope.task.id;
598 588  
599 589 CredencialProcessoRepository.obterCredencialUsuarioLogado( $scope.idProcesso ).then( function ( result ) {
600 590 $scope.credencialUsuarioProcesso = result.originalElement;
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js
... ... @@ -17,10 +17,14 @@ citApp.factory(&#39;CredencialProcessoRepository&#39;, [&#39;RestangularEcm&#39;, &#39;AbstractRepos
17 17 return restangularEcm.one(this.route).getList("findCredenciaisHerdadas", {idProcesso : idProcesso}).then();
18 18 };
19 19  
20   - this.obterCredencialUsuarioLogado = function(idProcesso) {
21   - return restangularEcm.one(this.route + "/obterCredencialUsuarioLogado").get({idProcesso : idProcesso});
  20 + this.findByIdProcesso = function(idProcesso) {
  21 + return restangularEcm.one(this.route).getList("findByIdProcesso", {idProcesso : idProcesso}).then();
22 22 };
23 23  
  24 + this.renunciar = function (idProcesso) {
  25 + return restangularEcm.one(this.route + "/renunciar", idProcesso).remove();
  26 + };
  27 +
24 28 }
25 29  
26 30 AbstractRepository.extend(CredencialProcessoRepository);
... ...
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.html
... ... @@ -1,74 +0,0 @@
1   -
2   -<button ng-show="task.flowElement.actions && task.flowElement.actions.length == 1" title="{{$translate.instant('ESI.EXECUCAO_TAREFA.GRAVAR_TAREFA_AVANCAR')}}"
3   - alt="{{$translate.instant('ESI.EXECUCAO_TAREFA.GRAVAR_TAREFA_AVANCAR')}}" class="btn btn-clear" ng-click="executarProcesso(task.flowElement.actions[0])">
4   - <i class="fa fa-play-circle green"></i>
5   - <translate>ECM.LABEL.AVANCAR_FLUXO</translate>
6   -</button>
7   -
8   -<div class="btn-group dropdown" role="group" dropdown ng-show=" task.flowElement.actions && task.flowElement.actions.length > 1">
9   - <button type="button" class="btn btn-clear" dropdown-toggle>
10   - <i class="fa fa-play-circle green"></i>
11   - <translate>ECM.LABEL.AVANCAR_FLUXO</translate>
12   - <span class="fa fa-caret-down icon-on-right"></span>
13   - </button>
14   -
15   - <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu" ng-repeat="action in task.flowElement.actions">
16   - <li ng-repeat="action in task.flowElement.actions"><a href="javascript: return false;" ng-click='executarProcesso(action);'><i class="fa fa-circle"> <translate>{{action.name}}</translate></i></a>
17   - </li>
18   -
19   - </ul>
20   -</div>
21   -
22   -<span class="divider-vertical"></span>
23   -
24   -<button type="button" class="btn btn-clear" ng-click="novoProcesso();">
25   - <i class="fa fa-plus-circle yellow-dark"></i>
26   - <translate>ECM.LABEL.NOVOPROCESSO</translate>
27   -</button>
28   -
29   -<button type="button" class="btn btn-clear" ng-click="editProcessoECM()">
30   - <i class="fa fa-pencil blue"></i>
31   - <translate>LABEL.EDITAR</translate>
32   -</button>
33   -
34   -<button type="button" class="btn btn-clear" ng-click="concluir()">
35   - <i class="ace-icon fa fa-check green"></i>
36   - <translate>ECM.LABEL.CONCLUIR</translate>
37   -</button>
38   -
39   -
40   -<button type="button" class="btn btn-clear" ng-click="newDocument()">
41   - <i class="fa fa-book blue"></i>
42   - <translate>ECM.LABEL.INCLUIRDOCUMENTO</translate>
43   -</button>
44   -
45   -<span class="divider-vertical"></span>
46   -
47   -<div class="btn-group dropdown" role="group" dropdown>
48   - <button type="button" class="btn btn-clear" dropdown-toggle>
49   - <i class="fa fa-list"></i>
50   - <translate>ECM.LABEL.ACAODEPROCESSO</translate>
51   - <span class="fa fa-caret-down icon-on-right"></span>
52   - </button>
53   -
54   - <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu">
55   - <li><a href="#void" ng-click="editProcessoRelacionado();"><i class="fa fa-link"></i> <translate>ECM.LABEL.PROCESSORELACIONADOS</translate></a></li>
56   - <li><a href="#void" ng-click='enviarProcesso();'><i class="fa fa-share-square-o">&nbsp </i> <translate>ECM.LABEL.ENVIAR_PROCESSO</translate> </a></li>
57   - <li><a href="#void" ng-click='anexarProcesso();'><i class="fa fa-paperclip">&nbsp </i> <translate>ECM.LABEL.ANEXAR_ESTE_PROCESSO</translate> </a></li>
58   - <li><a href="#void;" ng-click='gerenciarCredenciaisProcesso();'><i class="fa fa-user-plus">&nbsp </i> <translate>ECM.LABEL.GERENCIAR_CREDENCIAIS_ACESSO</translate> </a></li>
59   - <li><a href="javascript: return false;" ng-click='exibirDialogConfirmacaoRemoverCredencial()' ng-if="credencialUsuarioProcesso.id"><i class="fa fa-user-plus">&nbsp </i> <translate>ECM.LABEL.RENUNCIAR_CREDENCIAL</translate>
60   - </a></li>
61   - <li><a href="#void" ng-click='classificarDocumentoProceso();'><i class="fa fa fa-eye">&nbsp </i> <translate>ECM.LABEL.VALIDAR_NIVEL_ACESSO</translate> </a></li>
62   -
63   -
64   - <!--<li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.ENVIARCORRESPONDENCIA</translate></a></li>
65   - <li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.CIENCIA</translate></a></li>
66   - <li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.DUPLICARPROCESSO</translate></a></li> </a></li>
67   - <li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.GERENCIARDISPONIBILIZACAOACESSOEXTERNO</translate></a></li>
68   - <li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.ACOMPANHAMENTOESPECIAL</translate> </a></li>
69   - <li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.ANEXARPROCESSO</translate> </a></li>
70   - <li><a href="#void"><i class="fa fa-file-o"></i> <translate>LABEL.GERARARQUIVOPROCESSO</translate></a></li> -->
71   - </ul>
72   -</div>
73   -
74   -