diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java index 7eb0e05..37957b6 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java @@ -66,7 +66,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; * */ @Entity -@JsonIgnoreProperties({ "$checked" }) +@JsonIgnoreProperties({ "$checked", "nivelAcessoList" }) public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo serialVersionUID. */ 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 09fb11c..004ab16 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 @@ -26,9 +26,11 @@ import br.com.centralit.api.model.DocumentoGed; import br.com.centralit.api.model.InteressadoDocumento; import br.com.centralit.api.model.Processo; import br.com.centralit.api.service.AnexoGedService; +import br.com.centralit.api.service.CredencialProcessoService; import br.com.centralit.api.service.DocumentoGedService; import br.com.centralit.api.service.DominioService; import br.com.centralit.api.service.NivelAcessoTipoDocumentoService; +import br.com.centralit.api.service.NotificacaoService; import br.com.centralit.api.service.PlanoClassificacaoService; import br.com.centralit.api.service.ProcessoService; import br.com.centralit.api.service.SigiloService; @@ -38,6 +40,9 @@ import br.com.centralit.api.service.UnidadeProcessoService; import br.com.centralit.framework.exception.BusinessException; import br.com.centralit.framework.exception.CodigoErro; import br.com.centralit.framework.model.Dominio; +import br.com.centralit.framework.model.Grupo; +import br.com.centralit.framework.model.Notificacao; +import br.com.centralit.framework.model.NotificacaoGrupo; import br.com.centralit.framework.service.arquitetura.GedFileService; import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; import br.com.centralit.framework.util.UtilColecao; @@ -124,6 +129,14 @@ public class DocumentoGedServiceImpl extends GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* - * Método responsável por + * Método responsável por validar o nivel de acesso do documento * * @author andre.silva * @@ -302,28 +316,31 @@ public class DocumentoGedServiceImpl extends GenericServiceImplRegra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* + * Método responsável por enviar notificação para os responsável sobre a criação do documento sigiloso + * + * @author rogerio.costa + * + * @param DocumentoGed + */ + private void enviarNotificacaoDocumentoSigiloso(DocumentoGed documentoGed) { + + StringBuilder sb = new StringBuilder(); + + sb.append("O documento ").append(documentoGed.getNumero()).append(" foi criado como ").append(documentoGed.getSigilo().getTipoSigilo().getDescricao()); + + Dominio tipoNotificacao = this.dominioService.findByChaveAndCodigo("tipoNotificacao", 4L); + + Dominio tipoPrioridade = this.dominioService.findByChaveAndCodigo("tipoPrioridade", 2L); + + Notificacao notificacao = new Notificacao("Documento sigiloso", sb.toString(), tipoNotificacao, tipoPrioridade, null, null, null); + + Collection grupos = this.credencialProcessoService.findGrupoPorSigilo(documentoGed.getSigilo()); + + if (!UtilColecao.isVazio(grupos)) { + + notificacao.setNotificacaoGrupos(new LinkedList()); + + for (Grupo grupo : grupos) { + + NotificacaoGrupo notificacaoGrupo = new NotificacaoGrupo(grupo, notificacao); + + notificacao.getNotificacaoGrupos().add(notificacaoGrupo); + } + + } + + this.notificacaoService.save(notificacao); + } + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * * Método responsável por obter através do id do PlanoClassificacao * * @author rogerio.costa diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js index 42c7a79..7f07e51 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js @@ -34,7 +34,6 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo delete item.unidadeNome; delete item.documentoVersao; delete item.originalElement; - delete item.nivelAcessoList; if(item.nivelAcesso != undefined && item.nivelAcesso.sigilos != null){ angular.forEach(item.nivelAcesso.sigilos, function (item) { @@ -121,12 +120,12 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo }); }; - $scope.limparSigilo = function(documento){ + $scope.limparSigilo = function(object){ $timeout(function(){ - if(documento.nivelAcesso.nivelAcesso.codigo != 0){ + if(object.nivelAcesso && object.nivelAcesso.nivelAcesso.codigo != 0){ - documento.sigilo = null; + object.sigilo = null; } }); @@ -134,8 +133,12 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo $scope.findPorIdTipoProcesso = function(idTipoProcesso){ + $scope.nivelAcessoList = []; + NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(idTipoProcesso).then(function(result) { - $scope.nivelAcessoList = result; + + $scope.nivelAcessoList = result; + }); }; diff --git a/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html b/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html index f5093b1..3718af7 100644 --- a/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html +++ b/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html @@ -60,24 +60,20 @@
+ ng-custom-options="nivelAcessoTipoProcesso.originalElement as nivelAcessoTipoProcesso.nivelAcesso.descricao for nivelAcessoTipoProcesso" + ng-list="nivelAcessoList" ng-custom-change="limparSigilo(processoValidacao)" track-by="track by nivelAcessoTipoProcesso.id"/>
- - - + + +
- +
@@ -102,7 +98,7 @@ ECM.LABEL.NUM_DOCUMENTO ECM.LABEL.TIPODOCUMENTO - ECM.LABEL.NIVEL_PROPOSTO + ECM.LABEL.NIVEL_PROPOSTO ECM.LABEL.NIVEL_REVISADO @@ -114,13 +110,13 @@
-
- +
-- libgit2 0.21.2