diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/CredencialProcessoDao.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/CredencialProcessoDao.java index 9fbe0a7..c052a1a 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/CredencialProcessoDao.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/CredencialProcessoDao.java @@ -95,4 +95,41 @@ public interface CredencialProcessoDao extends CitGenericDAO { */ CredencialProcesso obterPorGrupoEProcesso(Long idProcesso, Long idGrupo); + /** + *
+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuario contem credencial + * + * @author rogerio.costa + * + * @param idUsuario + * @param idProcesso + * @return Boolean + */ + Boolean contemCredencial(Long idUsuario, Long idProcesso); + + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através do id do processo + * + * @author rogerio.costa + * + * @param idProcesso + * @return Collection+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através da credencial e credenciado + * + * @author rogerio.costa + * + * @param credencialProcesso + * + * @return HistoricoCredencialProcesso + */ + HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/CredencialProcessoDaoHibernate.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/CredencialProcessoDaoHibernate.java index eb8e184..7f14d83 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/CredencialProcessoDaoHibernate.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/CredencialProcessoDaoHibernate.java @@ -175,4 +175,58 @@ public class CredencialProcessoDaoHibernate extends CitGenericDAOImpl implements return this.searchUnique(searchSeven, persistentClass); } + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuario contem credencial + * + * @author rogerio.costa + * + * @param idUsuario + * @param idProcesso + * @return Boolean + */ + public Boolean contemCredencial(Long idUsuario, Long idProcesso) { + + SearchSeven searchSeven = new SearchSeven(); + + searchSeven.addFilterEqual("processo.id", idProcesso); + + searchSeven.addFilterEqual("usuario.id", idUsuario); + + return UtilObjeto.isReferencia(this.search(searchSeven)); + } + + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através do id do processo + * + * @author rogerio.costa + * + * @param idProcesso + * @return Collection+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através da credencial e credenciado + * + * @author rogerio.costa + * + * @param credencialProcesso + * + * @return HistoricoCredencialProcesso + */ + public HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso) { + + SearchSeven searchSeven = new SearchSeven(); + + searchSeven.addFilterEqual("credencialProcesso.id", credencialProcesso.getId()); + + if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) { + + searchSeven.addFilterEqual("grupo.id", credencialProcesso.getGrupo().getId()); + } else { + + searchSeven.addFilterEqual("usuario.id", credencialProcesso.getUsuario().getId()); + } + + return this.searchUnique(searchSeven); + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/CredencialProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/CredencialProcesso.java index 520170d..de8c4d7 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/CredencialProcesso.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/CredencialProcesso.java @@ -10,11 +10,13 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; +import javax.persistence.Transient; import br.com.centralit.framework.json.Views; import br.com.centralit.framework.model.Grupo; import br.com.centralit.framework.model.Usuario; import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; +import br.com.centralit.framework.util.UtilObjeto; import com.fasterxml.jackson.annotation.JsonView; @@ -70,6 +72,15 @@ public class CredencialProcesso extends PersistentObjectAudit { @JsonView({ Views.CredencialProcessoView.class }) private String icon; + /** Atributo idTask. */ + @JsonView({ Views.CredencialProcessoView.class }) + private Long idTask; + + /** Atributo permiteEdicao. */ + @Transient + @JsonView({ Views.CredencialProcessoView.class }) + private Boolean permiteEdicao; + /** Atributo processo. */ @ManyToOne(fetch = FetchType.LAZY) @JsonView({ Views.CredencialProcessoView.class}) diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/HistoricoCredencialProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/HistoricoCredencialProcesso.java index 83b8dd4..cc71a7d 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/HistoricoCredencialProcesso.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/HistoricoCredencialProcesso.java @@ -14,6 +14,7 @@ import javax.persistence.TemporalType; import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; import br.com.centralit.framework.json.Views; +import br.com.centralit.framework.model.Grupo; import br.com.centralit.framework.model.Usuario; import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; import br.com.centralit.framework.util.UtilObjeto; @@ -73,6 +74,13 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit { @JsonView({ Views.HistoricoCredencialProcesso.class }) private Calendar dataDescredenciado; + /** Atributo dataDescredenciamento. */ + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) + @JsonView({ Views.HistoricoCredencialProcesso.class }) + private Calendar dataDescredenciamento; + /** Atributo credencialProcesso. */ @ManyToOne(fetch = FetchType.LAZY) @JsonView({ Views.HistoricoCredencialProcesso.class }) @@ -83,6 +91,38 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit { @JsonView({ Views.HistoricoCredencialProcesso.class }) private Usuario descredenciador; + @ManyToOne(fetch = FetchType.LAZY) + @JsonView({ Views.HistoricoCredencialProcesso.class }) + private Grupo grupo; + + /** Atributo usuario. */ + @ManyToOne(fetch = FetchType.LAZY) + @JsonView({ Views.HistoricoCredencialProcesso.class }) + private Usuario usuario; + + /** + * Responsável pela criação de novas instâncias desta classe. + */ + public HistoricoCredencialProcesso() { + + super(); + } + + /** + * Responsável pela criação de novas instâncias desta classe. + * + * @param dataDescredenciado + * @param credencialProcesso + * @param descredenciador + */ + public HistoricoCredencialProcesso( Calendar dataDescredenciado, CredencialProcesso credencialProcesso, Usuario descredenciador ) { + + this.dataDescredenciado = dataDescredenciado; + this.credencialProcesso = credencialProcesso; + this.descredenciador = descredenciador; + + } + /** * Retorna o valor do atributoid
*
@@ -163,6 +203,66 @@ public class HistoricoCredencialProcesso extends PersistentObjectAudit {
this.descredenciador = descredenciador;
}
+ /**
+ * Retorna o valor do atributo dataDescredenciamento
+ *
+ * @return Calendar
+ */
+ public Calendar getDataDescredenciamento() {
+
+ return dataDescredenciamento;
+ }
+
+ /**
+ * Define o valor do atributo dataDescredenciamento
.
+ *
+ * @param dataDescredenciamento
+ */
+ public void setDataDescredenciamento(Calendar dataDescredenciamento) {
+
+ this.dataDescredenciamento = dataDescredenciamento;
+ }
+
+ /**
+ * Retorna o valor do atributo grupo
+ *
+ * @return Grupo
+ */
+ public Grupo getGrupo() {
+
+ return grupo;
+ }
+
+ /**
+ * Define o valor do atributo grupo
.
+ *
+ * @param grupo
+ */
+ public void setGrupo(Grupo grupo) {
+
+ this.grupo = grupo;
+ }
+
+ /**
+ * Retorna o valor do atributo usuario
+ *
+ * @return Usuario
+ */
+ public Usuario getUsuario() {
+
+ return usuario;
+ }
+
+ /**
+ * Define o valor do atributo usuario
.
+ *
+ * @param usuario
+ */
+ public void setUsuario(Usuario usuario) {
+
+ this.usuario = usuario;
+ }
+
@JsonView({ Views.HistoricoCredencialProcesso.class })
public String getUnidadeUsuarioCredenciado() {
diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
index d5d073f..f4e8ac8 100644
--- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
+++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
@@ -143,7 +143,7 @@ public class Processo extends PersistentObjectUnidade {
@ManyToOne(fetch = FetchType.LAZY)
@JsonView({ Views.ProcessoList.class })
private NivelAcessoTipoProcesso nivelAcesso;
-
+
@ManyToOne(fetch = FetchType.LAZY)
@JsonView({ Views.ProcessoList.class })
private NivelAcessoTipoProcesso nivelAcessoOriginal;
diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java
index 8e19561..37be2d2 100644
--- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java
+++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java
@@ -70,9 +70,6 @@ public class TipoProcesso extends PersistentObjectUnidade {
@JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoList.class, Views.ProcessoRelacionadoList.class })
private String nome;
- @Field
- private String name;
-
/** Atributo nome. */
@JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoEdit.class })
private String processoNegocio;
@@ -207,24 +204,4 @@ public class TipoProcesso extends PersistentObjectUnidade {
this.processoNegocio = processoNegocio;
}
- /**
- * Retorna o valor do atributo name
- *
- * @return String
- */
- public String getName() {
-
- return name;
- }
-
- /**
- * Define o valor do atributo name
.
- *
- * @param name
- */
- public void setName(String name) {
-
- this.name = name;
- }
-
}
diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java
index e52413f..8b71714 100644
--- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java
+++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java
@@ -4,7 +4,6 @@ import java.util.Collection;
import br.com.centralit.api.model.CredencialProcesso;
import br.com.centralit.api.model.Processo;
-import br.com.centralit.api.viewHelper.CredencialUsuarioVH;
import br.com.centralit.api.viewHelper.GrupoUsuarioVH;
import br.com.centralit.api.viewHelper.HerancaSistemaVH;
import br.com.centralit.framework.service.arquitetura.GenericService;
@@ -123,14 +122,82 @@ public interface CredencialProcessoService extends GenericService+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuario logado não é o criador do processo, e se contem uma credencial para o mesmo + * + * @author rogerio.costa + * + * @param idProcesso + * @return boolean + */ + Boolean permiteRenunciar(Long idProcesso); + + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por renunciar credencial. * * @author rogerio.costa * * @param idProcesso + */ + Boolean renunciar(Long idProcesso); + + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
* - * @return CredencialUsuarioVH + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através do id do processo + * + * @author rogerio.costa + * + * @param idProcesso + * @return Collection+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuarioLogado tem permissão no processo + * + * @author rogerio.costa + * + * @param idProcesso + * @return boolean */ - CredencialUsuarioVH obterCredencialUsuarioLogado(Long idProcesso); + boolean contemPermissaoProcesso(Long idProcesso); } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/HistoricoCredencialProcessoService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/HistoricoCredencialProcessoService.java index fd452ca..98d04a8 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/HistoricoCredencialProcessoService.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/HistoricoCredencialProcessoService.java @@ -2,6 +2,7 @@ package br.com.centralit.api.service; import java.util.Collection; +import br.com.centralit.api.model.CredencialProcesso; import br.com.centralit.api.model.HistoricoCredencialProcesso; import br.com.centralit.framework.service.arquitetura.GenericService; @@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoService extends GenericService+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através da credencial e credenciado + * + * @author rogerio.costa + * + * @param credencialProcesso + * + * @return HistoricoCredencialProcesso + */ + HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java index b1c886b..f1172bd 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java @@ -1,13 +1,9 @@ package br.com.centralit.api.service.impl; -import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; -import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,11 +19,8 @@ import br.com.centralit.api.service.HistoricoCredencialProcessoService; import br.com.centralit.api.service.ProcessoService; import br.com.centralit.api.service.SigiloService; import br.com.centralit.api.service.UsuarioService; -import br.com.centralit.api.viewHelper.CredencialUsuarioVH; import br.com.centralit.api.viewHelper.GrupoUsuarioVH; import br.com.centralit.api.viewHelper.HerancaSistemaVH; -import br.com.centralit.framework.esi.enumerated.VariableTypeEnum; -import br.com.centralit.framework.esi.environment.EnvironmentVariable; import br.com.centralit.framework.exception.BusinessException; import br.com.centralit.framework.exception.CodigoErro; import br.com.centralit.framework.model.Grupo; @@ -95,8 +88,12 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl- * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO - *
- * - * Método responsável por startar o BusinessProcess do tipo sigiloso - * - * @author rogerio.costa - * - * @param processo - */ - private void startBusinessProcessSigiloso(Processo processo, Grupo grupoPadrao) { - - final List+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuario logado não é o criador do processo, e se contem uma credencial para o mesmo + * + * @author rogerio.costa + * + * @param idProcesso + * @return boolean + */ + public Boolean permiteRenunciar(Long idProcesso) { + + Processo processo = this.processoService.getReference(idProcesso); + + if (!this.getUsuario().getId().equals(processo.getAutor().getId())) { + + return this.credencialProcessoDao.contemCredencial(this.getUsuario().getId(), idProcesso); + } + + return Boolean.FALSE; } /** @@ -313,6 +303,13 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por executar ações da remoção + * + * @author rogerio.costa + * + * @param credencialProcesso + */ + private void executarAcoesRemocao(CredencialProcesso credencialProcesso) { + + this.removeDelegacao(credencialProcesso); + Processo processo = this.processoService.getReference(credencialProcesso.getProcesso().getId()); + credencialProcesso.setProcessoRemocao(processo); + credencialProcesso.setProcesso(null); + this.saveHistoricoDescredenciado(credencialProcesso); + } + + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por remover a delegação do grupo/usuario no processo + * + * @author rogerio.costa + * + * @param credencialProcesso + */ + private void removeDelegacao(CredencialProcesso credencialProcesso) { + + List+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * * Método responsável por salvar o histórico do descredenciamento * * @author rogerio.costa @@ -346,10 +423,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * * Método responsável por listar grupo e usuarios que tem credenciais herdadas do sistema. * * @author rogerio.costa @@ -388,11 +488,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuario logado está alocado no grupo + * + * @author rogerio.costa * - * @return CredencialUsuarioVH + * @param grupo + * + * @return Boolean */ - public CredencialUsuarioVH obterCredencialUsuarioLogado(Long idProcesso) { + private Boolean contemUsuarioLogadoNoGrupo(Grupo grupo) { - CredencialUsuarioVH credencialUsuarioVH = new CredencialUsuarioVH(); + for (GrupoUsuario grupoUsuario : grupo.getGrupoUsuarios()) { - Processo processo = this.processoService.getReference(idProcesso); + if (grupoUsuario.getUsuario().getId().equals(this.getUsuario().getId())) { - Sigilo sigilo = this.sigiloService.getReference(processo.getSigilo().getId()); + return Boolean.TRUE; - // valida de se o usuario logado é autor do processo - if (processo.getAutor().getId().equals(this.getUsuario().getId())) { + } + } - credencialUsuarioVH.setPermiteAtribuirCredencial(Boolean.TRUE); - credencialUsuarioVH.setPermiteRemoverCredencial(Boolean.FALSE); + return Boolean.FALSE; + } - } else { + /** + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar grupos e usuarios do sistema + * + * @author rogerio.costa + * + * @return Collection+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por verificar se o usuario tem permissão para credenciar + * + * @author rogerio.costa + * + */ + @Override + public Boolean isCredenciar(Long idProcesso) { + + Processo processo = this.processoService.getReference(idProcesso); + + if (UtilObjeto.isReferencia(processo.getSigilo())) { - CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId()); + Sigilo sigilo = this.sigiloService.getReference(processo.getSigilo().getId()); - // Verifica se o usuario contem credencial no processo. - if (UtilObjeto.isReferencia(credencialProcesso)) { + // valida de se o usuario logado é autor do processo + if (processo.getAutor().getId().equals(this.getUsuario().getId())) { - credencialUsuarioVH.setPermiteAtribuirCredencial(credencialProcesso.getPermiteCredenciar()); - credencialUsuarioVH.setId(credencialProcesso.getId()); - // Verifica se o usuario tem permissão herdada. - } else if (contemPermissaoHerdada(sigilo)) { + return Boolean.TRUE; - credencialUsuarioVH.setPermiteAtribuirCredencial(Boolean.TRUE); - credencialUsuarioVH.setPermiteRemoverCredencial(Boolean.TRUE); } else { - // Verifica as credenciais vinculadas no processo - for (CredencialProcesso credencialProcessoVinculada : processo.getCredenciais()) { - if (UtilObjeto.isReferencia(credencialProcessoVinculada.getGrupo())) { + CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId()); - Grupo grupo = this.grupoService.getReference(credencialProcessoVinculada.getGrupo().getId()); + // Verifica se o usuario contem credencial no processo. + if (UtilObjeto.isReferencia(credencialProcesso)) { - if (this.contemUsuarioLogadoNoGrupo(grupo)) { + return credencialProcesso.getPermiteCredenciar(); + + // Verifica se o usuario tem permissão herdada. + } else if (contemPermissaoHerdada(sigilo)) { + + return Boolean.TRUE; + + } else { + // Verifica as credenciais vinculadas no processo + for (CredencialProcesso credencialProcessoVinculada : processo.getCredenciais()) { - credencialUsuarioVH.setPermiteAtribuirCredencial(credencialProcessoVinculada.getPermiteCredenciar()); + if (UtilObjeto.isReferencia(credencialProcessoVinculada.getGrupo())) { + + Grupo grupo = this.grupoService.getReference(credencialProcessoVinculada.getGrupo().getId()); + + if (this.contemUsuarioLogadoNoGrupo(grupo)) { + + return credencialProcessoVinculada.getPermiteCredenciar(); + } } } + } } } - return credencialUsuarioVH; + + return Boolean.FALSE; } /** @@ -498,25 +680,19 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por listar através da credencial e credenciado + * + * @author rogerio.costa + * + * @param credencialProcesso + * + * @return HistoricoCredencialProcesso + */ + public HistoricoCredencialProcesso findByCredencialAndCredenciado(CredencialProcesso credencialProcesso) { + + return this.historicoCredencialProcessoDao.findByCredencialAndCredenciado(credencialProcesso); + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java index 7a84575..d56327a 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java @@ -6,9 +6,12 @@ import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import javax.servlet.http.HttpServletRequest; + import org.apache.commons.lang.StringUtils; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +25,8 @@ import br.com.centralit.api.model.EstruturaOrganizacionalECM; import br.com.centralit.api.model.InteressadoProcesso; import br.com.centralit.api.model.PlanoClassificacao; import br.com.centralit.api.model.Processo; +import br.com.centralit.api.model.Sigilo; +import br.com.centralit.api.model.SigiloPrivilegio; import br.com.centralit.api.model.Temporalidade; import br.com.centralit.api.model.UnidadeProcesso; import br.com.centralit.api.service.CredencialProcessoService; @@ -40,6 +45,7 @@ import br.com.centralit.framework.esi.environment.EnvironmentOutput; import br.com.centralit.framework.esi.environment.EnvironmentVariable; import br.com.centralit.framework.exception.BusinessException; import br.com.centralit.framework.exception.CodigoErro; +import br.com.centralit.framework.model.Grupo; import br.com.centralit.framework.model.Unidade; import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; import br.com.centralit.framework.util.UtilColecao; @@ -123,6 +129,10 @@ public class ProcessoServiceImpl extends GenericServiceImpl+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por obter grupos através do sigilo + * + * @author rogerio.costa + * + * @param sigilo + * + * @return Collection+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * * Método responsável por resolver as pripriedades transiente * * @author rogerio.costa @@ -498,6 +573,8 @@ public class ProcessoServiceImpl extends GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO
- * + *+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * * Método responsável por listar as credenciais herdadas - * + * * @author rogerio.costa - * + * * @param idProcesso * @return * @throws Exception */ + @RequestMapping(value = "/findByIdProcesso", method = RequestMethod.GET, produces = "application/json") + @ResponseBody + public ResponseBodyWrapper findByIdProcesso(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception { + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.credencialProcessoService.findByIdProcesso(idProcesso), Views.CredencialProcessoView.class); + + return responseBody; + } + @RequestMapping(value = "/findCredenciaisHerdadas", method = RequestMethod.GET, produces = "application/json") @ResponseBody public ResponseBodyWrapper findCredenciaisHerdadas(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception { @@ -143,24 +158,11 @@ public class CredencialProcessoController extends GenericControllerRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO
- * - * Método responsável por obter as credenciais do usuario logado - * - * @author rogerio.costa - * - * @param idProcesso - * @return - * @throws Exception - */ - @RequestMapping(value = "/obterCredencialUsuarioLogado", method = RequestMethod.GET, produces = "application/json") + @RequestMapping(method = RequestMethod.DELETE, value = "/renunciar/{idProcesso}") @ResponseBody - public ResponseBodyWrapper obterCredencialUsuarioLogado(@RequestParam(value = "idProcesso") Long idProcesso) throws Exception { + public ResponseBodyWrapper renunciar(@PathVariable("idProcesso") Long idProcesso) { - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.credencialProcessoService.obterCredencialUsuarioLogado(idProcesso), Views.GenericView.class); + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.credencialProcessoService.renunciar(idProcesso), getEditView()); return responseBody; } diff --git a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java index 974e6c2..865d42a 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java @@ -194,8 +194,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen list.add(new Dominio("tipoFormaCriacao", "Anexo", "ANEXO", 2L)); list.add(new Dominio("tipoFormaCriacao", "Ambos", "AMBOS", 3L)); - list.add(new Dominio("tipoProtocoloNup", "Automático", "NUP_NOVO", 1L, Boolean.FALSE)); - list.add(new Dominio("tipoProtocoloNup", "Informado", "EXTERNO", 2L, Boolean.FALSE)); + list.add(new Dominio("tipoProtocoloNup", "Automático", "EXTERNO", 1L, Boolean.FALSE)); + list.add(new Dominio("tipoProtocoloNup", "Informado", "NUP_NOVO", 2L, Boolean.FALSE)); this.dominioService.saveListIfNotExist(list); @@ -408,6 +408,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_UNIDADE_ECM_VIGENTE_USUARIO", "O usuário vigente não possui unidade organizacional ECM vinculada!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_CONFIGURACAO_GRUPO_PADRAO_USUARIO", "O grupo padrão não foi configurado para unidade vigente", dominio, modulo)); 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)); + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.PERMISSAO_OPERACAO", "Você não tem permissão para executar a operação.", dominio, modulo)); } diff --git a/cit-ecm-web/src/main/resources/spring/applicationContext.xml b/cit-ecm-web/src/main/resources/spring/applicationContext.xml index 3cc1d35..430498d 100644 --- a/cit-ecm-web/src/main/resources/spring/applicationContext.xml +++ b/cit-ecm-web/src/main/resources/spring/applicationContext.xml @@ -36,7 +36,9 @@ p:jpaPropertyMap-ref="jpaPropertyMap" p:jpaVendorAdapter-ref="jpaVendorAdapter" />