Commit 3285929ad6991141d2f289b68b93f82cc9ba1834

Authored by Ciro Junior
1 parent 36fde9ef
Exists in master

[Redmine #4466

Commit parcial.
cit-ecm-api/src/main/java/br/com/centralit/api/dao/TarjaAssinaturaDao.java 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +package br.com.centralit.api.dao;
  2 +
  3 +import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
  4 +
  5 +
  6 +public interface TarjaAssinaturaDao extends CitGenericDAO {
  7 +
  8 +}
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/framework/json/ViewsEcm.java
... ... @@ -6,105 +6,107 @@ import br.com.centralit.framework.json.Views;
6 6 * <p>
7 7 * <img src="http://centralit.com.br/images/logo_central.png">
8 8 * </p>
9   - *
  9 + *
10 10 * <p>
11 11 * <b>Company: </b> Central IT - Governança Corporativa -
12 12 * </p>
13   - *
  13 + *
14 14 * <p>
15 15 * <b>Title: </b>
16 16 * </p>
17   - *
  17 + *
18 18 * <p>
19 19 * <b>Description: </b>
20 20 * </p>
21   - *
  21 + *
22 22 * <p>
23 23 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
24 24 * </p>
25   - *
  25 + *
26 26 * <p>
27 27 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
28 28 * </p>
29   - *
  29 + *
30 30 * @since 22/06/2015 - 15:10:43
31   - *
  31 + *
32 32 * @version 1.0.0
33   - *
  33 + *
34 34 * @author lucas.ribeiro - (<a href="mailto:lucas.ribeiro@centralit.com.br">lucas.ribeiro@centralit.com.br</a>)
35   - *
  35 + *
36 36 */
37 37 public class ViewsEcm extends Views {
38 38  
39 39 public static class PlanoClassificacaoListView extends Views.GenericView {};
40 40  
41 41 public static class PlanoClassificacaoEditView extends PlanoClassificacaoListView {};
42   -
  42 +
43 43 public static class PlanoClassificacaoParent extends Views.GenericView {};
44   -
  44 +
45 45 public static class PlanoClassificacaoFilho extends Views.GenericView{};
46   -
  46 +
47 47 public static class PlanoClassificacaoAutocompleteRecursive extends Views.GenericView{};
48   -
  48 +
49 49 public static class PlanoCLassificacaoAutoComplete extends Views.GenericView{};
50   -
  50 +
51 51 public static class TipoDocumentoList extends Views.GenericView{};
52   -
  52 +
53 53 public static class TipoDocumentoEdit extends TipoDocumentoList {};
54   -
  54 +
55 55 public static class HipoteseLegalList extends Views.GenericView{};
56   -
  56 +
57 57 public static class HipoteseLegalEdit extends HipoteseLegalList {};
58   -
  58 +
59 59 public static class TipoProcessoList extends Views.GenericView{};
60   -
  60 +
61 61 public static class TipoProcessoEdit extends TipoProcessoList {};
62   -
  62 +
63 63 public static class NivelAcessoTipoDocumentoList extends Views.GenericView{};
64   -
  64 +
65 65 public static class NivelAcessoTipoDocumentoEdit extends NivelAcessoTipoDocumentoList{};
66   -
  66 +
67 67 public static class ClassificarProcessoDocumentoList extends Views.GenericView{};
68   -
  68 +
69 69 public static class ClassificarProcessoDocumento extends ClassificarProcessoDocumentoList{};
70   -
  70 +
71 71 public static class NivelAcessoTipoProcessoList extends Views.GenericView{};
72   -
  72 +
73 73 public static class NivelAcessoTipoProcessoEdit extends NivelAcessoTipoProcessoList{};
74   -
  74 +
75 75 public static class InteressadoProcessoList extends Views.GenericView{};
76   -
  76 +
77 77 public static class InteressadoProcessoEdit extends InteressadoProcessoList{};
78   -
  78 +
79 79 public static class HistoricoProcessoView extends Views.GenericView{};
80   -
  80 +
81 81 public static class CancelamentoDocumentoView extends Views.GenericView{};
82   -
  82 +
83 83 public static class TemplatePadraoListView extends Views.GenericView{};
84   -
  84 +
85 85 public static class TemplatePadraoEditView extends ViewsEcm.TemplatePadraoListView{};
86   -
  86 +
87 87 public static class CabecalhoListView extends Views.GenericView{};
88   -
  88 +
89 89 public static class CabecalhoEditView extends ViewsEcm.CabecalhoListView{};
90   -
  90 +
91 91 public static class CabecalhoAutoCompleteView extends Views.GenericView{};
92   -
  92 +
93 93 public static class RodapeListView extends Views.GenericView{};
94   -
  94 +
95 95 public static class RodapeEditView extends ViewsEcm.RodapeListView{};
96   -
  96 +
97 97 public static class RodapeAutoCompleteView extends Views.GenericView{};
98   -
  98 +
99 99 public static class TipoDocumentoPlanoClassificacaoAutoCompleteView extends Views.GenericView{};
100 100  
101 101 public static class ClassificacaoDocumentoGedView extends Views.GenericView{};
102 102  
103 103 public static class HistoricoAtribuicaoProcessoView extends Views.GenericView{};
104   -
  104 +
105 105 public static class TipoSuporteDocumentoListView extends Views.GenericView{};
106   -
  106 +
107 107 public static class TipoSuporteDocumentoEdit extends TipoSuporteDocumentoListView{};
108   -
109   -
  108 +
  109 + public static class TarjaAssinaturaListview extends Views.GenericView{};
  110 +
  111 + public static class TarjaAssinaturaEditview extends ViewsEcm.TarjaAssinaturaListview{};
110 112 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/model/TarjaAssinatura.java 0 → 100644
... ... @@ -0,0 +1,97 @@
  1 +package br.com.centralit.api.model;
  2 +
  3 +import javax.persistence.Column;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.FetchType;
  6 +import javax.persistence.GeneratedValue;
  7 +import javax.persistence.GenerationType;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.ManyToOne;
  10 +import javax.persistence.OneToOne;
  11 +
  12 +import com.fasterxml.jackson.annotation.JsonView;
  13 +
  14 +import br.com.centralit.api.framework.json.ViewsEcm;
  15 +import br.com.centralit.framework.json.Views;
  16 +import br.com.centralit.framework.model.AnexoImagem;
  17 +import br.com.centralit.framework.model.Dominio;
  18 +import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
  19 +
  20 +@Entity
  21 +public class TarjaAssinatura extends PersistentObjectAudit{
  22 +
  23 + private static final long serialVersionUID = -7187159662335439914L;
  24 +
  25 + @Id
  26 + @GeneratedValue(strategy = GenerationType.AUTO)
  27 + @JsonView({ Views.GenericView.class })
  28 + private Long id;
  29 +
  30 + @JsonView({ ViewsEcm.TarjaAssinaturaEditview.class })
  31 + @Column (length=100, nullable = false)
  32 + private String descricao;
  33 +
  34 + @ManyToOne(fetch = FetchType.LAZY)
  35 + @Column (nullable = false)
  36 + @JsonView({ ViewsEcm.TarjaAssinaturaEditview.class })
  37 + private Dominio tipoAssinatura;
  38 +
  39 + /** Conte&uacute;do em HTML*/
  40 + @JsonView({ ViewsEcm.TarjaAssinaturaEditview.class })
  41 + @Column (length=1000, nullable = false)
  42 + private String conteudo;
  43 +
  44 + @OneToOne
  45 + @JsonView({ ViewsEcm.TarjaAssinaturaEditview.class })
  46 + private AnexoImagem anexoImagem;
  47 +
  48 + public Long getId() {
  49 +
  50 + return id;
  51 + }
  52 +
  53 + public void setId(Long id) {
  54 +
  55 + this.id = id;
  56 + }
  57 +
  58 + public String getDescricao() {
  59 +
  60 + return descricao;
  61 + }
  62 +
  63 + public void setDescricao(String descricao) {
  64 +
  65 + this.descricao = descricao;
  66 + }
  67 +
  68 + public Dominio getTipoAssinatura() {
  69 +
  70 + return tipoAssinatura;
  71 + }
  72 +
  73 + public void setTipoAssinatura(Dominio tipoAssinatura) {
  74 +
  75 + this.tipoAssinatura = tipoAssinatura;
  76 + }
  77 +
  78 + public String getConteudo() {
  79 +
  80 + return conteudo;
  81 + }
  82 +
  83 + public void setConteudo(String conteudo) {
  84 +
  85 + this.conteudo = conteudo;
  86 + }
  87 +
  88 + public AnexoImagem getAnexoImagem() {
  89 +
  90 + return anexoImagem;
  91 + }
  92 +
  93 + public void setAnexoImagem(AnexoImagem anexoImagem) {
  94 +
  95 + this.anexoImagem = anexoImagem;
  96 + }
  97 +}
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/TarjaAssinaturaService.java 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +package br.com.centralit.api.service;
  2 +
  3 +import org.springframework.web.multipart.MultipartFile;
  4 +
  5 +import br.com.centralit.api.model.TarjaAssinatura;
  6 +import br.com.centralit.framework.service.arquitetura.GenericService;
  7 +
  8 +
  9 +/**
  10 + * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
  11 + *
  12 + * <p><b>Company: </b> Central IT - Governan&ccedil;a Corporativa - </p>
  13 + *
  14 + * <p><b>Description: </b></p>
  15 + *
  16 + * @since 13 de abr de 2016 - 13:40:36
  17 + * @version 1.0.0
  18 + * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>)
  19 + *
  20 + */
  21 +public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, Long> {
  22 +
  23 + /**
  24 + *
  25 + * M&eacute;todo respons&aacute;vel por fazer o upload da imagem do logotipo de uma tarja de assinatura.
  26 + *
  27 + * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>)
  28 + *
  29 + * @param file
  30 + * @param idOrganizacao
  31 + * @param idConfiguracao
  32 + */
  33 + void uploadAnexoImagemTarja(MultipartFile file, Long idOrganizacao, Long idConfiguracao);
  34 +}
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/InicializarEcmServiceImpl.java
... ... @@ -21,33 +21,33 @@ import br.com.centralit.framework.model.UtilStartup;
21 21 * <p>
22 22 * <img src="http://centralit.com.br/images/logo_central.png">
23 23 * </p>
24   - *
  24 + *
25 25 * <p>
26 26 * <b>Company: </b> Central IT - Governança Corporativa -
27 27 * </p>
28   - *
  28 + *
29 29 * <p>
30 30 * <b>Title: </b>
31 31 * </p>
32   - *
  32 + *
33 33 * <p>
34 34 * <b>Description: </b>
35 35 * </p>
36   - *
  36 + *
37 37 * <p>
38 38 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
39 39 * </p>
40   - *
  40 + *
41 41 * <p>
42 42 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
43 43 * </p>
44   - *
  44 + *
45 45 * @since 22/10/2015 - 08:54:55
46   - *
  46 + *
47 47 * @version 1.0.0
48   - *
  48 + *
49 49 * @author rogerio.costa
50   - *
  50 + *
51 51 */
52 52 @Service("inicializarEcmService")
53 53 public class InicializarEcmServiceImpl extends UtilStartup {
... ... @@ -74,15 +74,15 @@ public class InicializarEcmServiceImpl extends UtilStartup {
74 74 * <p>
75 75 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
76 76 * </p>
77   - *
  77 + *
78 78 * <p>
79 79 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
80 80 * </p>
81   - *
  81 + *
82 82 * Método responsável por gerar a carga inicial
83   - *
  83 + *
84 84 * @author rogerio.costa
85   - *
  85 + *
86 86 */
87 87 public void gerarCarga() {
88 88  
... ... @@ -93,15 +93,15 @@ public class InicializarEcmServiceImpl extends UtilStartup {
93 93 * <p>
94 94 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
95 95 * </p>
96   - *
  96 + *
97 97 * <p>
98 98 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
99 99 * </p>
100   - *
  100 + *
101 101 * Método responsável por
102   - *
  102 + *
103 103 * @author rogerio.costa
104   - *
  104 + *
105 105 * @param modulo
106 106 */
107 107 private void criarPaginasMenus() {
... ... @@ -339,6 +339,13 @@ public class InicializarEcmServiceImpl extends UtilStartup {
339 339 menuSuporteDocumento.setIncludes(this.gerarArquivosMenu(menuSuporteDocumento, this.CIT_ECM_WEB_ANGULAR, "TipoSuporteDocumento", true, true, true));
340 340 this.menuService.mergeIfNotExist(menuSuporteDocumento);
341 341  
  342 + // Submenu Tarja de assinatura
  343 + Pagina pgTarjaAssinatura = new Pagina("Tarja de Assinatura", "/cit-ecm-web/html/tarjaAssinatura/tarjaAssinatura.html");
  344 + pgTarjaAssinatura = this.paginaService.saveIfNotExist(pgTarjaAssinatura);
  345 +
  346 + Menu menuTarjaAssinatura = new Menu("Tarja de Assinatura", pgTarjaAssinatura, menuCadastroBasico, 0, 9, null, null, null, null, modulo);
  347 + menuTarjaAssinatura.setIncludes(this.gerarArquivosMenu(menuTarjaAssinatura, this.CIT_ECM_WEB_ANGULAR, "Tarja de Assinatura", true, true, true));
  348 + this.menuService.mergeIfNotExist(menuTarjaAssinatura);
342 349 }
343 350  
344 351 }
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java 0 → 100644
... ... @@ -0,0 +1,63 @@
  1 +package br.com.centralit.api.service.impl;
  2 +
  3 +import java.io.IOException;
  4 +
  5 +import org.apache.log4j.Logger;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.beans.factory.annotation.Qualifier;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.validation.Validator;
  10 +import org.springframework.web.multipart.MultipartFile;
  11 +
  12 +import br.com.centralit.api.dao.TarjaAssinaturaDao;
  13 +import br.com.centralit.api.model.TarjaAssinatura;
  14 +import br.com.centralit.api.service.OrganizacaoService;
  15 +import br.com.centralit.api.service.TarjaAssinaturaService;
  16 +import br.com.centralit.framework.model.AnexoImagem;
  17 +import br.com.centralit.framework.model.Organizacao;
  18 +import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
  19 +
  20 +@Service("tarjaAssinaturaService")
  21 +public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatura, Long> implements TarjaAssinaturaService {
  22 +
  23 + private static final Logger LOG = Logger.getLogger(TarjaAssinaturaServiceImpl.class);
  24 +
  25 + @Autowired
  26 + private OrganizacaoService organizacaoService;
  27 +
  28 + private TarjaAssinaturaDao tarjaAssinaturaDao;
  29 +
  30 + @Autowired
  31 + public TarjaAssinaturaServiceImpl (TarjaAssinaturaDao tarjaAssinaturaDao, @Qualifier("tarjaAssinaturaValidator") Validator validator) {
  32 + this.dao = tarjaAssinaturaDao;
  33 + this.tarjaAssinaturaDao = tarjaAssinaturaDao;
  34 + this.validator = validator;
  35 + }
  36 +
  37 + @Override
  38 + public TarjaAssinatura merge(TarjaAssinatura tarjaAssinatura) {
  39 + this.validarEntidade(tarjaAssinatura, this.validator);
  40 + return super.merge(tarjaAssinatura);
  41 + }
  42 +
  43 + /**{@inheritDoc}*/
  44 + @Override
  45 + public void uploadAnexoImagemTarja(MultipartFile file, Long idOrganizacao, Long idTarjaAssinatura) {
  46 +
  47 + AnexoImagem anexoImagem = new AnexoImagem ();
  48 + try {
  49 + Organizacao organizacao = (Organizacao) this.organizacaoService.find(idOrganizacao);
  50 + anexoImagem.setAnexo(file.getBytes());
  51 + anexoImagem.setDescricao(file.getOriginalFilename());
  52 + anexoImagem.setOrganizacao(organizacao);
  53 +
  54 + TarjaAssinatura tarjaAssinatura = (TarjaAssinatura) this.tarjaAssinaturaDao.getReference(idTarjaAssinatura);
  55 + tarjaAssinatura.setAnexoImagem(anexoImagem);
  56 + this.merge(tarjaAssinatura);
  57 + } catch (IOException ioe) {
  58 + LOG.error("N\u00e3o consegui anexar a imagem \u00e0 entidade TarjaAssinatura. Verifique a exce\u00e7\u00e3o para "
  59 + + "identificar a causa: ", ioe.getCause());
  60 + }
  61 + }
  62 +
  63 +}
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/validation/TarjaAssinaturaValidator.java 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +package br.com.centralit.api.service.validation;
  2 +
  3 +import org.springframework.stereotype.Component;
  4 +import org.springframework.validation.Errors;
  5 +import org.springframework.validation.ValidationUtils;
  6 +import org.springframework.validation.Validator;
  7 +
  8 +import br.com.centralit.api.model.TarjaAssinatura;
  9 +import br.com.centralit.framework.exception.CodigoErro;
  10 +
  11 +@Component("tarjaAssinaturaValidator")
  12 +public class TarjaAssinaturaValidator implements Validator{
  13 +
  14 + @Override
  15 + public boolean supports(Class<?> clazz) {
  16 +
  17 + return TarjaAssinatura.class.isAssignableFrom(clazz);
  18 + }
  19 +
  20 + @Override
  21 + public void validate(Object target, Errors errors) {
  22 +
  23 + ValidationUtils.rejectIfEmpty(errors, "descricao", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.DESCRICAO");
  24 + ValidationUtils.rejectIfEmpty(errors, "conteudo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ECM.LABEL.CONTEUDO_HTML");
  25 +
  26 + }
  27 +
  28 +
  29 +}
... ...
cit-ecm-web/src/main/java/br/com/centralit/controller/TarjaAssinaturaController.java 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +package br.com.centralit.controller;
  2 +
  3 +import javax.servlet.http.HttpServletRequest;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
  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 +import org.springframework.web.multipart.MultipartFile;
  11 +
  12 +import br.com.centralit.api.model.TarjaAssinatura;
  13 +import br.com.centralit.api.service.TarjaAssinaturaService;
  14 +import br.com.centralit.framework.controller.GenericController;
  15 +
  16 +@RequestMapping("/rest/tarjaAssinatura")
  17 +public class TarjaAssinaturaController extends GenericController<TarjaAssinatura> {
  18 +
  19 + @Autowired
  20 + private TarjaAssinaturaService tarjaAssinaturaService;
  21 +
  22 + @ResponseBody
  23 + @RequestMapping(value = "/uploadFileLogo", method = RequestMethod.POST)
  24 + public void uploadFileHandle(@RequestParam(value = "filename", required = false) String name,
  25 + @RequestParam("file") MultipartFile file, HttpServletRequest request,
  26 + @RequestParam("idOrganizacao") Long idOrganizacao,
  27 + @RequestParam("idTarjaAssinatura") String idTarjaAssinatura) {
  28 +
  29 + this.tarjaAssinaturaService.uploadAnexoImagemTarja(file, idOrganizacao, Long.parseLong(idTarjaAssinatura));
  30 + }
  31 +}
... ...
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
... ... @@ -76,15 +76,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
76 76 * <p>
77 77 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
78 78 * </p>
79   - *
  79 + *
80 80 * <p>
81 81 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
82 82 * </p>
83   - *
  83 + *
84 84 * Método responsável por criar as regras de acesso
85   - *
  85 + *
86 86 * @author rogerio.costa
87   - *
  87 + *
88 88 */
89 89 private void criarRegraDeAcesso() {
90 90  
... ... @@ -107,9 +107,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
107 107  
108 108 /**
109 109 * Método responsável por criar domínios específicos ECM
110   - *
  110 + *
111 111 * @author halan.lima
112   - *
  112 + *
113 113 */
114 114 protected void popularAcoesAlteracaoProcesso() {
115 115  
... ... @@ -153,15 +153,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
153 153 * <p>
154 154 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
155 155 * </p>
156   - *
  156 + *
157 157 * <p>
158 158 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
159 159 * </p>
160   - *
  160 + *
161 161 * Método responsável por incluir dominios
162   - *
  162 + *
163 163 * @author rogerio.costa
164   - *
  164 + *
165 165 */
166 166 private void criarDominios() {
167 167  
... ... @@ -197,20 +197,23 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
197 197  
198 198 list.add(new Dominio("tipoProtocoloNup", "Automático", "EXTERNO", 1L, Boolean.FALSE));
199 199 list.add(new Dominio("tipoProtocoloNup", "Informado", "NUP_NOVO", 2L, Boolean.FALSE));
200   -
  200 +
201 201 list.add(new Dominio("formaNumeracao", "Sequencial por ano", "SEQUENCIAL_ANO", 1L));
202 202 list.add(new Dominio("formaNumeracao", "Sequencial único", "SEQUENCIAL_UNICO", 2L));
203 203  
  204 + list.add(new Dominio("tipoAssinatura", "Assinatura interna", "ASSINATURA_INTERNA", 1L));
  205 + list.add(new Dominio("tipoAssinatura", "Assinatura por certificado digital", "ASSINATURA_INTERNA", 2L));
  206 +
204 207 this.dominioService.saveListIfNotExist(list);
205 208  
206 209 }
207 210  
208 211 /**
209   - *
  212 + *
210 213 * Método responsável por gerar internacionalização do módulo ECM
211   - *
  214 + *
212 215 * @author rogerio.cassimiro
213   - *
  216 + *
214 217 */
215 218 private void gerarInternacionalizacao() {
216 219  
... ... @@ -230,15 +233,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
230 233 * <p>
231 234 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
232 235 * </p>
233   - *
  236 + *
234 237 * <p>
235 238 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
236 239 * </p>
237   - *
  240 + *
238 241 * Método responsável por criar labels
239   - *
  242 + *
240 243 * @author Rogério Gomes
241   - *
  244 + *
242 245 * @param dominio
243 246 * @param modulo
244 247 * @param internacionalizacaoList
... ... @@ -399,23 +402,23 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
399 402 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOME_NOVO_SUPORTE ", "Nome do suporte", dominio, modulo));
400 403 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOVO_TIPO_SUPORTE ", "Novo tipo suporte de documento", dominio, modulo));
401 404 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo));
402   -
403   -
  405 +
  406 +
404 407 }
405 408  
406 409 /**
407 410 * <p>
408 411 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
409 412 * </p>
410   - *
  413 + *
411 414 * <p>
412 415 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
413 416 * </p>
414   - *
  417 + *
415 418 * Método responsável por
416   - *
  419 + *
417 420 * @author Rogério Gomes
418   - *
  421 + *
419 422 * @param dominio
420 423 * @param modulo
421 424 * @param internacionalizacaoList
... ... @@ -439,15 +442,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
439 442 * <p>
440 443 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
441 444 * </p>
442   - *
  445 + *
443 446 * <p>
444 447 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
445 448 * </p>
446   - *
  449 + *
447 450 * Método responsável por
448   - *
  451 + *
449 452 * @author Rogério Gomes
450   - *
  453 + *
451 454 * @param dominio
452 455 * @param modulo
453 456 * @param internacionalizacaoList
... ... @@ -501,8 +504,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
501 504 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DESEJA_CAPTURAR", "Desejá capturar o processo?", dominio, modulo));
502 505 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CAPTURADO_SUCESSO", "Processo capturado com sucesso!", dominio, modulo));
503 506 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.LEGENDA_CAMPO_DINAMICO_NUMERO_DOCUMENTO", "Use: @numeroDocumento@ para adicionar o número do documento", dominio, modulo));
504   -
505   -
  507 +
  508 +
506 509  
507 510 }
508 511 }
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/TarjaAssinaturaController.js 0 → 100644
... ... @@ -0,0 +1,191 @@
  1 +'use strict';
  2 +
  3 +citApp.controller('TarjaAssinaturaController',
  4 + ['$scope',
  5 + '$filter',
  6 + '$translate',
  7 + '$timeout',
  8 + 'TarjaAssinaturaRepository',
  9 + 'DominioRepository',
  10 + function TarjaAssinaturaController($scope,
  11 + $filter,
  12 + $translate,
  13 + $timeout,
  14 + TarjaAssinaturaRepository,
  15 + DominioRepository) {
  16 +
  17 + $scope.resetForm = function() {
  18 + $scope.tarjaAssinatura = {
  19 + assinaturaInterna : {},
  20 + assinaturaCertificado : {}
  21 + };
  22 + $scope.tipoAssinaturaInterna = {};
  23 + $scope.tipoAssinaturaCertificado = {};
  24 +
  25 + $scope.edit = true;
  26 + $timeout(function(){
  27 + $scope.tarjaAssinaturaForm.$submitted = false;
  28 + $scope.tarjaAssinaturaForm.$setPristine();
  29 + });
  30 + };
  31 +
  32 + DominioRepository.buscaDominioByCodigoAndChave('tipoAssinatura', 1).then(function(result) {
  33 + $scope.tipoAssinaturaInterna = result.originalElement;
  34 + });
  35 + DominioRepository.buscaDominioByCodigoAndChave('tipoAssinatura', 2).then(function(result) {
  36 + $scope.tipoAssinaturaCertificado = result.originalElement;
  37 + });
  38 +
  39 + // Atualiza pagina de pesquisa
  40 + $scope.atualizaPaginaPesquisa = function () {
  41 + angular.element('#searchTarjaAssinatura').scope().fetchResult();
  42 + };
  43 +
  44 + $scope.saveOrUpdate = function(){
  45 +
  46 + $scope.tarjaAssinaturaInternaForm.$submitted = true;
  47 + $scope.tarjaAssinaturaCertificadoForm.$submitted = true;
  48 +
  49 + if($scope.tarjaAssinaturaInternaForm.$invalid || $scope.tarjaAssinaturaCertificadoForm.$invalid){
  50 + $scope.showAlert('error', $translate.instant('MSG.MN001'), " ", false);
  51 + return;
  52 + }
  53 +
  54 + $scope.setLoadingSalva(true);
  55 +
  56 + TarjaAssinaturaRepository.save($scope.tarjaAssinatura).then(function(result) {
  57 + $scope.tarjaAssinatura = result.originalElement;
  58 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO'));
  59 + form.$submitted = false;
  60 + $scope.setLoading(false);
  61 + });
  62 + if(uploaderLogoTarja.queue.length > 0){
  63 + uploaderLogoTarja.uploadAll();
  64 + }
  65 + };
  66 +
  67 + $scope.getAllTarjas = function(){
  68 + $scope.setLoadingGet(true);
  69 + TarjaAssinaturaRepository.findAllTarjas().then(function(result) {
  70 + angular.forEach(result, function(item){
  71 + $scope.contrato.valorTotalItens += item.valorTotalItem;
  72 + });
  73 + $scope.tarjaAssinatura = result.originalElement;
  74 + $scope.edit = edit;
  75 + $scope.setLoading(false);
  76 + });
  77 + };
  78 +
  79 + $scope.getAllTarjas();
  80 +
  81 +//INSTANCIA DO OBJETO PARA FAZER UPLOAD
  82 + var uploaderLogoTarjaAssinaturaInterna = $scope.uploaderLogoTarjaAssinaturaInterna = new FileUploader({
  83 + autoUpload: false,
  84 + queueLimit: 1,
  85 + url : '/cit-ecm-web/rest/tarjaAssinatura/uploadFileLogo?idOrganizacao=' + $scope.usuarioLogado.organizacao.id +
  86 + '&idTarjaAssinatura=' + $scope.tarjaAssinatura.assinaturaInterna.id
  87 + });
  88 +
  89 + // FILTERS
  90 + uploaderLogoTarjaAssinaturaInterna.filters.push({
  91 + name: 'imageFilter',
  92 + fn: function(item , options) {
  93 + var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
  94 + return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
  95 + }
  96 + });
  97 +
  98 + // CALLBACKS
  99 + uploaderLogoTarjaAssinaturaInterna.onWhenAddingFileFailed = function(item , filter, options) {
  100 + uploaderLogoTarjaAssinaturaInterna.clearQueue();
  101 + console.info('onWhenAddingFileFailed', item, filter, options);
  102 + };
  103 + uploaderLogoTarjaAssinaturaInterna.onAfterAddingFile = function(fileItem) {
  104 + console.info('onAfterAddingFile', fileItem);
  105 + };
  106 + uploaderLogoTarjaAssinaturaInterna.onAfterAddingAll = function(addedFileItems) {
  107 + console.info('onAfterAddingAll', addedFileItems);
  108 + };
  109 + uploaderLogoTarjaAssinaturaInterna.onBeforeUploadItem = function(item) {
  110 + console.info('onBeforeUploadItem', item);
  111 + };
  112 + uploaderLogoTarjaAssinaturaInterna.onProgressItem = function(fileItem, progress) {
  113 + console.info('onProgressItem', fileItem, progress);
  114 + };
  115 + uploaderLogoTarjaAssinaturaInterna.onProgressAll = function(progress) {
  116 + console.info('onProgressAll', progress);
  117 + };
  118 + uploaderLogoTarjaAssinaturaInterna.onSuccessItem = function(fileItem, response, status, headers) {
  119 + console.info('onSuccessItem', fileItem, response, status, headers);
  120 + };
  121 + uploaderLogoTarjaAssinaturaInterna.onErrorItem = function(fileItem, response, status, headers) {
  122 + console.info('onErrorItem', fileItem, response, status, headers);
  123 + };
  124 + uploaderLogoTarjaAssinaturaInterna.onCancelItem = function(fileItem, response, status, headers) {
  125 + console.info('onCancelItem', fileItem, response, status, headers);
  126 + };
  127 + uploaderLogoTarjaAssinaturaInterna.onCompleteItem = function(fileItem, response, status, headers) {
  128 + console.info('onCompleteItem', fileItem, response, status, headers);
  129 + };
  130 + uploaderLogoTarjaAssinaturaInterna.onCompleteAll = function() {
  131 + uploaderLogoTarjaAssinaturaInterna.clearQueue();
  132 + $scope.getTarjaAssinatura($scope.tarjaAssinatura);
  133 + console.info('onCompleteAll');
  134 + };
  135 +
  136 +//INSTANCIA DO OBJETO PARA FAZER UPLOAD
  137 + var uploaderLogoTarjaAssinaturaCertificado = $scope.uploaderLogoTarjaAssinaturaCertificado = new FileUploader({
  138 + autoUpload: false,
  139 + queueLimit: 1,
  140 + url : '/cit-ecm-web/rest/tarjaAssinatura/uploadFileLogo?idOrganizacao=' + $scope.usuarioLogado.organizacao.id +
  141 + '&idTarjaAssinatura=' + $scope.tarjaAssinatura.assinaturaCertificado.id
  142 + });
  143 +
  144 + // FILTERS
  145 + uploaderLogoTarjaAssinaturaCertificado.filters.push({
  146 + name: 'imageFilter',
  147 + fn: function(item , options) {
  148 + var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
  149 + return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
  150 + }
  151 + });
  152 +
  153 + // CALLBACKS
  154 + uploaderLogoTarjaAssinaturaCertificado.onWhenAddingFileFailed = function(item , filter, options) {
  155 + uploaderLogoTarjaAssinaturaCertificado.clearQueue();
  156 + console.info('onWhenAddingFileFailed', item, filter, options);
  157 + };
  158 + uploaderLogoTarjaAssinaturaCertificado.onAfterAddingFile = function(fileItem) {
  159 + console.info('onAfterAddingFile', fileItem);
  160 + };
  161 + uploaderLogoTarjaAssinaturaCertificado.onAfterAddingAll = function(addedFileItems) {
  162 + console.info('onAfterAddingAll', addedFileItems);
  163 + };
  164 + uploaderLogoTarjaAssinaturaCertificado.onBeforeUploadItem = function(item) {
  165 + console.info('onBeforeUploadItem', item);
  166 + };
  167 + uploaderLogoTarjaAssinaturaCertificado.onProgressItem = function(fileItem, progress) {
  168 + console.info('onProgressItem', fileItem, progress);
  169 + };
  170 + uploaderLogoTarjaAssinaturaCertificado.onProgressAll = function(progress) {
  171 + console.info('onProgressAll', progress);
  172 + };
  173 + uploaderLogoTarjaAssinaturaCertificado.onSuccessItem = function(fileItem, response, status, headers) {
  174 + console.info('onSuccessItem', fileItem, response, status, headers);
  175 + };
  176 + uploaderLogoTarjaAssinaturaCertificado.onErrorItem = function(fileItem, response, status, headers) {
  177 + console.info('onErrorItem', fileItem, response, status, headers);
  178 + };
  179 + uploaderLogoTarjaAssinaturaCertificado.onCancelItem = function(fileItem, response, status, headers) {
  180 + console.info('onCancelItem', fileItem, response, status, headers);
  181 + };
  182 + uploaderLogoTarjaAssinaturaCertificado.onCompleteItem = function(fileItem, response, status, headers) {
  183 + console.info('onCompleteItem', fileItem, response, status, headers);
  184 + };
  185 + uploaderLogoTarjaAssinaturaCertificado.onCompleteAll = function() {
  186 + uploaderLogoTarjaAssinaturaCertificado.clearQueue();
  187 + $scope.getTarjaAssinatura($scope.tarjaAssinatura);
  188 + console.info('onCompleteAll');
  189 + };
  190 +
  191 +}]);
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/TarjaAssinaturaListController.js 0 → 100644
... ... @@ -0,0 +1,47 @@
  1 +'use strict';
  2 +
  3 +citApp.controller('TarjaAssinaturaListController',
  4 + ['$scope',
  5 + '$translate',
  6 + '$timeout',
  7 + 'TarjaAssinaturaRepository',
  8 + 'DominioRepository',
  9 + function ListController($scope,
  10 + $translate,
  11 + $timeout,
  12 + TarjaAssinaturaRepository,
  13 + DominioRepository) {
  14 + $scope.$showAdvancedFilters = false;
  15 +
  16 + $scope.resetForm = function() {
  17 + angular.element("#editTarjaAssinatura").scope().resetForm();
  18 + };
  19 +
  20 + $scope.headers = [ {title : $translate.instant('LABEL.TIPO_ASSINATURA'), value : 'dominio.tipoAssinatura' },
  21 + {title : $translate.instant('LABEL.DESCRICAO'), value : 'descricao' }];
  22 +
  23 + $scope.filterCriteria = {
  24 + start : 1,
  25 + dir : 'asc',
  26 + sort : 'id',
  27 + limit : 10,
  28 + fields: ['id', 'tipoAssinatura.descricao', 'descricao'],
  29 + filters : [ {type : 'string', field : 'tipoAssinatura.descricao', listaDominio : [] },
  30 + {type : 'string', field : 'descricao' }]
  31 + };
  32 +
  33 + DominioRepository.findAllDominio('tipoAssinatura').then(function(result) {
  34 + $scope.filterCriteria.filters[0].listaDominio = result;
  35 + });
  36 +
  37 + $scope.abrirVisualizar = function(edit){
  38 + var tarjaAssinatura = $scope.tarjaAssinaturaChecked;
  39 +
  40 + if(!tarjaAssinatura) {
  41 + $scope.showAlert('warning', !edit ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
  42 + return;
  43 + }
  44 + angular.element('#editTarjaAssinatura').scope().getTarjaAssinatura(tarjaAssinatura, edit);
  45 + $scope.$showPageEditWorkspace($scope.workspace);
  46 + };
  47 +}]);
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/TarjaAssinaturaRepository.js 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +'use strict';
  2 +
  3 +citApp.factory('TarjaAssinaturaRepository', ['RestangularEcm', 'AbstractRepository', function (restangularEcm, AbstractRepository) {
  4 +
  5 + function TarjaAssinaturaRepository() {
  6 + AbstractRepository.call(this, restangularEcm, 'rest/tarjaAssinatura');
  7 +
  8 + this.findAllTarjas = function() {
  9 + return restangular.one(this.route).getList("findAllTarjas").then();
  10 + };
  11 + }
  12 +
  13 + AbstractRepository.extend(TarjaAssinaturaRepository);
  14 +
  15 + return new TarjaAssinaturaRepository();
  16 +}]);
... ...
cit-ecm-web/src/main/webapp/html/tarjaAssinatura/tarjaAssinatura.html 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +<!-- <div ng-include src="'/cit-ecm-web/html/tarjaAssinatura/tarjaAssinaturaList.html'" ng-show="workspace.$showSearch"></div> -->
  2 +<div ng-include src="'/cit-ecm-web/html/tarjaAssinatura/tarjaAssinaturaEdit.html'" ng-show="workspace.$showEdit"></div>
... ...
cit-ecm-web/src/main/webapp/html/tarjaAssinatura/tarjaAssinaturaEdit.html 0 → 100644
... ... @@ -0,0 +1,90 @@
  1 +<div id="editTarjaAssinatura" class="page-content clearfix"
  2 + ng-controller="TarjaAssinaturaController">
  3 + <div class="bar-buttons-action fixed">
  4 + <div class="row">
  5 + <div class="col-sm-8 text-left">
  6 + <button class="btn btn-clear" ng-click="saveOrUpdate(tarjaAssinaturaForm)" ng-show="edit">
  7 + <i class="fa fa-save green"></i>
  8 + <translate>LABEL.SALVAR</translate>
  9 + </button>
  10 + <button class="btn btn-clear" ng-click="resetForm()" ng-show="edit">
  11 + <i class="fa fa-eraser yellow-dark"></i>
  12 + <translate>LABEL.LIMPAR</translate>
  13 + </button>
  14 + <button class="btn btn-clear" ng-show="!edit" ng-click="edit = true">
  15 + <i class="fa fa-pencil blue"></i>
  16 + <translate>LABEL.EDITAR</translate>
  17 + </button>
  18 + <button class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();">
  19 + <i class="fa fa-search"></i>
  20 + <translate>LABEL.PESQUISAR</translate>
  21 + </button>
  22 + </div>
  23 + <!-- .col -->
  24 +
  25 + <div class="col-sm-4 text-right">
  26 + <favorito />
  27 + <help-button workspace="workspace" />
  28 + </div><!-- .col -->
  29 + </div><!-- .row -->
  30 + </div><!-- .bar-buttons-action -->
  31 +
  32 + <h1 class="title"><translate>ECM.LABEL.TARJAS_ASSINATURA</translate></h1>
  33 + </br>
  34 + <breadcrumb ng-workspace="workspace"></breadcrumb>
  35 +
  36 + <form name="tarjaAssinaturaForm">
  37 + <p><small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small></p>
  38 + <fieldset>
  39 + <legend>
  40 + <translate>ECM.LABEL.DADOS_TARJA_ASSINATURA</translate>
  41 + </legend>
  42 + </fieldset>
  43 + <div class="row">
  44 + <div class="col-md-6">
  45 + <label-input ng-id="tarjaAssinatura.descricao" ng-label="LABEL.DESCRICAO" ng-type="text" ng-model="tarjaAssinatura.descricao"
  46 + form="tarjaAssinaturaForm" ng-obrigatorio="true" ng-custom-maxlength="100" ng-type="text" ng-disabled="!edit" />
  47 + </div>
  48 + <div class="col-md-4">
  49 + <label-input ng-id="tarjaAssinatura.tipoAssinatura" ng-label="LABEL.TIPO_ASSINATURA" ng-type="text" ng-disabled="true"
  50 + ng-model="tarjaAssinatura.tipoAssinatura" form="tarjaAssinaturaForm" ng-obrigatorio="false" ng-type="text" />
  51 + </div>
  52 + </div>
  53 + <div class="row">
  54 + <div class="col-md-12">
  55 + <div class="form-group">
  56 + <label class="control-label block" ng-class="{'has-error': !tarjaAssinatura.conteudo && tarjaAssinaturaForm.$submitted}">
  57 + <translate>ECM.LABEL.CONTEUDO_HTML</translate> <span class="red">*</span>
  58 + <i ng-show="!tarjaAssinatura.conteudo && tarjaAssinaturaForm.$submitted" class='fa fa-warning red'
  59 + tooltip="{{$translate.instant('ECM.LABEL.CONTEUDO_HTML') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}"
  60 + tooltip-placement='top'></i>
  61 + </label>
  62 + <div id="tarjaAssinatura.conteudo" ckeditor="options" ng-if='edit' ng-model="tarjaAssinatura.conteudo" ready="onReady()"></div>
  63 + <iframe id="visualizacaoConteudoTarjaAssinatura" allowfullscreen class="iframe-report" ng-show="!edit"></iframe>
  64 + </div>
  65 + </div>
  66 + </div>
  67 + <div class="row">
  68 + <div class="col-sm-12">
  69 + <div class="form-group">
  70 + <label class="control-label"><translate>ECM.LABEL.LOGO_TARJA_ASSINATURA</translate></label>
  71 + <div nv-file-drop="" uploader="uploaderLogoTarja" onclick="$('#uploadLogoTarjaAssinatura').click();">
  72 + <div nv-file-over="" uploader="uploaderLogoTarja" over-class="another-file-over-class" class="well my-drop-zone">
  73 + <span ng-show="uploaderLogoTarja.queue.length <= 0"><translate>MSG.ARRASTE_SOLTE_ARQUIVO</translate></span>
  74 + <span ng-show="uploaderLogoTarja.queue.length > 0">{{uploaderLogoTarja.queue[0].file.name}}</span>
  75 + </div>
  76 + </div>
  77 + <input id="uploadLogoTarjaAssinatura" type="file" nv-file-select="" uploader="uploaderLogoTarja" ng-show="false" />
  78 + <div ng-show="uploaderLogoTarja.queue.length > 0 && tarjaAssinatura.anexoImagem.anexo == undefined">
  79 + <div ng-thumb="{ file: uploaderLogoTarja.queue._file, width: auto, height: auto }"></div>
  80 + </div>
  81 + </div><!-- .form-group -->
  82 + <div>
  83 + <img ng-src="data:image/JPEG;base64,{{tarjaAssinatura.anexoImagem.anexo}}" class="img-thumbnail" style="max-width: 300px; height: auto;">
  84 + </div>
  85 +
  86 + </div>
  87 + </div>
  88 + </form>
  89 +</div>
  90 +<!-- .page-content -->
... ...
cit-ecm-web/src/main/webapp/html/tarjaAssinatura/tarjaAssinaturaList.html 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +<div id="searchTarjaAssinatura" class="page-content" ng-controller="TarjaAssinaturaListController">
  2 + <div class="bar-buttons-action fixed">
  3 + <div class="row">
  4 + <div class="col-sm-8 text-left">
  5 + <button class="btn btn-clear" ng-click="abrirVisualizar(false);">
  6 + <i class="fa fa-search blue"></i>
  7 + <translate>LABEL.VISUALIZAR</translate>
  8 + </button>
  9 + <button class="btn btn-clear" ng-click="abrirVisualizar(true);">
  10 + <i class="fa fa-pencil blue"></i>
  11 + <translate>LABEL.EDITAR</translate>
  12 + </button>
  13 + <span class="divider-vertical"></span>
  14 + <filtros ng-filter="filterCriteria" ng-workspace="workspace"></filtros>
  15 + </div>
  16 + <!-- .col -->
  17 +
  18 + <div class="col-sm-4 text-right">
  19 + <favorito />
  20 + <help-button workspace="workspace" />
  21 + </div>
  22 + <!-- .col -->
  23 + </div>
  24 + <!-- .row -->
  25 + </div>
  26 + <!-- .bar-buttons-action -->
  27 +
  28 + <breadcrumb ng-workspace="workspace"></breadcrumb>
  29 +
  30 + <list-view ng-lista="tarjaAssinaturaList" ng-repository="TarjaAssinaturaRepository" ng-use-custom-remove="false" ng-headers="headers"
  31 + ng-filter-criteria="filterCriteria" ng-item-selecionado="tarjaAssinaturaChecked"></list-view>
  32 +</div>
  33 +<!-- .page-content -->
... ...