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,4 +95,41 @@ public interface CredencialProcessoDao extends CitGenericDAO {
95 */ 95 */
96 CredencialProcesso obterPorGrupoEProcesso(Long idProcesso, Long idGrupo); 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,6 +2,7 @@ package br.com.centralit.api.dao;
2 2
3 import java.util.Collection; 3 import java.util.Collection;
4 4
  5 +import br.com.centralit.api.model.CredencialProcesso;
5 import br.com.centralit.api.model.HistoricoCredencialProcesso; 6 import br.com.centralit.api.model.HistoricoCredencialProcesso;
6 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; 7 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
7 8
@@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoDao extends CitGenericDAO { @@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoDao extends CitGenericDAO {
58 */ 59 */
59 Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso); 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,4 +175,58 @@ public class CredencialProcessoDaoHibernate extends CitGenericDAOImpl implements
175 return this.searchUnique(searchSeven, persistentClass); 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,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,11 +10,13 @@ import javax.persistence.GenerationType;
10 import javax.persistence.Id; 10 import javax.persistence.Id;
11 import javax.persistence.ManyToOne; 11 import javax.persistence.ManyToOne;
12 import javax.persistence.OneToMany; 12 import javax.persistence.OneToMany;
  13 +import javax.persistence.Transient;
13 14
14 import br.com.centralit.framework.json.Views; 15 import br.com.centralit.framework.json.Views;
15 import br.com.centralit.framework.model.Grupo; 16 import br.com.centralit.framework.model.Grupo;
16 import br.com.centralit.framework.model.Usuario; 17 import br.com.centralit.framework.model.Usuario;
17 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; 18 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
  19 +import br.com.centralit.framework.util.UtilObjeto;
18 20
19 import com.fasterxml.jackson.annotation.JsonView; 21 import com.fasterxml.jackson.annotation.JsonView;
20 22
@@ -70,6 +72,15 @@ public class CredencialProcesso extends PersistentObjectAudit { @@ -70,6 +72,15 @@ public class CredencialProcesso extends PersistentObjectAudit {
70 @JsonView({ Views.CredencialProcessoView.class }) 72 @JsonView({ Views.CredencialProcessoView.class })
71 private String icon; 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 /** Atributo processo. */ 84 /** Atributo processo. */
74 @ManyToOne(fetch = FetchType.LAZY) 85 @ManyToOne(fetch = FetchType.LAZY)
75 @JsonView({ Views.CredencialProcessoView.class}) 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,6 +14,7 @@ import javax.persistence.TemporalType;
14 import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; 14 import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer;
15 import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; 15 import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer;
16 import br.com.centralit.framework.json.Views; 16 import br.com.centralit.framework.json.Views;
  17 +import br.com.centralit.framework.model.Grupo;
17 import br.com.centralit.framework.model.Usuario; 18 import br.com.centralit.framework.model.Usuario;
18 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; 19 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
19 import br.com.centralit.framework.util.UtilObjeto; 20 import br.com.centralit.framework.util.UtilObjeto;
@@ -73,6 +74,13 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit { @@ -73,6 +74,13 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
73 @JsonView({ Views.HistoricoCredencialProcesso.class }) 74 @JsonView({ Views.HistoricoCredencialProcesso.class })
74 private Calendar dataDescredenciado; 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 /** Atributo credencialProcesso. */ 84 /** Atributo credencialProcesso. */
77 @ManyToOne(fetch = FetchType.LAZY) 85 @ManyToOne(fetch = FetchType.LAZY)
78 @JsonView({ Views.HistoricoCredencialProcesso.class }) 86 @JsonView({ Views.HistoricoCredencialProcesso.class })
@@ -83,6 +91,38 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit { @@ -83,6 +91,38 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
83 @JsonView({ Views.HistoricoCredencialProcesso.class }) 91 @JsonView({ Views.HistoricoCredencialProcesso.class })
84 private Usuario descredenciador; 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 * Retorna o valor do atributo <code>id</code> 127 * Retorna o valor do atributo <code>id</code>
88 * 128 *
@@ -163,6 +203,66 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit { @@ -163,6 +203,66 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
163 this.descredenciador = descredenciador; 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 @JsonView({ Views.HistoricoCredencialProcesso.class }) 266 @JsonView({ Views.HistoricoCredencialProcesso.class })
167 public String getUnidadeUsuarioCredenciado() { 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,7 +143,7 @@ public class Processo extends PersistentObjectUnidade {
143 @ManyToOne(fetch = FetchType.LAZY) 143 @ManyToOne(fetch = FetchType.LAZY)
144 @JsonView({ Views.ProcessoList.class }) 144 @JsonView({ Views.ProcessoList.class })
145 private NivelAcessoTipoProcesso nivelAcesso; 145 private NivelAcessoTipoProcesso nivelAcesso;
146 - 146 +
147 @ManyToOne(fetch = FetchType.LAZY) 147 @ManyToOne(fetch = FetchType.LAZY)
148 @JsonView({ Views.ProcessoList.class }) 148 @JsonView({ Views.ProcessoList.class })
149 private NivelAcessoTipoProcesso nivelAcessoOriginal; 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,9 +70,6 @@ public class TipoProcesso extends PersistentObjectUnidade {
70 @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoList.class, Views.ProcessoRelacionadoList.class }) 70 @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoList.class, Views.ProcessoRelacionadoList.class })
71 private String nome; 71 private String nome;
72 72
73 - @Field  
74 - private String name;  
75 -  
76 /** Atributo nome. */ 73 /** Atributo nome. */
77 @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoEdit.class }) 74 @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoEdit.class })
78 private String processoNegocio; 75 private String processoNegocio;
@@ -207,24 +204,4 @@ public class TipoProcesso extends PersistentObjectUnidade { @@ -207,24 +204,4 @@ public class TipoProcesso extends PersistentObjectUnidade {
207 this.processoNegocio = processoNegocio; 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,7 +4,6 @@ import java.util.Collection;
4 4
5 import br.com.centralit.api.model.CredencialProcesso; 5 import br.com.centralit.api.model.CredencialProcesso;
6 import br.com.centralit.api.model.Processo; 6 import br.com.centralit.api.model.Processo;
7 -import br.com.centralit.api.viewHelper.CredencialUsuarioVH;  
8 import br.com.centralit.api.viewHelper.GrupoUsuarioVH; 7 import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
9 import br.com.centralit.api.viewHelper.HerancaSistemaVH; 8 import br.com.centralit.api.viewHelper.HerancaSistemaVH;
10 import br.com.centralit.framework.service.arquitetura.GenericService; 9 import br.com.centralit.framework.service.arquitetura.GenericService;
@@ -123,14 +122,82 @@ public interface CredencialProcessoService extends GenericService&lt;CredencialProc @@ -123,14 +122,82 @@ public interface CredencialProcessoService extends GenericService&lt;CredencialProc
123 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 122 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
124 * </p> 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 * @author rogerio.costa 161 * @author rogerio.costa
129 * 162 *
130 * @param idProcesso 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,6 +2,7 @@ package br.com.centralit.api.service;
2 2
3 import java.util.Collection; 3 import java.util.Collection;
4 4
  5 +import br.com.centralit.api.model.CredencialProcesso;
5 import br.com.centralit.api.model.HistoricoCredencialProcesso; 6 import br.com.centralit.api.model.HistoricoCredencialProcesso;
6 import br.com.centralit.framework.service.arquitetura.GenericService; 7 import br.com.centralit.framework.service.arquitetura.GenericService;
7 8
@@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoService extends GenericService&lt;Histo @@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoService extends GenericService&lt;Histo
58 */ 59 */
59 Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso); 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 package br.com.centralit.api.service.impl; 1 package br.com.centralit.api.service.impl;
2 2
3 -import java.util.ArrayList;  
4 import java.util.Collection; 3 import java.util.Collection;
5 -import java.util.HashMap;  
6 import java.util.LinkedList; 4 import java.util.LinkedList;
7 import java.util.List; 5 import java.util.List;
8 -import java.util.Map;  
9 6
10 -import org.json.JSONObject;  
11 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
13 9
@@ -23,11 +19,8 @@ import br.com.centralit.api.service.HistoricoCredencialProcessoService; @@ -23,11 +19,8 @@ import br.com.centralit.api.service.HistoricoCredencialProcessoService;
23 import br.com.centralit.api.service.ProcessoService; 19 import br.com.centralit.api.service.ProcessoService;
24 import br.com.centralit.api.service.SigiloService; 20 import br.com.centralit.api.service.SigiloService;
25 import br.com.centralit.api.service.UsuarioService; 21 import br.com.centralit.api.service.UsuarioService;
26 -import br.com.centralit.api.viewHelper.CredencialUsuarioVH;  
27 import br.com.centralit.api.viewHelper.GrupoUsuarioVH; 22 import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
28 import br.com.centralit.api.viewHelper.HerancaSistemaVH; 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 import br.com.centralit.framework.exception.BusinessException; 24 import br.com.centralit.framework.exception.BusinessException;
32 import br.com.centralit.framework.exception.CodigoErro; 25 import br.com.centralit.framework.exception.CodigoErro;
33 import br.com.centralit.framework.model.Grupo; 26 import br.com.centralit.framework.model.Grupo;
@@ -95,8 +88,12 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -95,8 +88,12 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
95 @Autowired 88 @Autowired
96 private SigiloService sigiloService; 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 * Responsável pela criação de novas instâncias desta classe. 99 * Responsável pela criação de novas instâncias desta classe.
@@ -131,9 +128,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -131,9 +128,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
131 @Override 128 @Override
132 public Collection<CredencialProcesso> save(Collection<CredencialProcesso> credenciais) { 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,52 +175,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
176 } 175 }
177 // Gera a credencial do usuario que crio o processo 176 // Gera a credencial do usuario que crio o processo
178 super.save(new CredencialProcesso(processo, getUsuario())); 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,9 +222,10 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
266 * 222 *
267 * @param credenciais 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 for (CredencialProcesso credencialProcesso : credenciais) { 230 for (CredencialProcesso credencialProcesso : credenciais) {
274 231
@@ -277,9 +234,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -277,9 +234,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
277 if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) { 234 if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) {
278 235
279 credencialProcesso.setGrupo(this.grupoService.getReference(credencialProcesso.getGrupo().getId())); 236 credencialProcesso.setGrupo(this.grupoService.getReference(credencialProcesso.getGrupo().getId()));
  237 + grupos.add(credencialProcesso.getGrupo().getSigla());
280 } else { 238 } else {
281 239
282 credencialProcesso.setUsuario(this.usuarioService.find(credencialProcesso.getUsuario().getId())); 240 credencialProcesso.setUsuario(this.usuarioService.find(credencialProcesso.getUsuario().getId()));
  241 + usuarios.add(credencialProcesso.getUsuario().getUsername());
283 242
284 } 243 }
285 // Verifica se a credencial é nova, caso seja cria um histórico 244 // Verifica se a credencial é nova, caso seja cria um histórico
@@ -287,8 +246,39 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -287,8 +246,39 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
287 246
288 credencialProcesso.setHistoricoCredencialProcessos(new LinkedList<HistoricoCredencialProcesso>()); 247 credencialProcesso.setHistoricoCredencialProcessos(new LinkedList<HistoricoCredencialProcesso>());
289 credencialProcesso.getHistoricoCredencialProcessos().add(this.addHistorico(credencialProcesso)); 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,6 +303,13 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
313 303
314 historicoCredencialProcesso.setCredencialProcesso(credencialProcesso); 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 return historicoCredencialProcesso; 313 return historicoCredencialProcesso;
317 } 314 }
318 315
@@ -321,10 +318,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -321,10 +318,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
321 318
322 CredencialProcesso credencialProcesso = this.getReference(id); 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 return super.removeById(id); 325 return super.removeById(id);
330 } 326 }
@@ -338,6 +334,87 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -338,6 +334,87 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
338 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 334 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
339 * </p> 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 * Método responsável por salvar o histórico do descredenciamento 418 * Método responsável por salvar o histórico do descredenciamento
342 * 419 *
343 * @author rogerio.costa 420 * @author rogerio.costa
@@ -346,10 +423,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -346,10 +423,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
346 */ 423 */
347 private void saveHistoricoDescredenciado(CredencialProcesso credencialProcesso) { 424 private void saveHistoricoDescredenciado(CredencialProcesso credencialProcesso) {
348 425
349 - HistoricoCredencialProcesso historicoCredencialProcesso = new HistoricoCredencialProcesso(); 426 + HistoricoCredencialProcesso historicoCredencialProcesso = this.historicoCredencialProcessoService.findByCredencialAndCredenciado(credencialProcesso);
350 427
351 historicoCredencialProcesso.setDataDescredenciado(UtilDate.getDataAtualCalendar()); 428 historicoCredencialProcesso.setDataDescredenciado(UtilDate.getDataAtualCalendar());
352 - historicoCredencialProcesso.setCredencialProcesso(credencialProcesso);  
353 historicoCredencialProcesso.setDescredenciador(getUsuario()); 429 historicoCredencialProcesso.setDescredenciador(getUsuario());
354 430
355 this.historicoCredencialProcessoService.save(historicoCredencialProcesso); 431 this.historicoCredencialProcessoService.save(historicoCredencialProcesso);
@@ -364,6 +440,30 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -364,6 +440,30 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
364 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 440 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
365 * </p> 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 * Método responsável por listar grupo e usuarios que tem credenciais herdadas do sistema. 467 * Método responsável por listar grupo e usuarios que tem credenciais herdadas do sistema.
368 * 468 *
369 * @author rogerio.costa 469 * @author rogerio.costa
@@ -388,11 +488,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -388,11 +488,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
388 488
389 for (Grupo grupo : grupos) { 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 return herancaList; 498 return herancaList;
@@ -433,60 +533,142 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial @@ -433,60 +533,142 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
433 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 533 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
434 * </p> 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 * @author rogerio.costa 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 } else { 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,25 +680,19 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
498 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 680 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
499 * </p> 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 * @author rogerio.costa 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,26 +704,24 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
528 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 704 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
529 * </p> 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 * @author rogerio.costa 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,16 +733,55 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl&lt;Credencial
559 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 733 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
560 * </p> 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 * @author rogerio.costa 738 * @author rogerio.costa
565 * 739 *
566 - * @return Collection<GrupoUsuarioVH> 740 + * @param idProcesso
  741 + * @return boolean
567 */ 742 */
568 @Override 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,9 +775,8 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl&lt;DocumentoGed, Lo
775 775
776 if (!UtilColecao.isVazio(listaDocumentos)) { 776 if (!UtilColecao.isVazio(listaDocumentos)) {
777 for (DocumentoGed documento : listaDocumentos) { 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 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Service; 6 import org.springframework.stereotype.Service;
7 7
8 import br.com.centralit.api.dao.HistoricoCredencialProcessoDao; 8 import br.com.centralit.api.dao.HistoricoCredencialProcessoDao;
  9 +import br.com.centralit.api.model.CredencialProcesso;
9 import br.com.centralit.api.model.HistoricoCredencialProcesso; 10 import br.com.centralit.api.model.HistoricoCredencialProcesso;
10 import br.com.centralit.api.service.HistoricoCredencialProcessoService; 11 import br.com.centralit.api.service.HistoricoCredencialProcessoService;
11 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 12 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
@@ -76,9 +77,31 @@ public class HistoricoCredencialProcessoServiceImpl extends GenericServiceImpl&lt;H @@ -76,9 +77,31 @@ public class HistoricoCredencialProcessoServiceImpl extends GenericServiceImpl&lt;H
76 * 77 *
77 * @return Collection<HistoricoCredencialProcesso> 78 * @return Collection<HistoricoCredencialProcesso>
78 */ 79 */
79 - public Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso){  
80 - 80 + public Collection<HistoricoCredencialProcesso> findByIdProcessoAndIdProcessoRemocao(Long idProcesso) {
  81 +
81 return this.historicoCredencialProcessoDao.findByIdProcessoAndIdProcessoRemocao(idProcesso); 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,9 +6,12 @@ import java.util.Calendar;
6 import java.util.Collection; 6 import java.util.Collection;
7 import java.util.GregorianCalendar; 7 import java.util.GregorianCalendar;
8 import java.util.HashMap; 8 import java.util.HashMap;
  9 +import java.util.LinkedList;
9 import java.util.List; 10 import java.util.List;
10 import java.util.Map; 11 import java.util.Map;
11 12
  13 +import javax.servlet.http.HttpServletRequest;
  14 +
12 import org.apache.commons.lang.StringUtils; 15 import org.apache.commons.lang.StringUtils;
13 import org.json.JSONObject; 16 import org.json.JSONObject;
14 import org.springframework.beans.factory.annotation.Autowired; 17 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +25,8 @@ import br.com.centralit.api.model.EstruturaOrganizacionalECM; @@ -22,6 +25,8 @@ import br.com.centralit.api.model.EstruturaOrganizacionalECM;
22 import br.com.centralit.api.model.InteressadoProcesso; 25 import br.com.centralit.api.model.InteressadoProcesso;
23 import br.com.centralit.api.model.PlanoClassificacao; 26 import br.com.centralit.api.model.PlanoClassificacao;
24 import br.com.centralit.api.model.Processo; 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 import br.com.centralit.api.model.Temporalidade; 30 import br.com.centralit.api.model.Temporalidade;
26 import br.com.centralit.api.model.UnidadeProcesso; 31 import br.com.centralit.api.model.UnidadeProcesso;
27 import br.com.centralit.api.service.CredencialProcessoService; 32 import br.com.centralit.api.service.CredencialProcessoService;
@@ -40,6 +45,7 @@ import br.com.centralit.framework.esi.environment.EnvironmentOutput; @@ -40,6 +45,7 @@ import br.com.centralit.framework.esi.environment.EnvironmentOutput;
40 import br.com.centralit.framework.esi.environment.EnvironmentVariable; 45 import br.com.centralit.framework.esi.environment.EnvironmentVariable;
41 import br.com.centralit.framework.exception.BusinessException; 46 import br.com.centralit.framework.exception.BusinessException;
42 import br.com.centralit.framework.exception.CodigoErro; 47 import br.com.centralit.framework.exception.CodigoErro;
  48 +import br.com.centralit.framework.model.Grupo;
43 import br.com.centralit.framework.model.Unidade; 49 import br.com.centralit.framework.model.Unidade;
44 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 50 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
45 import br.com.centralit.framework.util.UtilColecao; 51 import br.com.centralit.framework.util.UtilColecao;
@@ -123,6 +129,10 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -123,6 +129,10 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
123 @Autowired 129 @Autowired
124 private CredencialProcessoService credencialProcessoService; 130 private CredencialProcessoService credencialProcessoService;
125 131
  132 + /** Atributo request. */
  133 + @Autowired
  134 + private HttpServletRequest request;
  135 +
126 @Autowired 136 @Autowired
127 public ProcessoServiceImpl( final ProcessoDao processoDao, @Qualifier("processoValidator") final Validator validator ) { 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,7 +152,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
142 152
143 final Processo processo = super.save(entity); 153 final Processo processo = super.save(entity);
144 154
145 - /* this.gerarCredenciais(processo); */ 155 +// this.credencialProcessoService.saveCredenciais(processo);
146 156
147 if (processo.getTipoProtocolo().getCodigo().equals(1L)) { 157 if (processo.getTipoProtocolo().getCodigo().equals(1L)) {
148 this.gerarNUP(processo); 158 this.gerarNUP(processo);
@@ -274,11 +284,23 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -274,11 +284,23 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
274 final JSONObject processoJSON = new JSONObject(mapProcesso); 284 final JSONObject processoJSON = new JSONObject(mapProcesso);
275 285
276 variaveis.add(new EnvironmentVariable("idProcesso", VariableTypeEnum.LONG, processo.getId(), false)); 286 variaveis.add(new EnvironmentVariable("idProcesso", VariableTypeEnum.LONG, processo.getId(), false));
277 - variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false));  
278 variaveis.add(new EnvironmentVariable("nup", VariableTypeEnum.JSON, processo.getNup(), false)); 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 variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, unidade.getGrupo().getSigla(), false)); 305 variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, unidade.getGrupo().getSigla(), false));
284 } else { 306 } else {
@@ -306,6 +328,59 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -306,6 +328,59 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
306 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> 328 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
307 * </p> 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 * Método responsável por resolver as pripriedades transiente 384 * Método responsável por resolver as pripriedades transiente
310 * 385 *
311 * @author rogerio.costa 386 * @author rogerio.costa
@@ -498,6 +573,8 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -498,6 +573,8 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
498 573
499 final Processo processo = super.getReference(id); 574 final Processo processo = super.getReference(id);
500 575
  576 + request.getSession().setAttribute("idProcesso", id);
  577 +
501 processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id)); 578 processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id));
502 579
503 return processo; 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,6 +38,10 @@ import br.com.centralit.framework.json.Views;
38 */ 38 */
39 public class HerancaSistemaVH { 39 public class HerancaSistemaVH {
40 40
  41 + /** Atributo id. */
  42 + @JsonView({ Views.GenericView.class })
  43 + private Long id;
  44 +
41 /** Atributo nome. */ 45 /** Atributo nome. */
42 @JsonView({ Views.GenericView.class }) 46 @JsonView({ Views.GenericView.class })
43 private String nome; 47 private String nome;
@@ -51,9 +55,11 @@ public class HerancaSistemaVH { @@ -51,9 +55,11 @@ public class HerancaSistemaVH {
51 * 55 *
52 * @param nome 56 * @param nome
53 * @param nomeUnidade 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 this.nome = nome; 63 this.nome = nome;
58 this.nomeUnidade = nomeUnidade; 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,12 +4,14 @@ import java.util.Collection;
4 4
5 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Controller; 6 import org.springframework.stereotype.Controller;
  7 +import org.springframework.web.bind.annotation.PathVariable;
7 import org.springframework.web.bind.annotation.RequestBody; 8 import org.springframework.web.bind.annotation.RequestBody;
8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
9 import org.springframework.web.bind.annotation.RequestMethod; 10 import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RequestParam; 11 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.ResponseBody; 12 import org.springframework.web.bind.annotation.ResponseBody;
12 13
  14 +import br.com.centralit.api.framework.json.ViewsEcm;
13 import br.com.centralit.api.model.CredencialProcesso; 15 import br.com.centralit.api.model.CredencialProcesso;
14 import br.com.centralit.api.service.CredencialProcessoService; 16 import br.com.centralit.api.service.CredencialProcessoService;
15 import br.com.centralit.api.viewHelper.GrupoUsuarioVH; 17 import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
@@ -122,18 +124,31 @@ public class CredencialProcessoController extends GenericController&lt;CredencialPr @@ -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 * Método responsável por listar as credenciais herdadas 135 * Método responsável por listar as credenciais herdadas
130 - * 136 + *
131 * @author rogerio.costa 137 * @author rogerio.costa
132 - * 138 + *
133 * @param idProcesso 139 * @param idProcesso
134 * @return 140 * @return
135 * @throws Exception 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 @RequestMapping(value = "/findCredenciaisHerdadas", method = RequestMethod.GET, produces = "application/json") 152 @RequestMapping(value = "/findCredenciaisHerdadas", method = RequestMethod.GET, produces = "application/json")
138 @ResponseBody 153 @ResponseBody
139 public ResponseBodyWrapper findCredenciaisHerdadas(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception { 154 public ResponseBodyWrapper findCredenciaisHerdadas(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception {
@@ -143,24 +158,11 @@ public class CredencialProcessoController extends GenericController&lt;CredencialPr @@ -143,24 +158,11 @@ public class CredencialProcessoController extends GenericController&lt;CredencialPr
143 return responseBody; 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 @ResponseBody 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 return responseBody; 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,8 +194,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
194 list.add(new Dominio("tipoFormaCriacao", "Anexo", "ANEXO", 2L)); 194 list.add(new Dominio("tipoFormaCriacao", "Anexo", "ANEXO", 2L));
195 list.add(new Dominio("tipoFormaCriacao", "Ambos", "AMBOS", 3L)); 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 this.dominioService.saveListIfNotExist(list); 200 this.dominioService.saveListIfNotExist(list);
201 201
@@ -408,6 +408,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -408,6 +408,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
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)); 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 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_CONFIGURACAO_GRUPO_PADRAO_USUARIO", "O grupo padrão não foi configurado para unidade vigente", dominio, modulo)); 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 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)); 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,7 +36,9 @@
36 p:jpaPropertyMap-ref="jpaPropertyMap" p:jpaVendorAdapter-ref="jpaVendorAdapter" /> 36 p:jpaPropertyMap-ref="jpaPropertyMap" p:jpaVendorAdapter-ref="jpaVendorAdapter" />
37 37
38 <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 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 <util:map id="jpaPropertyMap"> 42 <util:map id="jpaPropertyMap">
41 <entry key="generateDdl" value="${hibernate.generate.ddl}" /> 43 <entry key="generateDdl" value="${hibernate.generate.ddl}" />
42 <entry key="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl.auto}" /> 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,19 +8,19 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
8 8
9 9
10 //Iniciar credencial de acesso 10 //Iniciar credencial de acesso
11 - $scope.iniciarCredencial = function(idProcesso, credencialUsuarioProcesso){ 11 + $scope.iniciarCredencial = function(processo){
12 this.credenciarProcessoForm = $scope.credencialProcessoController.credenciarProcessoForm; 12 this.credenciarProcessoForm = $scope.credencialProcessoController.credenciarProcessoForm;
13 $scope.credenciais = []; 13 $scope.credenciais = [];
14 - $scope.idProcesso = idProcesso; 14 + $scope.processo = processo;
15 $scope.herdadas = []; 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 result.forEach(function (credencialProcesso) { 18 result.forEach(function (credencialProcesso) {
19 19
20 $scope.credenciais.push(credencialProcesso.originalElement); 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 $scope.herdadas = result; 24 $scope.herdadas = result;
25 }); 25 });
26 26
@@ -39,7 +39,7 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso @@ -39,7 +39,7 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
39 39
40 $scope.historicos = []; 40 $scope.historicos = [];
41 41
42 - HistoricoCredencialProcessoRepository.findByIdProcessoAndIdProcessoRemocao($scope.idProcesso).then(function(result) { 42 + HistoricoCredencialProcessoRepository.findByIdProcessoAndIdProcessoRemocao($scope.processo.id).then(function(result) {
43 result.forEach(function (historico) { 43 result.forEach(function (historico) {
44 44
45 $scope.historicos.push(historico.originalElement); 45 $scope.historicos.push(historico.originalElement);
@@ -81,7 +81,9 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso @@ -81,7 +81,9 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
81 81
82 var listSemGrupoAdicionado = $filter('idNotEqualObj')(result, $scope.credenciais, 'grupo'); 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,9 +101,8 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
99 var credencialProcesso = {}; 101 var credencialProcesso = {};
100 credencialProcesso.id = $scope.credencialProcesso.id; 102 credencialProcesso.id = $scope.credencialProcesso.id;
101 credencialProcesso.permiteCredenciar = $scope.credencialProcesso.permiteCredenciar; 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 //Verifica se o grupUsuario é um grupo, codigo 1 é grupo e 2 usuário 107 //Verifica se o grupUsuario é um grupo, codigo 1 é grupo e 2 usuário
107 if($scope.credencialProcesso.grupoUsuario.codigo == 1){ 108 if($scope.credencialProcesso.grupoUsuario.codigo == 1){
@@ -144,66 +145,59 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso @@ -144,66 +145,59 @@ citApp.controller(&#39;CredencialProcessoController&#39;, [&#39;$scope&#39;, &#39;CredencialProcesso
144 }; 145 };
145 146
146 //Editar credencial 147 //Editar credencial
147 - $scope.editCredencial = function(){ 148 + $scope.editCredencial = function(credencialProcesso){
148 //prepara objeto edição 149 //prepara objeto edição
149 $scope.credencialProcesso = { 150 $scope.credencialProcesso = {
150 edit : true, 151 edit : true,
151 - $$hashKey : $scope.credencialProcessoChecked.$$hashKey,  
152 - permiteCredenciar : $scope.credencialProcessoChecked.permiteCredenciar, 152 + $$hashKey : credencialProcesso.$$hashKey,
  153 + permiteCredenciar : credencialProcesso.permiteCredenciar,
153 grupoUsuario : { 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 //Exibir o dialog de confirmação de exclusão 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 //Remover credencial 168 //Remover credencial
178 $scope.remove = function(){ 169 $scope.remove = function(){
179 170
180 //Obter o index do elemento 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 //Verifica se a credencial selecionada já foi persistida 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 $scope.findHistorico(); 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 $scope.$modalConfirmInstance.dismiss('cancel'); 194 $scope.$modalConfirmInstance.dismiss('cancel');
201 }; 195 };
202 196
203 //Verifica se o usuario logado tem permissão de remover a credencial 197 //Verifica se o usuario logado tem permissão de remover a credencial
204 $scope.verificarPermissaoRemover = function(){ 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 'use strict'; 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 $scope.editProcessoRelacionado = function () { 34 $scope.editProcessoRelacionado = function () {
47 35
48 $scope.fecharPagina(); 36 $scope.fecharPagina();
@@ -594,7 +582,9 @@ citApp.controller( &#39;GerenciarProcessoController&#39;, [ @@ -594,7 +582,9 @@ citApp.controller( &#39;GerenciarProcessoController&#39;, [
594 $timeout( function () { 582 $timeout( function () {
595 // console.log('idProcesso:' + $scope.idProcesso); 583 // console.log('idProcesso:' + $scope.idProcesso);
596 ProcessoRepository.get( $scope.idProcesso ).then( function ( result ) { 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 CredencialProcessoRepository.obterCredencialUsuarioLogado( $scope.idProcesso ).then( function ( result ) { 589 CredencialProcessoRepository.obterCredencialUsuarioLogado( $scope.idProcesso ).then( function ( result ) {
600 $scope.credencialUsuarioProcesso = result.originalElement; 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,10 +17,14 @@ citApp.factory(&#39;CredencialProcessoRepository&#39;, [&#39;RestangularEcm&#39;, &#39;AbstractRepos
17 return restangularEcm.one(this.route).getList("findCredenciaisHerdadas", {idProcesso : idProcesso}).then(); 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 AbstractRepository.extend(CredencialProcessoRepository); 30 AbstractRepository.extend(CredencialProcessoRepository);
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.html
@@ -1,74 +0,0 @@ @@ -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 -