dts-backoffice-util 14.3.0 → 14.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,7 +12,7 @@ Segue abaixo as últimas versões da Biblioteca, conforme a versão do PO-UI e A
12
12
 
13
13
  | PO-UI | Angular | Versão dtsBackofficeUtil |
14
14
  |-|-| -|
15
- | v14 | v14 | 14.3.0 |
15
+ | v14 | v14 | 14.4.1 |
16
16
  | v6 | v13 | 6.0.2 |
17
17
  | v5 | v12 | 5.0.1 |
18
18
  | v4 | v11 | 4.0.1 |
@@ -102,13 +102,15 @@ Métodos:
102
102
 
103
103
  | Nome | Descrição |
104
104
  |-|-|
105
- | callProgress | Executa uma tela Progress que esteja cadastrada no menu.<br>**Parâmetros:**<br>- program (object): Objeto com os seguintes atributos:<br>prg (string): Nome do programa no menu.<br>params (Array(object)): Array de Objetos de Parâmetros. O objeto possui dois atributos: "type" com o tipo de dado (character, integer, logical, etc...). E "value" com o conteúdo.<br>**Retorno:** Não há. |
106
- | openPath | Executa uma tela PO-UI que esteja cadastrada no menu.<br>**Parâmetros:**<br>- programName (string): Nome interno do Programa, no cadastro de menu.<br>- params (string): Parâmetros que serão adicionados na URL.<br>- parent (boolean): Indica se a tela deve abrir na mesma Aba do Navegador (valor: **true**) ou em outra Aba do Navegador (valor: **false**). **Obs:** Quando a tela abrir na mesma Aba do Navegador, irá abrir em outra Aba do Menu do Datasul.<br>**Retorno:** Não há. |
107
- | sendNotification | Apresenta uma notificação ao usuário.<br>**Parâmetros:**<br>- notification (object): Objeto com os seguintes atributos:<br>type (string): Tipo de notificação (success, warning, error).<br>title (string): Título da Notificação.<br>detail (string): Descrição da Notificação.<br>**Retorno:** Não há. |
105
+ | callProgress | Executa uma tela Progress que esteja cadastrada no menu.<br>**Importante:** Este método realiza uma integração direta com o Menu do Datasul (parte HTML do Menu). Portanto, ele somente funciona quando o projeto está sendo executado por dentro do Menu do Datasul.<br>**Parâmetros:**<br>- program (object): Objeto com os seguintes atributos:<br>prg (string): Nome do programa no menu.<br>params (Array(object)): Array de Objetos de Parâmetros. O objeto possui dois atributos: "type" com o tipo de dado (character, integer, logical, etc...). E "value" com o conteúdo.<br>**Retorno:** Não há. |
106
+ | openPath | Executa uma tela PO-UI que esteja cadastrada no menu.<br>**Importante:** Este método realiza uma integração direta com o Menu do Datasul (parte HTML do Menu). Portanto, ele somente funciona quando o projeto está sendo executado por dentro do Menu do Datasul.<br>**Parâmetros:**<br>- programName (string): Nome interno do Programa, no cadastro de menu.<br>- params (string): Parâmetros que serão adicionados na URL.<br>- parent (boolean): Indica se a tela deve abrir na mesma Aba do Navegador (valor: **true**) ou em outra Aba do Navegador (valor: **false**). **Obs:** Quando a tela abrir na mesma Aba do Navegador, irá abrir em outra Aba do Menu do Datasul.<br>**Retorno:** Não há. |
107
+ | sendNotification | Apresenta uma notificação ao usuário.<br>**Importante:** Este método realiza uma integração direta com o Menu do Datasul (parte HTML do Menu). Portanto, ele somente funciona quando o projeto está sendo executado por dentro do Menu do Datasul.<br>**Parâmetros:**<br>- notification (object): Objeto com os seguintes atributos:<br>type (string): Tipo de notificação (success, warning, error).<br>title (string): Título da Notificação.<br>detail (string): Descrição da Notificação.<br>**Retorno:** Não há. |
108
+ | programSecurity | Verifica a Segurança do Menu, identificando se o usuário corrente possui acesso a um ou mais programas.<br>**Parâmetros:**<br>- programName (string ou Array): Nome do Programa cadastro no Menu, que se deseja consultar a segurança. Podendo ser informado uma string simples com o Nome do Programa, ou um Array de strings com a lista de Programas.<br>**Retorno:** response (Observable(Array)): Array com as informações dos Programas pesquisados. O objeto contido no Array terá dois atributos:<br>programName (string): Nome do Programa no Menu.<br>hasAccess (boolean): Valor "TRUE" ou "FALSE", indicando se o usuário tem acesso ao programa. **Obs:** Se o programa não estiver cadastro no Menu, o retorno deste atributo será "FALSE". |
108
109
  ---
109
110
 
110
111
  Exemplo de uso:
111
112
  ```
113
+ // Executando uma tela Progress
112
114
  program = {
113
115
  prg: 'bas_lote_liquidac_acr',
114
116
  params: [
@@ -118,14 +120,42 @@ program = {
118
120
  };
119
121
  this.menuDatasulService.callProgress(program);
120
122
 
123
+ // Executando uma Tela HTML
121
124
  this.menuDatasulService.openPath('html.inquiryItem', '1509;10;1', true);
122
125
 
126
+ // Disparando uma Notificação
123
127
  notification = {
124
128
  type: 'success',
125
129
  title: 'Operação foi executada com Sucesso.',
126
130
  detail: 'A Operação 4343 foi executada conforme parametrizado e finalizou.'
127
131
  };
128
132
  this.menuDatasulService.sendNotification(notification);
133
+
134
+ // Validando a Segurança de um Programa
135
+ this.menuDatasulService
136
+ .programSecurity('html.cashControl')
137
+ .subscribe((response: Array<Object>) => {
138
+ console.log('response:', response[0]);
139
+ // Resposta: { programName: "html.cashControl", hasAccess: true }
140
+ });
141
+
142
+ // Validando a Segurança de uma Lista de Programas
143
+ let programList = [];
144
+ programList.push('pr0590');
145
+ programList.push('html.prgNoExist');
146
+ programList.push('bas_empresa');
147
+
148
+ this.menuDatasulService
149
+ .programSecurity(programList)
150
+ .subscribe((response: Array<Object>) => {
151
+ console.log('response:', response);
152
+ /* Resposta:
153
+ [
154
+ 0: { programName: "pr0590", hasAccess: false }
155
+ 1: { programName: "html.prgNoExist", hasAccess: false }
156
+ 2: { programName: "bas_empresa", hasAccess: true }
157
+ ] */
158
+ });
129
159
  ```
130
160
 
131
161
  <br>
@@ -1,7 +1,13 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { forkJoin, map } from 'rxjs';
3
+ import { of } from 'rxjs';
2
4
  import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
3
6
  export class MenuDatasulService {
4
- constructor() { }
7
+ constructor(http) {
8
+ this.http = http;
9
+ this.urlMenuPrograms = '/dts/datasul-rest/resources/prg/fwk/v1/menuPrograms/list';
10
+ }
5
11
  /**
6
12
  * var program = {};
7
13
  * program['prg'] = "cd0210";
@@ -32,10 +38,59 @@ export class MenuDatasulService {
32
38
  window.open(baseUrl);
33
39
  }
34
40
  }
41
+ programSecurity(programName) {
42
+ let programList = [];
43
+ if (Array.isArray(programName)) {
44
+ programList = programName;
45
+ }
46
+ else {
47
+ if (programName && programName !== '') {
48
+ programList.push(programName);
49
+ }
50
+ }
51
+ if (!programList || programList.length === 0) {
52
+ return of({
53
+ code: 400,
54
+ message: 'Não foi possível validar a Segurança dos Programas, lista vazia !',
55
+ detailedMessage: 'A lista de programas indicados para validação de segurança é inválida ou está vazia.'
56
+ });
57
+ }
58
+ const aRequest = [];
59
+ programList.forEach(programSearch => {
60
+ aRequest.push(this.http.post(this.urlMenuPrograms, { search: programSearch }));
61
+ });
62
+ return forkJoin(aRequest).pipe(map((response) => {
63
+ if (!response) {
64
+ return response;
65
+ }
66
+ if (!Array.isArray(response)) {
67
+ return response;
68
+ }
69
+ const responseReturn = new Array();
70
+ for (let idx = 0; idx < programList.length; idx++) {
71
+ const responseProg = response[idx];
72
+ let hasAcess = false;
73
+ if (responseProg && responseProg.programs &&
74
+ Array.isArray(responseProg.programs) &&
75
+ responseProg.programs.length > 0) {
76
+ responseProg.programs.forEach(prog => {
77
+ if (prog.prg === programList[idx]) {
78
+ hasAcess = true;
79
+ }
80
+ });
81
+ }
82
+ responseReturn.push({
83
+ programName: programList[idx],
84
+ hasAccess: hasAcess
85
+ });
86
+ }
87
+ return responseReturn;
88
+ }));
89
+ }
35
90
  }
36
- /** @nocollapse */ MenuDatasulService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
91
+ /** @nocollapse */ MenuDatasulService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
37
92
  /** @nocollapse */ MenuDatasulService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService });
38
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService, decorators: [{
39
94
  type: Injectable
40
- }], ctorParameters: function () { return []; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kYXRhc3VsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvc2VydmljZXMvbWVudS1kYXRhc3VsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQixnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLE9BQU87UUFDdkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGdCQUFnQixDQUFDLFlBQVk7UUFDaEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxRQUFRLENBQUMsV0FBbUIsRUFBRSxNQUFXLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDM0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUM3RixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsTUFBTSxXQUFXLGlCQUFpQixXQUFXLElBQUksQ0FBQztRQUUvRSxJQUFJLE1BQU0sRUFBRTtZQUNSLE9BQU8sR0FBRyxHQUFHLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztTQUNwQztRQUVELElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEI7SUFDTCxDQUFDOztrSUFwQ1Esa0JBQWtCO3NJQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1lbnVEYXRhc3VsU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHZhciBwcm9ncmFtID0ge307XHJcbiAgICAgKiBwcm9ncmFtWydwcmcnXSA9IFwiY2QwMjEwXCI7XHJcbiAgICAgKiBwcm9ncmFtWydwYXJhbXMnXSA9ICcwMXwxMjM0NTYnXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYWxsUHJvZ3Jlc3MocHJvZ3JhbSkge1xyXG4gICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSh7IHByb2dyYW0gfSwgJyonKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHZhciBub3RpZmljYXRpb24gPSB7fTtcclxuICAgICAqIG5vdGlmaWNhdGlvblsndHlwZSddID0gJ3N1Y2Nlc3MnO1xyXG4gICAgICogbm90aWZpY2F0aW9uWyd0aXRsZSddID0gJ05vdGlmaWNhdGlvbiBUaXRsZSdcclxuICAgICAqIG5vdGlmaWNhdGlvblsnZGV0YWlsJ10gPSAnTm90aWZpY2F0aW9uIERldGFpbCdcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbmROb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKHsgbm90aWZpY2F0aW9uIH0sICcqJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5QYXRoKHByb2dyYW1OYW1lOiBzdHJpbmcsIHBhcmFtczogYW55LCBwYXJlbnQgPSB0cnVlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGF0YXN1bFBhdGggPSBkb2N1bWVudC5yZWZlcnJlci5pbmRleE9mKCd0b3R2cy1tZW51JykgPiAwID8gJ3RvdHZzLW1lbnUnIDogJ21lbnUtaHRtbCc7XHJcbiAgICAgICAgbGV0IGJhc2VVcmwgPSBgLyR7ZGF0YXN1bFBhdGh9LyMvJHtkYXRhc3VsUGF0aH0vcHJvZ3JhbS1odG1sLyR7cHJvZ3JhbU5hbWV9LyNgO1xyXG5cclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGJhc2VVcmwgPSBgJHtiYXNlVXJsfS8ke3BhcmFtc31gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICB3aW5kb3cub3BlbihiYXNlVXJsLCAnX3BhcmVudCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGJhc2VVcmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
95
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kYXRhc3VsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvc2VydmljZXMvbWVudS1kYXRhc3VsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHMUIsTUFBTSxPQUFPLGtCQUFrQjtJQUkzQixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLG9CQUFlLEdBQUcsMERBQTBELENBQUM7SUFFN0MsQ0FBQztJQUV6Qzs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLE9BQU87UUFDdkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGdCQUFnQixDQUFDLFlBQVk7UUFDaEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxRQUFRLENBQUMsV0FBbUIsRUFBRSxNQUFXLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDM0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUM3RixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsTUFBTSxXQUFXLGlCQUFpQixXQUFXLElBQUksQ0FBQztRQUUvRSxJQUFJLE1BQU0sRUFBRTtZQUNSLE9BQU8sR0FBRyxHQUFHLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztTQUNwQztRQUVELElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1DO1FBQ3RELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDNUIsV0FBVyxHQUFHLFdBQVcsQ0FBQztTQUM3QjthQUFNO1lBQ0gsSUFBSSxXQUFXLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRTtnQkFDbkMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqQztTQUNKO1FBRUQsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQyxPQUFPLEVBQUUsQ0FBQztnQkFDTixJQUFJLEVBQUUsR0FBRztnQkFDVCxPQUFPLEVBQUUsbUVBQW1FO2dCQUM1RSxlQUFlLEVBQUUsc0ZBQXNGO2FBQzFHLENBQUMsQ0FBQztTQUNOO1FBRUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBUyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQUUsT0FBTyxRQUFRLENBQUM7YUFBRTtZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFBRSxPQUFPLFFBQVEsQ0FBQzthQUFFO1lBRWxELE1BQU0sY0FBYyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7WUFFM0MsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQy9DLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUVyQixJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsUUFBUTtvQkFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO29CQUNwQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBRWxDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNqQyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUMvQixRQUFRLEdBQUcsSUFBSSxDQUFDO3lCQUNuQjtvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDTjtnQkFFRCxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUNoQixXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQztvQkFDN0IsU0FBUyxFQUFFLFFBQVE7aUJBQ3RCLENBQUMsQ0FBQzthQUNOO1lBRUQsT0FBTyxjQUFjLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7O2tJQTlGUSxrQkFBa0I7c0lBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNZW51RGF0YXN1bFNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgdXJsTWVudVByb2dyYW1zID0gJy9kdHMvZGF0YXN1bC1yZXN0L3Jlc291cmNlcy9wcmcvZndrL3YxL21lbnVQcm9ncmFtcy9saXN0JztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdmFyIHByb2dyYW0gPSB7fTtcclxuICAgICAqIHByb2dyYW1bJ3ByZyddID0gXCJjZDAyMTBcIjtcclxuICAgICAqIHByb2dyYW1bJ3BhcmFtcyddID0gJzAxfDEyMzQ1NidcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbGxQcm9ncmVzcyhwcm9ncmFtKSB7XHJcbiAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKHsgcHJvZ3JhbSB9LCAnKicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdmFyIG5vdGlmaWNhdGlvbiA9IHt9O1xyXG4gICAgICogbm90aWZpY2F0aW9uWyd0eXBlJ10gPSAnc3VjY2Vzcyc7XHJcbiAgICAgKiBub3RpZmljYXRpb25bJ3RpdGxlJ10gPSAnTm90aWZpY2F0aW9uIFRpdGxlJ1xyXG4gICAgICogbm90aWZpY2F0aW9uWydkZXRhaWwnXSA9ICdOb3RpZmljYXRpb24gRGV0YWlsJ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VuZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pIHtcclxuICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoeyBub3RpZmljYXRpb24gfSwgJyonKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblBhdGgocHJvZ3JhbU5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnksIHBhcmVudCA9IHRydWUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhc3VsUGF0aCA9IGRvY3VtZW50LnJlZmVycmVyLmluZGV4T2YoJ3RvdHZzLW1lbnUnKSA+IDAgPyAndG90dnMtbWVudScgOiAnbWVudS1odG1sJztcclxuICAgICAgICBsZXQgYmFzZVVybCA9IGAvJHtkYXRhc3VsUGF0aH0vIy8ke2RhdGFzdWxQYXRofS9wcm9ncmFtLWh0bWwvJHtwcm9ncmFtTmFtZX0vI2A7XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgICAgICAgYmFzZVVybCA9IGAke2Jhc2VVcmx9LyR7cGFyYW1zfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGJhc2VVcmwsICdfcGFyZW50Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4oYmFzZVVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwcm9ncmFtU2VjdXJpdHkocHJvZ3JhbU5hbWU6IHN0cmluZyB8IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgICAgIGxldCBwcm9ncmFtTGlzdCA9IFtdO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb2dyYW1OYW1lKSkge1xyXG4gICAgICAgICAgICBwcm9ncmFtTGlzdCA9IHByb2dyYW1OYW1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9ncmFtTmFtZSAmJiBwcm9ncmFtTmFtZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHByb2dyYW1MaXN0LnB1c2gocHJvZ3JhbU5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXByb2dyYW1MaXN0IHx8IHByb2dyYW1MaXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2Yoe1xyXG4gICAgICAgICAgICAgICAgY29kZTogNDAwLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ07Do28gZm9pIHBvc3PDrXZlbCB2YWxpZGFyIGEgU2VndXJhbsOnYSBkb3MgUHJvZ3JhbWFzLCBsaXN0YSB2YXppYSAhJyxcclxuICAgICAgICAgICAgICAgIGRldGFpbGVkTWVzc2FnZTogJ0EgbGlzdGEgZGUgcHJvZ3JhbWFzIGluZGljYWRvcyBwYXJhIHZhbGlkYcOnw6NvIGRlIHNlZ3VyYW7Dp2Egw6kgaW52w6FsaWRhIG91IGVzdMOhIHZhemlhLidcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhUmVxdWVzdCA9IFtdO1xyXG4gICAgICAgIHByb2dyYW1MaXN0LmZvckVhY2gocHJvZ3JhbVNlYXJjaCA9PiB7XHJcbiAgICAgICAgICAgIGFSZXF1ZXN0LnB1c2godGhpcy5odHRwLnBvc3Q8T2JqZWN0Pih0aGlzLnVybE1lbnVQcm9ncmFtcywgeyBzZWFyY2g6IHByb2dyYW1TZWFyY2ggfSkpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oYVJlcXVlc3QpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IE9iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH1cclxuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHsgcmV0dXJuIHJlc3BvbnNlOyB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VSZXR1cm4gPSBuZXcgQXJyYXk8T2JqZWN0PigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHByb2dyYW1MaXN0Lmxlbmd0aDsgaWR4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZVByb2cgPSByZXNwb25zZVtpZHhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXNBY2VzcyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VQcm9nICYmIHJlc3BvbnNlUHJvZy5wcm9ncmFtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHJlc3BvbnNlUHJvZy5wcm9ncmFtcykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VQcm9nLnByb2dyYW1zLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvZy5wcm9ncmFtcy5mb3JFYWNoKHByb2cgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2cucHJnID09PSBwcm9ncmFtTGlzdFtpZHhdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQWNlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlUmV0dXJuLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtTmFtZTogcHJvZ3JhbUxpc3RbaWR4XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQWNjZXNzOiBoYXNBY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZVJldHVybjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Component, ViewChild, Input, Output, Pipe, NgModule } from '@angular/core';
3
- import { of } from 'rxjs';
3
+ import { of, forkJoin, map as map$1 } from 'rxjs';
4
4
  import { map } from 'rxjs/operators';
5
5
  import * as i1 from '@angular/common/http';
6
6
  import { HttpErrorResponse, HttpClientModule } from '@angular/common/http';
@@ -244,7 +244,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
244
244
  }], ctorParameters: function () { return []; } });
245
245
 
246
246
  class MenuDatasulService {
247
- constructor() { }
247
+ constructor(http) {
248
+ this.http = http;
249
+ this.urlMenuPrograms = '/dts/datasul-rest/resources/prg/fwk/v1/menuPrograms/list';
250
+ }
248
251
  /**
249
252
  * var program = {};
250
253
  * program['prg'] = "cd0210";
@@ -275,12 +278,61 @@ class MenuDatasulService {
275
278
  window.open(baseUrl);
276
279
  }
277
280
  }
281
+ programSecurity(programName) {
282
+ let programList = [];
283
+ if (Array.isArray(programName)) {
284
+ programList = programName;
285
+ }
286
+ else {
287
+ if (programName && programName !== '') {
288
+ programList.push(programName);
289
+ }
290
+ }
291
+ if (!programList || programList.length === 0) {
292
+ return of({
293
+ code: 400,
294
+ message: 'Não foi possível validar a Segurança dos Programas, lista vazia !',
295
+ detailedMessage: 'A lista de programas indicados para validação de segurança é inválida ou está vazia.'
296
+ });
297
+ }
298
+ const aRequest = [];
299
+ programList.forEach(programSearch => {
300
+ aRequest.push(this.http.post(this.urlMenuPrograms, { search: programSearch }));
301
+ });
302
+ return forkJoin(aRequest).pipe(map$1((response) => {
303
+ if (!response) {
304
+ return response;
305
+ }
306
+ if (!Array.isArray(response)) {
307
+ return response;
308
+ }
309
+ const responseReturn = new Array();
310
+ for (let idx = 0; idx < programList.length; idx++) {
311
+ const responseProg = response[idx];
312
+ let hasAcess = false;
313
+ if (responseProg && responseProg.programs &&
314
+ Array.isArray(responseProg.programs) &&
315
+ responseProg.programs.length > 0) {
316
+ responseProg.programs.forEach(prog => {
317
+ if (prog.prg === programList[idx]) {
318
+ hasAcess = true;
319
+ }
320
+ });
321
+ }
322
+ responseReturn.push({
323
+ programName: programList[idx],
324
+ hasAccess: hasAcess
325
+ });
326
+ }
327
+ return responseReturn;
328
+ }));
329
+ }
278
330
  }
279
- /** @nocollapse */ MenuDatasulService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
331
+ /** @nocollapse */ MenuDatasulService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
280
332
  /** @nocollapse */ MenuDatasulService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService });
281
333
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuDatasulService, decorators: [{
282
334
  type: Injectable
283
- }], ctorParameters: function () { return []; } });
335
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
284
336
 
285
337
  class CacheParamsService {
286
338
  constructor() {