Commit 285f28461fa6a541dbf0c4b2562b5a9c078b9ac7
1 parent
5a0e1922
Exists in
master
redmine #4583 assinatura interna com visualizacoes
Showing
8 changed files
with
320 additions
and
0 deletions
Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java
0 → 100644
... | ... | @@ -0,0 +1,25 @@ |
1 | +package br.com.centralit.api.dao; | |
2 | + | |
3 | +import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; | |
4 | + | |
5 | + | |
6 | +/** | |
7 | + * <p><b>Title: </b></p> | |
8 | + * <p><b>Description: </b></p> | |
9 | + * | |
10 | + * @since 22/04/2016 - 11:52:08 | |
11 | + * @author rogerio.cassimiro | |
12 | + * | |
13 | + */ | |
14 | +public interface AssinaturaDao extends CitGenericDAO{ | |
15 | + | |
16 | + /** | |
17 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | |
18 | + * @author rogerio.cassimiro | |
19 | + * @param idDocumento | |
20 | + * @param idUsuario | |
21 | + * @return {@link Boolean} | |
22 | + */ | |
23 | + Boolean validarAssinaturaPorUsuario(Long idDocumento, Long idUsuario); | |
24 | + | |
25 | +} | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java
0 → 100644
... | ... | @@ -0,0 +1,41 @@ |
1 | +package br.com.centralit.api.dao.impl; | |
2 | + | |
3 | +import org.springframework.stereotype.Repository; | |
4 | + | |
5 | +import br.com.centralit.api.dao.AssinaturaDao; | |
6 | +import br.com.centralit.api.model.Assinatura; | |
7 | +import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | |
8 | +import br.com.centralit.framework.dao.arquitetura.SearchSeven; | |
9 | + | |
10 | + | |
11 | +/** | |
12 | + * <p><b>Title: </b></p> | |
13 | + * <p><b>Description: </b></p> | |
14 | + * | |
15 | + * @since 22/04/2016 - 11:54:06 | |
16 | + * @author rogerio.cassimiro | |
17 | + * | |
18 | + */ | |
19 | +@Repository("assinaturaDao") | |
20 | +public class AssinaturaDaoHibernate extends CitGenericDAOImpl implements AssinaturaDao{ | |
21 | + | |
22 | + public AssinaturaDaoHibernate() { | |
23 | + super(Assinatura.class); | |
24 | + } | |
25 | + | |
26 | + /** | |
27 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | |
28 | + * @author rogerio.cassimiro | |
29 | + * @param idDocumento | |
30 | + * @param idUsuario | |
31 | + * @return {@link Boolean} | |
32 | + */ | |
33 | + @Override | |
34 | + public Boolean validarAssinaturaPorUsuario(Long idDocumento, Long idUsuario) { | |
35 | + SearchSeven searchSeven = new SearchSeven(); | |
36 | + searchSeven.addFilterEqual("documentoGed.id", idDocumento); | |
37 | + searchSeven.addFilterEqual("usuario.id", idUsuario); | |
38 | + return this.count(searchSeven) > 0; | |
39 | + } | |
40 | + | |
41 | +} | |
0 | 42 | \ No newline at end of file | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/service/AssinaturaService.java
0 → 100644
... | ... | @@ -0,0 +1,25 @@ |
1 | +package br.com.centralit.api.service; | |
2 | + | |
3 | +import br.com.centralit.api.model.Assinatura; | |
4 | +import br.com.centralit.framework.service.arquitetura.GenericService; | |
5 | + | |
6 | + | |
7 | +/** | |
8 | + * <p><b>Title: </b></p> | |
9 | + * <p><b>Description: </b></p> | |
10 | + * | |
11 | + * @since 22/04/2016 - 11:48:53 | |
12 | + * @author rogerio.cassimiro | |
13 | + * | |
14 | + */ | |
15 | +public interface AssinaturaService extends GenericService<Assinatura, Long>{ | |
16 | + | |
17 | + Assinatura saveAssinaturaInterna(Assinatura entity); | |
18 | + | |
19 | + /** | |
20 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | |
21 | + * @author rogerio.cassimiro | |
22 | + * @return {@link Boolean} | |
23 | + */ | |
24 | + Boolean validarAssinaturaPorUsuario(Long idDocumento); | |
25 | +} | |
0 | 26 | \ No newline at end of file | ... | ... |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java
0 → 100644
... | ... | @@ -0,0 +1,68 @@ |
1 | +package br.com.centralit.api.service.impl; | |
2 | + | |
3 | +import org.springframework.beans.factory.annotation.Autowired; | |
4 | +import org.springframework.security.core.context.SecurityContextHolder; | |
5 | +import org.springframework.stereotype.Service; | |
6 | + | |
7 | +import br.com.centralit.api.dao.AssinaturaDao; | |
8 | +import br.com.centralit.api.model.Assinatura; | |
9 | +import br.com.centralit.api.service.AssinaturaService; | |
10 | +import br.com.centralit.api.service.DocumentoGedService; | |
11 | +import br.com.centralit.api.service.DominioService; | |
12 | +import br.com.centralit.api.service.FuncaoService; | |
13 | +import br.com.centralit.api.service.UsuarioService; | |
14 | +import br.com.centralit.framework.model.Dominio; | |
15 | +import br.com.centralit.framework.model.Usuario; | |
16 | +import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * <p><b>Title: </b></p> | |
21 | + * <p><b>Description: </b></p> | |
22 | + * | |
23 | + * @since 22/04/2016 - 11:50:56 | |
24 | + * @author rogerio.cassimiro | |
25 | + * | |
26 | + */ | |
27 | +@Service("assinaturaService") | |
28 | +public class AssinaturaServiceImpl extends GenericServiceImpl<Assinatura, Long> implements AssinaturaService { | |
29 | + | |
30 | + @Autowired | |
31 | + private AssinaturaDao assinaturaDao; | |
32 | + | |
33 | + @Autowired | |
34 | + private DocumentoGedService documentoGedService; | |
35 | + | |
36 | + @Autowired | |
37 | + private UsuarioService usuarioService; | |
38 | + | |
39 | + @Autowired | |
40 | + private DominioService dominioService; | |
41 | + | |
42 | + @Autowired | |
43 | + private FuncaoService funcaoService; | |
44 | + | |
45 | + @Autowired | |
46 | + public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) { | |
47 | + this.dao = assinaturaDao; | |
48 | + } | |
49 | + | |
50 | + @Override | |
51 | + public Assinatura saveAssinaturaInterna(Assinatura entity) { | |
52 | + entity.setDocumentoGed(this.documentoGedService.getReference(entity.getDocumentoGed().getId())); | |
53 | + entity.setUsuario((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()); | |
54 | + entity.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA)); | |
55 | + entity.setFuncao(funcaoService.getReference(entity.getFuncao().getId())); | |
56 | + return super.save(entity); | |
57 | + } | |
58 | + | |
59 | + /** | |
60 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | |
61 | + * @author rogerio.cassimiro | |
62 | + * @return {@link Boolean} | |
63 | + */ | |
64 | + @Override | |
65 | + public Boolean validarAssinaturaPorUsuario(Long idDocumento) { | |
66 | + return this.assinaturaDao.validarAssinaturaPorUsuario(idDocumento, ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId()); | |
67 | + } | |
68 | +} | ... | ... |
cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java
0 → 100644
... | ... | @@ -0,0 +1,72 @@ |
1 | +package br.com.centralit.controller; | |
2 | + | |
3 | +import org.springframework.beans.factory.annotation.Autowired; | |
4 | +import org.springframework.stereotype.Controller; | |
5 | +import org.springframework.web.bind.annotation.RequestBody; | |
6 | +import org.springframework.web.bind.annotation.RequestMapping; | |
7 | +import org.springframework.web.bind.annotation.RequestMethod; | |
8 | +import org.springframework.web.bind.annotation.RequestParam; | |
9 | +import org.springframework.web.bind.annotation.ResponseBody; | |
10 | + | |
11 | +import br.com.centralit.api.framework.json.ViewsEcm; | |
12 | +import br.com.centralit.api.model.Assinatura; | |
13 | +import br.com.centralit.api.service.AssinaturaService; | |
14 | +import br.com.centralit.framework.controller.GenericController; | |
15 | +import br.com.centralit.framework.json.ResponseBodyWrapper; | |
16 | +import br.com.centralit.framework.json.Views.GenericView; | |
17 | +import br.com.centralit.framework.view.ResultResponseVH; | |
18 | + | |
19 | +/** | |
20 | + * <p><b>Title: </b>AssinaturaController</p> | |
21 | + * <p><b>Description: </b></p> | |
22 | + * | |
23 | + * @since 22/04/2016 - 11:47:45 | |
24 | + * @author rogerio.cassimiro | |
25 | + * | |
26 | + */ | |
27 | +@Controller | |
28 | +@RequestMapping("/rest/assinatura") | |
29 | +public class AssinaturaController extends GenericController<Assinatura>{ | |
30 | + | |
31 | + private AssinaturaService assinaturaService; | |
32 | + | |
33 | + @Autowired | |
34 | + public AssinaturaController(AssinaturaService assinaturaService){ | |
35 | + super(assinaturaService); | |
36 | + this.assinaturaService = assinaturaService; | |
37 | + } | |
38 | + | |
39 | + /** | |
40 | + * Método responsável por salvar assinatura interna | |
41 | + * @author rogerio.cassimiro | |
42 | + * @param assinatura | |
43 | + * @return {@link ResponseBody} | |
44 | + * @throws Exception | |
45 | + */ | |
46 | + @RequestMapping(method = RequestMethod.POST, value = "/saveAssinaturaInterna") | |
47 | + @ResponseBody | |
48 | + public ResponseBodyWrapper saveAssinaturaInterna(@RequestBody Assinatura assinatura) throws Exception { | |
49 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.assinaturaService.saveAssinaturaInterna(assinatura), getEditView()); | |
50 | + return responseBody; | |
51 | + } | |
52 | + | |
53 | + /** | |
54 | + * Método responsável por validar se o usuário já teve uma assinatura para o documento selecionado | |
55 | + * @author rogerio.cassimiro | |
56 | + * @param idDocumento | |
57 | + * @return {@link Boolean} | |
58 | + */ | |
59 | + @RequestMapping(value = "/validarAssinaturaPorUsuario", method = RequestMethod.GET) | |
60 | + @ResponseBody | |
61 | + public ResponseBodyWrapper validarAssinaturaPorUsuario(@RequestParam(value = "idDocumento") Long idDocumento) { | |
62 | + ResultResponseVH<Boolean> resultResponseVH = new ResultResponseVH<Boolean>(this.assinaturaService.validarAssinaturaPorUsuario(idDocumento)); | |
63 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView()); | |
64 | + return responseBody; | |
65 | + } | |
66 | + | |
67 | + @Override | |
68 | + public Class<? extends GenericView> getEditView() { | |
69 | + return ViewsEcm.DocumentoGedEdit.class; | |
70 | + } | |
71 | + | |
72 | +} | ... | ... |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js
0 → 100644
... | ... | @@ -0,0 +1,20 @@ |
1 | +'use strict'; | |
2 | + | |
3 | +citApp.factory('AssinaturaRepository', ['RestangularEcm', 'AbstractRepository', function (restangularEcm, AbstractRepository) { | |
4 | + | |
5 | + function AssinaturaRepository() { | |
6 | + AbstractRepository.call(this, restangularEcm, 'rest/assinatura'); | |
7 | + | |
8 | + this.saveAssinaturaInterna = function(assinatura) { | |
9 | + return this.restangular.all(this.route + '/saveAssinaturaInterna').post(assinatura); | |
10 | + }; | |
11 | + | |
12 | + this.validarAssinaturaPorUsuario = function(idDocumento) { | |
13 | + return this.restangular.one(this.route + '/validarAssinaturaPorUsuario').get({idDocumento:idDocumento}); | |
14 | + }; | |
15 | + } | |
16 | + | |
17 | + AbstractRepository.extend(AssinaturaRepository); | |
18 | + | |
19 | + return new AssinaturaRepository(); | |
20 | +}]); | ... | ... |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html
0 → 100644
... | ... | @@ -0,0 +1,31 @@ |
1 | +<div id="documentoAssinatura" class="widget-box margin-bottom" ng-controller="GerenciarProcessoController"> | |
2 | + <div class="widget-header"> | |
3 | + <h2 class="widget-title"> | |
4 | + <translate>ECM.LABEL.ASSINATURA_DOCUMENTO</translate> : {{numeroDocumento}} | |
5 | + </h2> | |
6 | + <div class="widget-toolbar"> | |
7 | + <a href="#void" ng-click="widgetAssinarDocIsCollapsed = !widgetAssinarDocIsCollapsed"> | |
8 | + <i class="fa" ng-class="{'fa-chevron-up': !widgetAssinarDocIsCollapsed, 'fa-chevron-down': widgetAssinarDocIsCollapsed}"></i> | |
9 | + </a> | |
10 | + </div> | |
11 | + </div> | |
12 | + <div class="widget-body" collapse="widgetAssinarDocIsCollapsed"> | |
13 | + <div class="widget-main clearfix"> | |
14 | + <div class="page-content clearfix"> | |
15 | + | |
16 | + <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturaEdit.html'" ng-show="exibirIncluirAssinatura"/> | |
17 | + | |
18 | + <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturas.html'" /> | |
19 | + | |
20 | + <div class="row" ng-if="exibirIncluirAssinatura"> | |
21 | + <div class="col-md-12"> | |
22 | + <button ng-click="assinar()" title="{{$translate.instant('ECM.LABEL.ASSINAR')}}" alt="{{$translate.instant('ECM.LABEL.ASSINAR')}}" type="button" class="btn btn-sm btn-primary"> | |
23 | + <translate>ECM.LABEL.ASSINAR</translate> | |
24 | + </button> | |
25 | + </div> | |
26 | + </div> | |
27 | + | |
28 | + </div> | |
29 | + </div> | |
30 | + </div> | |
31 | +</div> | |
0 | 32 | \ No newline at end of file | ... | ... |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html
0 → 100644
... | ... | @@ -0,0 +1,38 @@ |
1 | +<div class="row" ng-if="documentoSelecionado.assinaturas.length > 0"> | |
2 | + <div class="col-sm-12"> | |
3 | + <table class="table table-striped table-bordered table-hover"> | |
4 | + <thead> | |
5 | + <tr> | |
6 | + <th><small><translate>LABEL.VERSAO</translate></small></th> | |
7 | + <th><small><translate>LABEL.USUARIO</translate></small></th> | |
8 | + <th><small><translate>CORPORATIVO.LABEL.FUNCAO</translate></small></th> | |
9 | + <th><small><translate>LABEL.UNIDADE</translate></small></th> | |
10 | + <th><small><translate>ECM.LABEL.TIPO_ASSINATURA</translate></small></th> | |
11 | + <th><small><translate>ECM.LABEL.DATA_DA_ASSINATURA</translate></small></th> | |
12 | + </tr> | |
13 | + </thead> | |
14 | + <tbody> | |
15 | + <tr ng-repeat="assinatura in documentoSelecionado.assinaturas"> | |
16 | + <td> | |
17 | + <small>{{documentoSelecionado.versaoDocumento}}</small> | |
18 | + </td> | |
19 | + <td> | |
20 | + <small>{{assinatura.usuario.username}}</small> | |
21 | + </td> | |
22 | + <td> | |
23 | + <small>{{assinatura.funcao.nome}}</small> | |
24 | + </td> | |
25 | + <td> | |
26 | + <small>{{documentoSelecionado.unidadeNome}}</small> | |
27 | + </td> | |
28 | + <td> | |
29 | + <small>{{assinatura.tipoAssinatura.descricao}}</small> | |
30 | + </td> | |
31 | + <td> | |
32 | + <small>{{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}}</small> | |
33 | + </td> | |
34 | + </tr> | |
35 | + </tbody> | |
36 | + </table> | |
37 | + </div> | |
38 | +</div> | |
0 | 39 | \ No newline at end of file | ... | ... |