Commit 285f28461fa6a541dbf0c4b2562b5a9c078b9ac7

Authored by ROGERIO CASSIMIRO DE SOUZA
1 parent 5a0e1922
Exists in master

redmine #4583 assinatura interna com visualizacoes

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
... ...