From 285f28461fa6a541dbf0c4b2562b5a9c078b9ac7 Mon Sep 17 00:00:00 2001 From: ROGERIO CASSIMIRO DE SOUZA Date: Fri, 22 Apr 2016 19:25:48 -0300 Subject: [PATCH] redmine #4583 assinatura interna com visualizacoes --- cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java | 25 +++++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java | 41 +++++++++++++++++++++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaService.java | 25 +++++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js | 20 ++++++++++++++++++++ cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html | 31 +++++++++++++++++++++++++++++++ cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html | 38 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 320 insertions(+), 0 deletions(-) create mode 100644 cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java create mode 100644 cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java create mode 100644 cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaService.java create mode 100644 cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java create mode 100644 cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java create mode 100644 cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js create mode 100644 cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html create mode 100644 cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java new file mode 100644 index 0000000..9622bc1 --- /dev/null +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java @@ -0,0 +1,25 @@ +package br.com.centralit.api.dao; + +import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; + + +/** + *

Title:

+ *

Description:

+ * + * @since 22/04/2016 - 11:52:08 + * @author rogerio.cassimiro + * + */ +public interface AssinaturaDao extends CitGenericDAO{ + + /** + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado + * @author rogerio.cassimiro + * @param idDocumento + * @param idUsuario + * @return {@link Boolean} + */ + Boolean validarAssinaturaPorUsuario(Long idDocumento, Long idUsuario); + +} diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java new file mode 100644 index 0000000..e6edca6 --- /dev/null +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java @@ -0,0 +1,41 @@ +package br.com.centralit.api.dao.impl; + +import org.springframework.stereotype.Repository; + +import br.com.centralit.api.dao.AssinaturaDao; +import br.com.centralit.api.model.Assinatura; +import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; +import br.com.centralit.framework.dao.arquitetura.SearchSeven; + + +/** + *

Title:

+ *

Description:

+ * + * @since 22/04/2016 - 11:54:06 + * @author rogerio.cassimiro + * + */ +@Repository("assinaturaDao") +public class AssinaturaDaoHibernate extends CitGenericDAOImpl implements AssinaturaDao{ + + public AssinaturaDaoHibernate() { + super(Assinatura.class); + } + + /** + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado + * @author rogerio.cassimiro + * @param idDocumento + * @param idUsuario + * @return {@link Boolean} + */ + @Override + public Boolean validarAssinaturaPorUsuario(Long idDocumento, Long idUsuario) { + SearchSeven searchSeven = new SearchSeven(); + searchSeven.addFilterEqual("documentoGed.id", idDocumento); + searchSeven.addFilterEqual("usuario.id", idUsuario); + return this.count(searchSeven) > 0; + } + +} \ No newline at end of file diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaService.java new file mode 100644 index 0000000..4ab6a4a --- /dev/null +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaService.java @@ -0,0 +1,25 @@ +package br.com.centralit.api.service; + +import br.com.centralit.api.model.Assinatura; +import br.com.centralit.framework.service.arquitetura.GenericService; + + +/** + *

Title:

+ *

Description:

+ * + * @since 22/04/2016 - 11:48:53 + * @author rogerio.cassimiro + * + */ +public interface AssinaturaService extends GenericService{ + + Assinatura saveAssinaturaInterna(Assinatura entity); + + /** + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado + * @author rogerio.cassimiro + * @return {@link Boolean} + */ + Boolean validarAssinaturaPorUsuario(Long idDocumento); +} \ No newline at end of file diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java new file mode 100644 index 0000000..764487d --- /dev/null +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java @@ -0,0 +1,68 @@ +package br.com.centralit.api.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import br.com.centralit.api.dao.AssinaturaDao; +import br.com.centralit.api.model.Assinatura; +import br.com.centralit.api.service.AssinaturaService; +import br.com.centralit.api.service.DocumentoGedService; +import br.com.centralit.api.service.DominioService; +import br.com.centralit.api.service.FuncaoService; +import br.com.centralit.api.service.UsuarioService; +import br.com.centralit.framework.model.Dominio; +import br.com.centralit.framework.model.Usuario; +import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; + + +/** + *

Title:

+ *

Description:

+ * + * @since 22/04/2016 - 11:50:56 + * @author rogerio.cassimiro + * + */ +@Service("assinaturaService") +public class AssinaturaServiceImpl extends GenericServiceImpl implements AssinaturaService { + + @Autowired + private AssinaturaDao assinaturaDao; + + @Autowired + private DocumentoGedService documentoGedService; + + @Autowired + private UsuarioService usuarioService; + + @Autowired + private DominioService dominioService; + + @Autowired + private FuncaoService funcaoService; + + @Autowired + public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) { + this.dao = assinaturaDao; + } + + @Override + public Assinatura saveAssinaturaInterna(Assinatura entity) { + entity.setDocumentoGed(this.documentoGedService.getReference(entity.getDocumentoGed().getId())); + entity.setUsuario((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()); + entity.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA)); + entity.setFuncao(funcaoService.getReference(entity.getFuncao().getId())); + return super.save(entity); + } + + /** + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado + * @author rogerio.cassimiro + * @return {@link Boolean} + */ + @Override + public Boolean validarAssinaturaPorUsuario(Long idDocumento) { + return this.assinaturaDao.validarAssinaturaPorUsuario(idDocumento, ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId()); + } +} diff --git a/cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java b/cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java new file mode 100644 index 0000000..ac1cbbb --- /dev/null +++ b/cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java @@ -0,0 +1,72 @@ +package br.com.centralit.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +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.Assinatura; +import br.com.centralit.api.service.AssinaturaService; +import br.com.centralit.framework.controller.GenericController; +import br.com.centralit.framework.json.ResponseBodyWrapper; +import br.com.centralit.framework.json.Views.GenericView; +import br.com.centralit.framework.view.ResultResponseVH; + +/** + *

Title: AssinaturaController

+ *

Description:

+ * + * @since 22/04/2016 - 11:47:45 + * @author rogerio.cassimiro + * + */ +@Controller +@RequestMapping("/rest/assinatura") +public class AssinaturaController extends GenericController{ + + private AssinaturaService assinaturaService; + + @Autowired + public AssinaturaController(AssinaturaService assinaturaService){ + super(assinaturaService); + this.assinaturaService = assinaturaService; + } + + /** + * Método responsável por salvar assinatura interna + * @author rogerio.cassimiro + * @param assinatura + * @return {@link ResponseBody} + * @throws Exception + */ + @RequestMapping(method = RequestMethod.POST, value = "/saveAssinaturaInterna") + @ResponseBody + public ResponseBodyWrapper saveAssinaturaInterna(@RequestBody Assinatura assinatura) throws Exception { + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.assinaturaService.saveAssinaturaInterna(assinatura), getEditView()); + return responseBody; + } + + /** + * Método responsável por validar se o usuário já teve uma assinatura para o documento selecionado + * @author rogerio.cassimiro + * @param idDocumento + * @return {@link Boolean} + */ + @RequestMapping(value = "/validarAssinaturaPorUsuario", method = RequestMethod.GET) + @ResponseBody + public ResponseBodyWrapper validarAssinaturaPorUsuario(@RequestParam(value = "idDocumento") Long idDocumento) { + ResultResponseVH resultResponseVH = new ResultResponseVH(this.assinaturaService.validarAssinaturaPorUsuario(idDocumento)); + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView()); + return responseBody; + } + + @Override + public Class getEditView() { + return ViewsEcm.DocumentoGedEdit.class; + } + +} diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js new file mode 100644 index 0000000..4e25da2 --- /dev/null +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js @@ -0,0 +1,20 @@ +'use strict'; + +citApp.factory('AssinaturaRepository', ['RestangularEcm', 'AbstractRepository', function (restangularEcm, AbstractRepository) { + + function AssinaturaRepository() { + AbstractRepository.call(this, restangularEcm, 'rest/assinatura'); + + this.saveAssinaturaInterna = function(assinatura) { + return this.restangular.all(this.route + '/saveAssinaturaInterna').post(assinatura); + }; + + this.validarAssinaturaPorUsuario = function(idDocumento) { + return this.restangular.one(this.route + '/validarAssinaturaPorUsuario').get({idDocumento:idDocumento}); + }; + } + + AbstractRepository.extend(AssinaturaRepository); + + return new AssinaturaRepository(); +}]); diff --git a/cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html b/cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html new file mode 100644 index 0000000..416ae23 --- /dev/null +++ b/cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html @@ -0,0 +1,31 @@ +
+
+

+ ECM.LABEL.ASSINATURA_DOCUMENTO : {{numeroDocumento}} +

+
+ + + +
+
+
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
\ No newline at end of file diff --git a/cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html b/cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html new file mode 100644 index 0000000..ac4908b --- /dev/null +++ b/cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html @@ -0,0 +1,38 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + +
LABEL.VERSAOLABEL.USUARIOCORPORATIVO.LABEL.FUNCAOLABEL.UNIDADEECM.LABEL.TIPO_ASSINATURAECM.LABEL.DATA_DA_ASSINATURA
+ {{documentoSelecionado.versaoDocumento}} + + {{assinatura.usuario.username}} + + {{assinatura.funcao.nome}} + + {{documentoSelecionado.unidadeNome}} + + {{assinatura.tipoAssinatura.descricao}} + + {{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}} +
+
+
\ No newline at end of file -- libgit2 0.21.2