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 + */ + Collection findByIdProcesso(Long idProcesso); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/HistoricoCredencialProcessoDao.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/HistoricoCredencialProcessoDao.java index 9fbbc98..085be7d 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/HistoricoCredencialProcessoDao.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/HistoricoCredencialProcessoDao.java @@ -2,6 +2,7 @@ package br.com.centralit.api.dao; import java.util.Collection; +import br.com.centralit.api.model.CredencialProcesso; import br.com.centralit.api.model.HistoricoCredencialProcesso; import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; @@ -58,4 +59,23 @@ public interface HistoricoCredencialProcessoDao extends CitGenericDAO { */ Collection findByIdProcessoAndIdProcessoRemocao(Long idProcesso); + /** + *

+ * 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 + */ + public Collection findByIdProcesso(Long idProcesso) { + + SearchSeven searchSeven = new SearchSeven(); + + searchSeven.addFilterEqual("processo.id", idProcesso); + + return this.search(searchSeven); + + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/HistoricoCredencialProcessoDaoHibernate.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/HistoricoCredencialProcessoDaoHibernate.java index 5a958d6..c817144 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/HistoricoCredencialProcessoDaoHibernate.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/HistoricoCredencialProcessoDaoHibernate.java @@ -81,4 +81,38 @@ public class HistoricoCredencialProcessoDaoHibernate extends CitGenericDAOImpl i } + /** + *

+ * 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 atributo id * @@ -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 GenericServiceRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* - * Método responsável por montar um objeto com a credencial do usuario com base nas funcionalidades do sistema + * Método responsável por verificar se o usuario tem permissão para credenciar + * + * @author rogerio.costa + * + */ + Boolean isCredenciar(Long idProcesso); + + /** + *

+ * 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 + */ + Collection findByIdProcesso(Long id); + + /** + *

+ * 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 findByIdProcessoAndIdProcessoRemocao(Long idProcesso); + /** + *

+ * 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 historicos; + /** + * Responsável pela criação de novas instâncias desta classe. + * + * @param credencialProcessoDao + */ + private static final String SEM_PERMISSAO_OPERACAO = "ECM.VALIDACAO.PERMISSAO_OPERACAO"; /** * Responsável pela criação de novas instâncias desta classe. @@ -131,9 +128,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl save(Collection credenciais) { - this.resolveTransiente(credenciais); + this.resolveTransiente((List) credenciais); - return super.saveList((List) credenciais); + credenciais = super.saveList((List) credenciais); + + return this.montarPermissaoEdicao(credenciais); } @@ -176,52 +175,9 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl - * Iniciativa(s): NUMERO_INICIATIVA - *

- * - *

- * 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 variaveis = new ArrayList(); - - final Map mapProcesso = new HashMap(); - - mapProcesso.put("nivelAcesso", processo.getNivelAcesso().getNivelAcesso().getDescricao()); - mapProcesso.put("nup", processo.getNup()); - mapProcesso.put("assunto", processo.getAssunto().getCodigo() + '/' + processo.getAssunto().getNome()); - final JSONObject processoJSON = new JSONObject(mapProcesso); - - variaveis.add(new EnvironmentVariable("idProcesso", VariableTypeEnum.LONG, processo.getId(), false)); - variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false)); - variaveis.add(new EnvironmentVariable("nup", VariableTypeEnum.JSON, processo.getNup(), false)); - variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, grupoPadrao.getSigla(), false)); - - variaveis.add(new EnvironmentVariable("processoSIGAD", VariableTypeEnum.JSON, processoJSON, false)); - - if (processo.getTipoProcesso().getProcessoNegocio() == null) { - // O processo deverá estar vinculado a um fluxo no BPE/ESI - throw new BusinessException("ECM.VALIDACAO.ERRO_VINCULO_FLUXO_BPE_ESI", CodigoErro.REGRA_NEGOCIO.getValue()); } - this.startBusinessProcess(processo.getTipoProcesso().getProcessoNegocio(), variaveis); } /** @@ -266,9 +222,10 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl credenciais) { + private void resolveTransiente(List credenciais) { - this.historicos = new LinkedList(); + List grupos = new LinkedList(); + List usuarios = new LinkedList(); for (CredencialProcesso credencialProcesso : credenciais) { @@ -277,9 +234,11 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl()); credencialProcesso.getHistoricoCredencialProcessos().add(this.addHistorico(credencialProcesso)); + // Delega o processo para os grupos e usuario credenciados + this.delegateUserTask(credencialProcesso.getIdTask(), grupos, usuarios); } } + + } + + /** + *

+ * 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 GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* + * Método responsável por validar a permissão + * + * @author rogerio.costa + * + * @param credencialProcesso + */ + private void validarPermissaoRemover(CredencialProcesso credencialProcesso) { + + if (!credencialProcesso.getAutor().getId().equals(this.getUsuario().getId()) && !this.contemPermissaoHerdada(credencialProcesso.getProcesso().getSigilo())) { + + throw new BusinessException(SEM_PERMISSAO_OPERACAO, CodigoErro.REGRA_NEGOCIO.getValue()); + + } + } + + /** + *

+ * 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 listGrupoUsuarioRemocao = new LinkedList(); + + if (UtilObjeto.isReferencia(credencialProcesso.getGrupo())) { + + listGrupoUsuarioRemocao.add(credencialProcesso.getGrupo().getSigla()); + + this.removeUserTaskDelegation(credencialProcesso.getIdTask(), listGrupoUsuarioRemocao, null); + } else { + + listGrupoUsuarioRemocao.add(credencialProcesso.getUsuario().getUsername()); + + this.removeUserTaskDelegation(credencialProcesso.getIdTask(), null, listGrupoUsuarioRemocao); + + } + } + + /** + *

+ * 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 GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* + * Método responsável por renunciar credencial. + * + * @author rogerio.costa + * + * @param idProcesso + */ + public Boolean renunciar(Long idProcesso) { + + CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId()); + + this.executarAcoesRemocao(credencialProcesso); + + return super.removeById(credencialProcesso.getId()); + } + + /** + *

+ * 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 GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* - * Método responsável por montar um objeto com a credencial do usuario com base nas funcionalidades do sistema + * Método responsável por verificar se o usuarioLogado tem permissão herdadas do sistema para o sigilo * * @author rogerio.costa * - * @param idProcesso + * @param sigilo + */ + public Boolean contemPermissaoHerdada(Sigilo sigilo) { + + Collection gruposHerdados = this.findGrupoPorSigilo(sigilo); + + for (Grupo grupo : gruposHerdados) { + + if (contemUsuarioLogadoNoGrupo(grupo)) + + return Boolean.TRUE; + + } + + return Boolean.FALSE; + } + + /** + *

+ * 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 + */ + @Override + public Collection findGrupoUsuarioByName(String nome) { + + return this.credencialProcessoDao.findGrupoUsuarioByName(nome); + } + + /** + *

+ * 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 GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* - * Método responsável por verificar se o usuarioLogado tem permissão herdadas do sistema para o sigilo + * Método responsável por listar através do id do processo * * @author rogerio.costa * - * @param sigilo + * @param idProcesso + * @return Collection */ - private Boolean contemPermissaoHerdada(Sigilo sigilo) { + public Collection findByIdProcesso(Long id) { - Collection gruposHerdados = this.findGrupoPorSigilo(sigilo); - - for (Grupo grupo : gruposHerdados) { - - if (contemUsuarioLogadoNoGrupo(grupo)) + Collection credenciais = this.credencialProcessoDao.findByIdProcesso(id); - return Boolean.TRUE; - - } + return this.montarPermissaoEdicao(credenciais); - return Boolean.FALSE; } /** @@ -528,26 +704,24 @@ public class CredencialProcessoServiceImpl extends GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* - * Método responsável por verificar se o usuario logado está alocado no grupo + * Método responsável por montar a parmissão de edição do usuarioLogado * * @author rogerio.costa * - * @param grupo - * - * @return Boolean + * @param credenciais + * @return */ - private Boolean contemUsuarioLogadoNoGrupo(Grupo grupo) { - - for (GrupoUsuario grupoUsuario : grupo.getGrupoUsuarios()) { + private Collection montarPermissaoEdicao(Collection credenciais) { - if (grupoUsuario.getUsuario().getId().equals(this.getUsuario().getId())) { + if (!UtilColecao.isVazio(credenciais)) { - return Boolean.TRUE; + for (CredencialProcesso credencialProcesso : credenciais) { + credencialProcesso.setPermiteEdicao(credencialProcesso.getAutor().getId().equals(this.getUsuario().getId()) || this.contemPermissaoHerdada(credencialProcesso.getProcesso().getSigilo())); } - } - return Boolean.FALSE; + } + return credenciais; } /** @@ -559,16 +733,55 @@ public class CredencialProcessoServiceImpl extends GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* - * Método responsável por listar grupos e usuarios do sistema + * Método responsável por verificar se o usuarioLogado tem permissão no processo * * @author rogerio.costa * - * @return Collection + * @param idProcesso + * @return boolean */ @Override - public Collection findGrupoUsuarioByName(String nome) { + public boolean contemPermissaoProcesso(Long idProcesso) { - return this.credencialProcessoDao.findGrupoUsuarioByName(nome); + if (UtilObjeto.isReferencia(idProcesso)) { + + Processo processo = this.processoService.getReference(idProcesso); + + if (UtilObjeto.isReferencia(processo.getSigilo())) { + + CredencialProcesso credencialProcesso = this.credencialProcessoDao.obterPorUsuarioEProcesso(idProcesso, this.getUsuario().getId()); + + if (UtilObjeto.isReferencia(credencialProcesso)) { + + return Boolean.TRUE; + } + + Sigilo sigilo = this.sigiloService.getReference(processo.getSigilo().getId()); + + if (contemPermissaoHerdada(sigilo)) { + + return Boolean.TRUE; + } + + // Verifica as credenciais vinculadas no processo + for (CredencialProcesso credencialProcessoVinculada : processo.getCredenciais()) { + + if (UtilObjeto.isReferencia(credencialProcessoVinculada.getGrupo())) { + + Grupo grupo = this.grupoService.getReference(credencialProcessoVinculada.getGrupo().getId()); + + if (this.contemUsuarioLogadoNoGrupo(grupo)) { + + return Boolean.TRUE; + } + } + } + + } + + } + + return Boolean.FALSE; } } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java index e2589d4..df7eae7 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java @@ -775,9 +775,8 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl */ - public Collection findByIdProcessoAndIdProcessoRemocao(Long idProcesso){ - + public Collection findByIdProcessoAndIdProcessoRemocao(Long idProcesso) { + return this.historicoCredencialProcessoDao.findByIdProcessoAndIdProcessoRemocao(idProcesso); } + /** + *

+ * 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 impl @Autowired private CredencialProcessoService credencialProcessoService; + /** Atributo request. */ + @Autowired + private HttpServletRequest request; + @Autowired public ProcessoServiceImpl( final ProcessoDao processoDao, @Qualifier("processoValidator") final Validator validator ) { @@ -142,7 +152,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl impl final Processo processo = super.save(entity); - /* this.gerarCredenciais(processo); */ +// this.credencialProcessoService.saveCredenciais(processo); if (processo.getTipoProtocolo().getCodigo().equals(1L)) { this.gerarNUP(processo); @@ -274,11 +284,23 @@ public class ProcessoServiceImpl extends GenericServiceImpl impl final JSONObject processoJSON = new JSONObject(mapProcesso); variaveis.add(new EnvironmentVariable("idProcesso", VariableTypeEnum.LONG, processo.getId(), false)); - variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false)); variaveis.add(new EnvironmentVariable("nup", VariableTypeEnum.JSON, processo.getNup(), false)); + variaveis.add(new EnvironmentVariable("solicitante", VariableTypeEnum.TEXT, processo.getAutor().getUsername(), false)); + + // Verifica se o processo é sigiloso. + if (UtilObjeto.isReferencia(processo.getSigilo())) { - // Verifica se foi configurado um grupo padrão para unidade o usuario. - if (UtilObjeto.isReferencia(unidade.getGrupo())) { + variaveis.add(new EnvironmentVariable("usuario_criador_processo_sigiloso", VariableTypeEnum.JSON, processo.getAutor().getUsername(), false)); + + List gruposPadraoSigilo = (List) this.findGrupoPorSigilo(processo.getSigilo()); + + if (!UtilColecao.isVazio(gruposPadraoSigilo)) { + //No momento o sistema está aceitando somente um grupo para gerenciar cada nivel de sigilo. + variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, gruposPadraoSigilo.get(0).getSigla(), false)); + } + + // Verifica se foi configurado um grupo padrão para unidade o usuario. + } else if (UtilObjeto.isReferencia(unidade.getGrupo())) { variaveis.add(new EnvironmentVariable("grupoPadrao", VariableTypeEnum.TEXT, unidade.getGrupo().getSigla(), false)); } else { @@ -306,6 +328,59 @@ public class ProcessoServiceImpl extends GenericServiceImpl impl * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* + * Método responsável por retornar os privilegios através do sigilo + * + * @author rogerio.costa + * + * @param sigilo + * @return Collection + */ + private Collection getPrivilegios(Sigilo sigilo) { + + Collection listIdsPrivilegio = new LinkedList(); + // Cria uma lista de privilegios relacionados ao sigilo do processo + for (SigiloPrivilegio sigiloPrivilegio : sigilo.getSigiloPrivilegios()) { + + listIdsPrivilegio.add(sigiloPrivilegio.getPrivilegio().getId()); + } + return listIdsPrivilegio; + } + + /** + *

+ * 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 + */ + private Collection findGrupoPorSigilo(Sigilo sigilo) { + + Collection idPrivilegios = this.getPrivilegios(sigilo); + + Collection grupos = this.grupoService.findByPrivilegio(idPrivilegios); + + return grupos; + } + + /** + *

+ * 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 GenericServiceImpl impl final Processo processo = super.getReference(id); + request.getSession().setAttribute("idProcesso", id); + processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id)); return processo; diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/viewHelper/HerancaSistemaVH.java b/cit-ecm-api/src/main/java/br/com/centralit/api/viewHelper/HerancaSistemaVH.java index 462b1e0..31e26e5 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/viewHelper/HerancaSistemaVH.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/viewHelper/HerancaSistemaVH.java @@ -38,6 +38,10 @@ import br.com.centralit.framework.json.Views; */ public class HerancaSistemaVH { + /** Atributo id. */ + @JsonView({ Views.GenericView.class }) + private Long id; + /** Atributo nome. */ @JsonView({ Views.GenericView.class }) private String nome; @@ -51,9 +55,11 @@ public class HerancaSistemaVH { * * @param nome * @param nomeUnidade + * @param id */ - public HerancaSistemaVH( String nome, String nomeUnidade ) { + public HerancaSistemaVH( Long id, String nome, String nomeUnidade ) { + this.id = id; this.nome = nome; this.nomeUnidade = nomeUnidade; } diff --git a/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java b/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java index 04656d6..7d81b67 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java @@ -4,12 +4,14 @@ import java.util.Collection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import br.com.centralit.api.framework.json.ViewsEcm; import br.com.centralit.api.model.CredencialProcesso; import br.com.centralit.api.service.CredencialProcessoService; import br.com.centralit.api.viewHelper.GrupoUsuarioVH; @@ -122,18 +124,31 @@ public class CredencialProcessoController extends GenericControllerIniciativa(s): NUMERO_INICIATIVA

- * - *

Regra(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 GenericControllerIniciativa(s): NUMERO_INICIATIVA

- * - *

Regra(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" /> - + + + diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/CredencialProcessoController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/CredencialProcessoController.js index ad659cb..11a3a1e 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/CredencialProcessoController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/CredencialProcessoController.js @@ -8,19 +8,19 @@ citApp.controller('CredencialProcessoController', ['$scope', 'CredencialProcesso //Iniciar credencial de acesso - $scope.iniciarCredencial = function(idProcesso, credencialUsuarioProcesso){ + $scope.iniciarCredencial = function(processo){ this.credenciarProcessoForm = $scope.credencialProcessoController.credenciarProcessoForm; $scope.credenciais = []; - $scope.idProcesso = idProcesso; + $scope.processo = processo; $scope.herdadas = []; - $scope.credencialUsuarioProcesso = credencialUsuarioProcesso; - CredencialProcessoRepository.findByIdJoin('processo.id', $scope.idProcesso).then(function(result) { + $scope.credencialProcesso.grupoUsuario = null; + CredencialProcessoRepository.findByIdProcesso($scope.processo.id).then(function(result) { result.forEach(function (credencialProcesso) { $scope.credenciais.push(credencialProcesso.originalElement); }); - CredencialProcessoRepository.findCredenciaisHerdadas($scope.idProcesso).then(function(result) { + CredencialProcessoRepository.findCredenciaisHerdadas($scope.processo.id).then(function(result) { $scope.herdadas = result; }); @@ -39,7 +39,7 @@ citApp.controller('CredencialProcessoController', ['$scope', 'CredencialProcesso $scope.historicos = []; - HistoricoCredencialProcessoRepository.findByIdProcessoAndIdProcessoRemocao($scope.idProcesso).then(function(result) { + HistoricoCredencialProcessoRepository.findByIdProcessoAndIdProcessoRemocao($scope.processo.id).then(function(result) { result.forEach(function (historico) { $scope.historicos.push(historico.originalElement); @@ -81,7 +81,9 @@ citApp.controller('CredencialProcessoController', ['$scope', 'CredencialProcesso var listSemGrupoAdicionado = $filter('idNotEqualObj')(result, $scope.credenciais, 'grupo'); - return $filter('idNotEqualObj')(listSemGrupoAdicionado, $scope.credenciais, 'usuario'); + var credenciadosFiltrados = $filter('idNotEqualObj')(listSemGrupoAdicionado, $scope.credenciais, 'usuario'); + + return $filter('idNotEqual')(credenciadosFiltrados, $scope.herdadas); }); }; @@ -99,9 +101,8 @@ citApp.controller('CredencialProcessoController', ['$scope', 'CredencialProcesso var credencialProcesso = {}; credencialProcesso.id = $scope.credencialProcesso.id; credencialProcesso.permiteCredenciar = $scope.credencialProcesso.permiteCredenciar; - credencialProcesso.processo = { - id : $scope.idProcesso - }; + credencialProcesso.processo = $scope.processo; + credencialProcesso.idTask = $scope.processo.idTask; //Verifica se o grupUsuario é um grupo, codigo 1 é grupo e 2 usuário if($scope.credencialProcesso.grupoUsuario.codigo == 1){ @@ -144,66 +145,59 @@ citApp.controller('CredencialProcessoController', ['$scope', 'CredencialProcesso }; //Editar credencial - $scope.editCredencial = function(){ + $scope.editCredencial = function(credencialProcesso){ //prepara objeto edição $scope.credencialProcesso = { edit : true, - $$hashKey : $scope.credencialProcessoChecked.$$hashKey, - permiteCredenciar : $scope.credencialProcessoChecked.permiteCredenciar, + $$hashKey : credencialProcesso.$$hashKey, + permiteCredenciar : credencialProcesso.permiteCredenciar, grupoUsuario : { - nome : $scope.credencialProcessoChecked.grupo ? $scope.credencialProcessoChecked.grupo.nome : $scope.credencialProcessoChecked.usuario.username, - id : $scope.credencialProcessoChecked.grupo ? $scope.credencialProcessoChecked.grupo.id : $scope.credencialProcessoChecked.usuario.id + nome : credencialProcesso.grupo ? credencialProcesso.grupo.nome : credencialProcesso.usuario.username, + id : credencialProcesso.grupo ? credencialProcesso.grupo.id : credencialProcesso.usuario.id } }; - $scope.credencialProcessoChecked = null; - }; //Exibir o dialog de confirmação de exclusão - $scope.exibirDialogRemocao = function(){ - //Verifica se alguma credencial foi selecioanda - if(!$scope.credencialProcessoChecked){ - - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO')); - - }else{ + $scope.exibirDialogRemocao = function(credencialProcesso){ - $scope.$openModalConfirm({message: $translate.instant('LABEL.CONFIRMA_EXCLUSAO'), callback: $scope.remove}); - } - + $scope.$openModalConfirm({message: $translate.instant('LABEL.CONFIRMA_EXCLUSAO'), callback: $scope.remove, item : credencialProcesso}); }; //Remover credencial $scope.remove = function(){ //Obter o index do elemento - var index = $scope.credenciais.indexOf($scope.credencialProcessoChecked); - - $scope.showAlert("success", $translate.instant('MSG.EXCLUSAO_SUCESSO')); - + var index = $scope.credenciais.indexOf(this.item); + //Verifica se a credencial selecionada já foi persistida - if($scope.credencialProcessoChecked.id){ + if(this.item.id){ - CredencialProcessoRepository.remove($scope.credencialProcessoChecked).then(function() { - + CredencialProcessoRepository.remove(this.item).then(function() { + $scope.showAlert("success", $translate.instant('MSG.EXCLUSAO_SUCESSO')); + //Remove a credencial da lista de credenciais + $scope.credenciais.splice(index , 1); + $scope.credencialProcessoChecked = null; $scope.findHistorico(); }); + }else{ + $scope.showAlert("success", $translate.instant('MSG.EXCLUSAO_SUCESSO')); + //Remove a credencial da lista de credenciais + $scope.credenciais.splice(index , 1); + + $scope.credencialProcessoChecked = null; + } - //Remove a credencial da lista de credenciais - $scope.credenciais.splice(index , 1); - - $scope.credencialProcessoChecked = null; - $scope.$modalConfirmInstance.dismiss('cancel'); }; //Verifica se o usuario logado tem permissão de remover a credencial $scope.verificarPermissaoRemover = function(){ - $scope.permiteRemoverCredencial = $scope.usuarioLogado.id === $scope.credencialProcessoChecked.autor.id || $scope.credencialUsuarioProcesso.permiteRemoverCredencial; + $scope.permiteRemoverCredencial = $scope.usuarioLogado.id === $scope.credencialProcessoChecked.autor.id; }; diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js index 86f697f..194cbf3 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js @@ -1,48 +1,36 @@ 'use strict'; -citApp.controller( 'GerenciarProcessoController', [ - '$scope', - '$translate', - '$timeout', - 'GerenciarProcessoRepository', - 'ProcessoRepository', - 'RuntimeManagerRepository', - '$rootScope', - 'DocumentoGedRepository', - 'HistoricoAlteracaoProcessoRepository', - 'UnidadeRepository', - 'UnidadeProcessoRepository', - 'CredencialProcessoRepository', - function GerenciarProcessoController ( $scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository, $rootScope, DocumentoGedRepository, - HistoricoAlteracaoProcessoRepository, UnidadeRepository, UnidadeProcessoRepository, CredencialProcessoRepository ) { - - $scope.processo = {}; - $scope.iconAnexo = {}; - $scope.taskVariables = []; - $scope.unidades = []; - - // INICIALIZA VARIAVEIS PARA HABILITAR E FECHAR DIVS DE AÇÕES DO PROCESSO - - $scope.isHistoricoProcesso = true; - $scope.fecharPagina = function () { - $scope.isProcessoRelacionado = false; - $scope.isDocumentoEdit = false; - $scope.isProcessoEdit = false; - $scope.isHistoricoProcesso = false; - $scope.isVersoesDocumento = false; - $scope.isEnviarProcesso = false; - $scope.isCancelarDocumento = false; - $scope.isJustificativaAcaoProcesso = false; - $scope.isHistoricoJustificativa = false; - $scope.isAnexarProcesso = false; - $scope.widgetExemploIsCollapsed = true; - $scope.tratimitado(); - $scope.isGerenciarCredencialProcesso = false; - $scope.isClassificarProcessoDocumento = false; - - }; - // CRIAR RELACIONAMENTO DE PROCESSO +citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$timeout','GerenciarProcessoRepository', 'ProcessoRepository', 'RuntimeManagerRepository','$rootScope', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository','UnidadeRepository','UnidadeProcessoRepository','CredencialProcessoRepository', + function GerenciarProcessoController($scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository,$rootScope, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository,UnidadeRepository, UnidadeProcessoRepository,CredencialProcessoRepository ) { + + $scope.processo = {}; + $scope.iconAnexo = {}; + $scope.taskVariables = []; + $scope.unidades = []; + + $scope.url = '/cit-ecm-web/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.jsp?i=' + (new Date).getTime(); + + //INICIALIZA VARIAVEIS PARA HABILITAR E FECHAR DIVS DE AÇÕES DO PROCESSO + + $scope.isHistoricoProcesso = true; + $scope.fecharPagina = function() { + $scope.isProcessoRelacionado = false; + $scope.isDocumentoEdit = false; + $scope.isProcessoEdit = false; + $scope.isHistoricoProcesso = false; + $scope.isVersoesDocumento = false; + $scope.isEnviarProcesso = false; + $scope.isCancelarDocumento = false; + $scope.isJustificativaAcaoProcesso = false; + $scope.isHistoricoJustificativa = false; + $scope.isAnexarProcesso = false; + $scope.widgetExemploIsCollapsed = true; + $scope.tratimitado(); + $scope.isGerenciarCredencialProcesso = false; + $scope.isClassificarProcessoDocumento = false; + + // CRIAR RELACIONAMENTO DE PROCESSO $scope.editProcessoRelacionado = function () { $scope.fecharPagina(); @@ -594,7 +582,9 @@ citApp.controller( 'GerenciarProcessoController', [ $timeout( function () { // console.log('idProcesso:' + $scope.idProcesso); ProcessoRepository.get( $scope.idProcesso ).then( function ( result ) { - $scope.processo = result.originalElement; + $scope.processo = result.originalElement; + $scope.apresentarCabecalho = true; + $scope.processo.idTask = $scope.task.id; CredencialProcessoRepository.obterCredencialUsuarioLogado( $scope.idProcesso ).then( function ( result ) { $scope.credencialUsuarioProcesso = result.originalElement; diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js index cadcb85..daf3594 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js @@ -17,10 +17,14 @@ citApp.factory('CredencialProcessoRepository', ['RestangularEcm', 'AbstractRepos return restangularEcm.one(this.route).getList("findCredenciaisHerdadas", {idProcesso : idProcesso}).then(); }; - this.obterCredencialUsuarioLogado = function(idProcesso) { - return restangularEcm.one(this.route + "/obterCredencialUsuarioLogado").get({idProcesso : idProcesso}); + this.findByIdProcesso = function(idProcesso) { + return restangularEcm.one(this.route).getList("findByIdProcesso", {idProcesso : idProcesso}).then(); }; + this.renunciar = function (idProcesso) { + return restangularEcm.one(this.route + "/renunciar", idProcesso).remove(); + }; + } AbstractRepository.extend(CredencialProcessoRepository); diff --git a/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.html b/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.html deleted file mode 100644 index 25730b3..0000000 --- a/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeCabecalhoGerenciarProcesso.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -- libgit2 0.21.2