@senior-gestao-relacionamento/angular-components 1.3.0 → 1.5.0

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.
Files changed (180) hide show
  1. package/bundles/senior-gestao-relacionamento-angular-components.umd.js +903 -158
  2. package/bundles/senior-gestao-relacionamento-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js.map +1 -1
  5. package/components/index.d.ts +2 -0
  6. package/components/refresh-websocket-alert/index.d.ts +2 -0
  7. package/components/refresh-websocket-alert/refresh-websocket-alert.component.d.ts +14 -0
  8. package/components/refresh-websocket-alert/refresh-websocket-alert.module.d.ts +2 -0
  9. package/components/reports/enums/format-enum.d.ts +9 -0
  10. package/components/reports/enums/index.d.ts +2 -0
  11. package/components/reports/enums/view-mode-enum.d.ts +4 -0
  12. package/components/reports/index.d.ts +5 -0
  13. package/components/reports/models/callback-event.d.ts +4 -0
  14. package/components/reports/models/generate-report-input-dto.d.ts +11 -0
  15. package/components/reports/models/generate-report-output-dto.d.ts +3 -0
  16. package/components/reports/models/index.d.ts +7 -0
  17. package/components/reports/models/parameter.d.ts +4 -0
  18. package/components/reports/models/report-dto.d.ts +6 -0
  19. package/components/reports/models/reports-options.d.ts +14 -0
  20. package/components/reports/models/response-list-report-dto.d.ts +8 -0
  21. package/components/reports/reports.component.d.ts +41 -0
  22. package/components/reports/reports.module.d.ts +2 -0
  23. package/components/reports/reports.service.d.ts +16 -0
  24. package/esm2015/components/index.js +3 -0
  25. package/esm2015/components/refresh-websocket-alert/index.js +3 -0
  26. package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.component.js +57 -0
  27. package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.module.js +26 -0
  28. package/esm2015/components/reports/enums/format-enum.js +11 -0
  29. package/esm2015/components/reports/enums/index.js +3 -0
  30. package/esm2015/components/reports/enums/view-mode-enum.js +6 -0
  31. package/esm2015/components/reports/index.js +5 -0
  32. package/esm2015/components/reports/models/callback-event.js +1 -0
  33. package/esm2015/components/reports/models/generate-report-input-dto.js +1 -0
  34. package/esm2015/components/reports/models/generate-report-output-dto.js +1 -0
  35. package/esm2015/components/reports/models/index.js +1 -0
  36. package/esm2015/components/reports/models/parameter.js +1 -0
  37. package/esm2015/components/reports/models/report-dto.js +1 -0
  38. package/esm2015/components/reports/models/reports-options.js +1 -0
  39. package/esm2015/components/reports/models/response-list-report-dto.js +1 -0
  40. package/esm2015/components/reports/reports.component.js +202 -0
  41. package/esm2015/components/reports/reports.module.js +43 -0
  42. package/esm2015/components/reports/reports.service.js +73 -0
  43. package/esm2015/locale/fallback.js +16 -0
  44. package/esm2015/public-api.js +5 -7
  45. package/esm2015/senior-gestao-relacionamento-angular-components.js +3 -2
  46. package/esm2015/services/current-collaborator/current-collaborator.module.js +4 -2
  47. package/esm2015/services/current-collaborator/current-collaborator.service.js +24 -8
  48. package/esm2015/services/current-collaborator/models/collaborator-dto.js +1 -1
  49. package/esm2015/services/current-collaborator/models/collaborator.js +1 -1
  50. package/esm2015/services/current-collaborator/models/e-070-fil-crmx-dto.js +1 -1
  51. package/esm2015/services/current-collaborator/models/e-070-fil-crmx.js +1 -1
  52. package/esm2015/services/index.js +7 -0
  53. package/esm2015/services/schedule-form-rules/enums/index.js +6 -0
  54. package/esm2015/services/schedule-form-rules/enums/month-enum.js +16 -0
  55. package/esm2015/services/schedule-form-rules/enums/ordinal-week-day-enum.js +9 -0
  56. package/esm2015/services/schedule-form-rules/enums/recurrence-enum.js +8 -0
  57. package/esm2015/services/schedule-form-rules/enums/repeat-when-enum.js +6 -0
  58. package/esm2015/services/schedule-form-rules/enums/week-day-enum.js +11 -0
  59. package/esm2015/services/schedule-form-rules/index.js +4 -0
  60. package/esm2015/services/schedule-form-rules/schedule-form-rules.module.js +15 -0
  61. package/esm2015/services/schedule-form-rules/schedule-form-rules.service.js +105 -0
  62. package/esm2015/services/standard-filters/index.js +3 -3
  63. package/esm2015/services/standard-filters/{standard filters.module.js → standard-filters.module.js} +2 -2
  64. package/esm2015/services/standard-filters/{standard filters.service.js → standard-filters.service.js} +1 -1
  65. package/esm2015/services/storage/storage.module.js +17 -0
  66. package/esm2015/services/storage/storage.service.js +39 -27
  67. package/esm2015/services/websocket/index.js +3 -1
  68. package/esm2015/services/websocket/models/event-dto.js +1 -0
  69. package/esm2015/services/websocket/models/event.js +13 -0
  70. package/esm2015/services/websocket/models/index.js +3 -0
  71. package/esm2015/services/websocket/models/topic-dto.js +1 -0
  72. package/esm2015/services/websocket/models/topic.js +25 -0
  73. package/esm2015/services/websocket/websocket.module.js +18 -0
  74. package/esm2015/services/websocket/websocket.service.js +103 -51
  75. package/esm2015/utils/index.js +3 -0
  76. package/esm2015/utils/string-converter.service.js +7 -0
  77. package/esm2015/utils/value-changes.service.js +7 -0
  78. package/esm5/components/index.js +3 -0
  79. package/esm5/components/refresh-websocket-alert/index.js +3 -0
  80. package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.component.js +59 -0
  81. package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.module.js +29 -0
  82. package/esm5/components/reports/enums/format-enum.js +11 -0
  83. package/esm5/components/reports/enums/index.js +3 -0
  84. package/esm5/components/reports/enums/view-mode-enum.js +6 -0
  85. package/esm5/components/reports/index.js +5 -0
  86. package/esm5/components/reports/models/callback-event.js +1 -0
  87. package/esm5/components/reports/models/generate-report-input-dto.js +1 -0
  88. package/esm5/components/reports/models/generate-report-output-dto.js +1 -0
  89. package/esm5/components/reports/models/index.js +1 -0
  90. package/esm5/components/reports/models/parameter.js +1 -0
  91. package/esm5/components/reports/models/report-dto.js +1 -0
  92. package/esm5/components/reports/models/reports-options.js +1 -0
  93. package/esm5/components/reports/models/response-list-report-dto.js +1 -0
  94. package/esm5/components/reports/reports.component.js +208 -0
  95. package/esm5/components/reports/reports.module.js +46 -0
  96. package/esm5/components/reports/reports.service.js +75 -0
  97. package/esm5/locale/fallback.js +16 -0
  98. package/esm5/public-api.js +5 -7
  99. package/esm5/senior-gestao-relacionamento-angular-components.js +3 -2
  100. package/esm5/services/current-collaborator/current-collaborator.module.js +4 -2
  101. package/esm5/services/current-collaborator/current-collaborator.service.js +26 -9
  102. package/esm5/services/current-collaborator/models/collaborator-dto.js +1 -1
  103. package/esm5/services/current-collaborator/models/collaborator.js +1 -1
  104. package/esm5/services/current-collaborator/models/e-070-fil-crmx-dto.js +1 -1
  105. package/esm5/services/current-collaborator/models/e-070-fil-crmx.js +1 -1
  106. package/esm5/services/index.js +7 -0
  107. package/esm5/services/schedule-form-rules/enums/index.js +6 -0
  108. package/esm5/services/schedule-form-rules/enums/month-enum.js +16 -0
  109. package/esm5/services/schedule-form-rules/enums/ordinal-week-day-enum.js +9 -0
  110. package/esm5/services/schedule-form-rules/enums/recurrence-enum.js +8 -0
  111. package/esm5/services/schedule-form-rules/enums/repeat-when-enum.js +6 -0
  112. package/esm5/services/schedule-form-rules/enums/week-day-enum.js +11 -0
  113. package/esm5/services/schedule-form-rules/index.js +4 -0
  114. package/esm5/services/schedule-form-rules/schedule-form-rules.module.js +18 -0
  115. package/esm5/services/schedule-form-rules/schedule-form-rules.service.js +109 -0
  116. package/esm5/services/standard-filters/index.js +3 -3
  117. package/esm5/services/standard-filters/{standard filters.module.js → standard-filters.module.js} +2 -2
  118. package/esm5/services/standard-filters/{standard filters.service.js → standard-filters.service.js} +1 -1
  119. package/esm5/services/storage/storage.module.js +20 -0
  120. package/esm5/services/storage/storage.service.js +35 -26
  121. package/esm5/services/websocket/index.js +3 -1
  122. package/esm5/services/websocket/models/event-dto.js +1 -0
  123. package/esm5/services/websocket/models/event.js +20 -0
  124. package/esm5/services/websocket/models/index.js +3 -0
  125. package/esm5/services/websocket/models/topic-dto.js +1 -0
  126. package/esm5/services/websocket/models/topic.js +29 -0
  127. package/esm5/services/websocket/websocket.module.js +21 -0
  128. package/esm5/services/websocket/websocket.service.js +107 -51
  129. package/esm5/utils/index.js +3 -0
  130. package/esm5/utils/string-converter.service.js +11 -0
  131. package/esm5/utils/value-changes.service.js +11 -0
  132. package/fesm2015/senior-gestao-relacionamento-angular-components.js +848 -148
  133. package/fesm2015/senior-gestao-relacionamento-angular-components.js.map +1 -1
  134. package/fesm5/senior-gestao-relacionamento-angular-components.js +902 -159
  135. package/fesm5/senior-gestao-relacionamento-angular-components.js.map +1 -1
  136. package/locale/fallback.d.ts +1 -0
  137. package/package.json +45 -43
  138. package/public-api.d.ts +4 -6
  139. package/senior-gestao-relacionamento-angular-components.d.ts +2 -1
  140. package/senior-gestao-relacionamento-angular-components.metadata.json +1 -1
  141. package/services/current-collaborator/current-collaborator.service.d.ts +5 -2
  142. package/services/current-collaborator/models/collaborator-dto.d.ts +1 -0
  143. package/services/current-collaborator/models/collaborator.d.ts +1 -0
  144. package/services/current-collaborator/models/e-070-fil-crmx-dto.d.ts +1 -0
  145. package/services/current-collaborator/models/e-070-fil-crmx.d.ts +1 -0
  146. package/services/index.d.ts +6 -0
  147. package/services/schedule-form-rules/enums/index.d.ts +5 -0
  148. package/services/schedule-form-rules/enums/month-enum.d.ts +14 -0
  149. package/services/schedule-form-rules/enums/ordinal-week-day-enum.d.ts +7 -0
  150. package/services/schedule-form-rules/enums/recurrence-enum.d.ts +6 -0
  151. package/services/schedule-form-rules/enums/repeat-when-enum.d.ts +4 -0
  152. package/services/schedule-form-rules/enums/week-day-enum.d.ts +9 -0
  153. package/services/schedule-form-rules/index.d.ts +3 -0
  154. package/services/schedule-form-rules/schedule-form-rules.module.d.ts +2 -0
  155. package/services/schedule-form-rules/schedule-form-rules.service.d.ts +12 -0
  156. package/services/standard-filters/index.d.ts +2 -2
  157. package/services/storage/storage.module.d.ts +2 -0
  158. package/services/storage/storage.service.d.ts +15 -12
  159. package/services/websocket/index.d.ts +2 -0
  160. package/services/websocket/models/event-dto.d.ts +5 -0
  161. package/services/websocket/models/event.d.ts +8 -0
  162. package/services/websocket/models/index.d.ts +4 -0
  163. package/services/websocket/{primitive-event-dto.d.ts → models/topic-dto.d.ts} +1 -1
  164. package/services/websocket/models/topic.d.ts +10 -0
  165. package/services/websocket/websocket.module.d.ts +2 -0
  166. package/services/websocket/websocket.service.d.ts +20 -12
  167. package/{services/utils → utils}/index.d.ts +1 -0
  168. package/utils/value-changes.service.d.ts +4 -0
  169. package/esm2015/services/utils/index.js +0 -2
  170. package/esm2015/services/utils/string-converter.service.js +0 -7
  171. package/esm2015/services/websocket/primitive-event-dto.js +0 -1
  172. package/esm2015/services/websocket/send-event-dto.js +0 -1
  173. package/esm5/services/utils/index.js +0 -2
  174. package/esm5/services/utils/string-converter.service.js +0 -11
  175. package/esm5/services/websocket/primitive-event-dto.js +0 -1
  176. package/esm5/services/websocket/send-event-dto.js +0 -1
  177. package/services/websocket/send-event-dto.d.ts +0 -5
  178. /package/services/standard-filters/{standard filters.module.d.ts → standard-filters.module.d.ts} +0 -0
  179. /package/services/standard-filters/{standard filters.service.d.ts → standard-filters.service.d.ts} +0 -0
  180. /package/{services/utils → utils}/string-converter.service.d.ts +0 -0
@@ -1,172 +1,411 @@
1
- import { get } from 'js-cookie';
2
1
  import { __decorate } from 'tslib';
3
- import { ɵɵdefineInjectable, Injectable, NgModule } from '@angular/core';
4
- import { Subject, Observable } from 'rxjs';
2
+ import { Injectable, EventEmitter, Input, Output, Component, NgModule, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
3
+ import { FormControl, FormGroup, Validators, FormBuilder, FormsModule } from '@angular/forms';
4
+ import { FormField, FieldType, LocaleModule, ButtonModule, DynamicFormModule, SidebarModule, LoadingStateModule } from '@seniorsistemas/angular-components';
5
+ import { TranslateService, TranslateModule } from '@ngx-translate/core';
6
+ import { throwError, BehaviorSubject, Observable, Subject } from 'rxjs';
7
+ import { HttpParams, HttpClient, HttpClientModule } from '@angular/common/http';
8
+ import { map, catchError, takeUntil, concatMap, distinctUntilChanged } from 'rxjs/operators';
9
+ import { MessageService } from 'primeng/api';
10
+ import { RouterModule, Router } from '@angular/router';
11
+ import { CommonModule } from '@angular/common';
12
+ import { SelectButtonModule } from 'primeng/selectbutton';
13
+ import { DialogModule } from 'primeng/dialog';
14
+ import { PanelModule } from 'primeng/panel';
15
+ import { ToastModule } from 'primeng/toast';
16
+ import { CookieService } from 'ngx-cookie-service';
5
17
  import { Stomp } from '@stomp/stompjs';
6
18
  import * as SockJS from 'sockjs-client';
7
- import { HttpClient, HttpClientModule } from '@angular/common/http';
8
- import { takeUntil, catchError } from 'rxjs/operators';
9
19
 
10
- class StorageService {
11
- static getUser() {
12
- return JSON.parse(localStorage.getItem('SENIOR_USER_INFO')).data;
13
- }
14
- static getUserId() {
15
- return StorageService.getUser().id;
20
+ var FormatEnum;
21
+ (function (FormatEnum) {
22
+ FormatEnum["PDF"] = "Pdf";
23
+ FormatEnum["CSV"] = "Csv";
24
+ FormatEnum["HTML"] = "Html";
25
+ FormatEnum["XLSX"] = "Xlsx";
26
+ FormatEnum["XML"] = "Xml";
27
+ FormatEnum["ODT"] = "Odt";
28
+ FormatEnum["RTF"] = "Rtf";
29
+ })(FormatEnum || (FormatEnum = {}));
30
+
31
+ var ViewModeEnum;
32
+ (function (ViewModeEnum) {
33
+ ViewModeEnum["SIDEBAR"] = "sidebar";
34
+ ViewModeEnum["DIALOG"] = "dialog";
35
+ })(ViewModeEnum || (ViewModeEnum = {}));
36
+
37
+ let ReportsService = class ReportsService {
38
+ constructor(_httpClient, _translate, _messageService) {
39
+ this._httpClient = _httpClient;
40
+ this._translate = _translate;
41
+ this._messageService = _messageService;
42
+ this.queriesPlatformReportUrl = `platform/report/queries`;
43
+ this.actionsCrmxReportUrl = `crmx/report/actions`;
16
44
  }
17
- static store(key, value) {
18
- const userId = StorageService.getUserId();
19
- localStorage.setItem(`${userId}_${key}`, JSON.stringify(value));
45
+ listReports(tag, ids) {
46
+ let params = new HttpParams();
47
+ params = params.append('searchValue', tag);
48
+ return this._httpClient.get(`${this.queriesPlatformReportUrl}/listReports`, { params }).pipe(map((response) => response.reports.filter((report) => ids ? ids.includes(report.id) : true)), this.defaultCatch());
20
49
  }
21
- static get(key) {
22
- const userId = StorageService.getUserId();
23
- const value = localStorage.getItem(`${userId}_${key}`);
24
- if (value) {
25
- return JSON.parse(value);
26
- }
27
- return null;
50
+ getSharedReport(tag) {
51
+ let params = new HttpParams();
52
+ params = params.append('searchValue', tag);
53
+ return this._httpClient.get(`${this.queriesPlatformReportUrl}/listSharedReports`, { params }).pipe(map((response) => {
54
+ return response.reports.filter((report) => report.enabled);
55
+ }), this.defaultCatch());
28
56
  }
29
- static getComSeniorToken() {
30
- return JSON.parse(get('com.senior.token'));
57
+ generateReport(inputDto) {
58
+ return this._httpClient.post(`${this.actionsCrmxReportUrl}/generateReport`, inputDto).pipe(this.defaultCatch());
31
59
  }
32
- static getBaseUrl() {
33
- return get('com.senior.base.url');
60
+ defaultCatch() {
61
+ return catchError((err) => {
62
+ if (err) {
63
+ let summary = err.status ? String(err.status) : 'Error';
64
+ let detail;
65
+ if (err.error && err.error.message) {
66
+ detail = err.error.message;
67
+ }
68
+ else if (err.statusText) {
69
+ detail = err.statusText;
70
+ }
71
+ else if (err.message) {
72
+ detail = err.message;
73
+ }
74
+ else {
75
+ detail = 'Error';
76
+ }
77
+ const errorUnauthorized = 401;
78
+ if (err.status === errorUnauthorized) {
79
+ summary = this._translate.instant('crmx.angular_components.error_unauthorized_title');
80
+ detail = this._translate.instant('crmx.angular_components.error_unauthorized_description');
81
+ }
82
+ this._messageService.add({
83
+ severity: 'error',
84
+ summary,
85
+ detail,
86
+ sticky: true,
87
+ });
88
+ }
89
+ return throwError(err);
90
+ });
34
91
  }
35
- static getTenantDomain() {
36
- return StorageService.getComSeniorToken().username.split('@')[1];
92
+ };
93
+ ReportsService.ctorParameters = () => [
94
+ { type: HttpClient },
95
+ { type: TranslateService },
96
+ { type: MessageService }
97
+ ];
98
+ ReportsService = __decorate([
99
+ Injectable()
100
+ ], ReportsService);
101
+
102
+ let ReportsComponent = class ReportsComponent {
103
+ constructor(_translate, _formBuilder, _reportsService) {
104
+ this._translate = _translate;
105
+ this._formBuilder = _formBuilder;
106
+ this._reportsService = _reportsService;
107
+ this.formGroups = [];
108
+ this.visibleChange = new EventEmitter();
109
+ this.reportGenerated = new EventEmitter();
110
+ this.reportsObservable = new BehaviorSubject([]);
111
+ this.viewModeEnum = ViewModeEnum;
112
+ this.loading = false;
113
+ this._reports = [];
114
+ this._formatEnum = [];
37
115
  }
38
- static getTenantName() {
39
- return StorageService.getComSeniorToken().tenantName;
116
+ ngOnChanges(changes) {
117
+ if (this.options) {
118
+ this.options.header = this.options.header || this._translate.instant('crmx.angular_components.reports_title');
119
+ this.options.labelConfirmButton = this.options.labelConfirmButton || this._translate.instant('crmx.angular_components.confirm');
120
+ this._formatEnum = Object.keys(FormatEnum)
121
+ .filter(key => !this.options.formats || this.options.formats.includes(FormatEnum[key]))
122
+ .map(key => ({ label: key.toUpperCase(), value: FormatEnum[key] }));
123
+ if (this.visible) {
124
+ this.loading = true;
125
+ this._executeObservable(this._reportsService.listReports(this.options.tenantReport || this.options.sharedReport))
126
+ .subscribe((nextAction) => {
127
+ if (nextAction) {
128
+ this._executeObservable(this._reportsService.getSharedReport(this.options.sharedReport))
129
+ .subscribe((nextAction) => {
130
+ this.loading = false;
131
+ });
132
+ }
133
+ });
134
+ }
135
+ }
40
136
  }
41
- static getUsername() {
42
- return StorageService.getComSeniorToken().username.split('@')[0];
137
+ ngOnInit() {
138
+ this.formGroup = this._getFormGroup();
139
+ this.formFields = this._getFormFields();
43
140
  }
44
- static getLogin() {
45
- return StorageService.getComSeniorToken().username;
141
+ onCancel() {
142
+ this.formGroup.reset();
143
+ this.visible = false;
144
+ this.visibleChange.emit(this.visible);
46
145
  }
47
- static getToken() {
48
- return StorageService.getComSeniorToken().access_token;
146
+ onConfirm() {
147
+ this.loading = true;
148
+ const data = this.formGroup.getRawValue();
149
+ let isValid = true;
150
+ this.formGroups.forEach((formGroup) => isValid = isValid && formGroup.valid);
151
+ if (!this.formGroup.valid || !isValid) {
152
+ this.loading = false;
153
+ this._validateAllFormFields(this.formGroup);
154
+ this.formGroups.forEach(this._validateAllFormFields);
155
+ }
156
+ else {
157
+ const input = {
158
+ report: {
159
+ id: data.reports.id,
160
+ parameters: this.options.parametersReport,
161
+ format: data.format,
162
+ timeToLive: 1000,
163
+ },
164
+ callbackEvent: this.options.callbackEvent,
165
+ };
166
+ this._reportsService.generateReport(input).subscribe((outputDto) => {
167
+ this.reportGenerated.emit(outputDto);
168
+ this.onCancel();
169
+ }, () => {
170
+ this.loading = false;
171
+ });
172
+ }
49
173
  }
50
- static isUserAdmin() {
51
- return StorageService.getUsername() === 'admin';
174
+ getErrorMessages() {
175
+ return {
176
+ required: this._translate.instant('crmx.angular_components.error_required'),
177
+ };
52
178
  }
53
- }
54
-
55
- class StringConverterService {
56
- static toUnderscore(camelCase) {
57
- const regex = /([a-z])([A-Z])/g;
58
- return camelCase.replace(regex, '$1_$2').toLowerCase();
179
+ onVisibleChange(visible) {
180
+ if (!visible) {
181
+ this.onCancel();
182
+ }
59
183
  }
60
- }
61
-
62
- class FormGroupValidatorsService {
63
- static startDataGreaterThanEndDataValidator(endDateField, errorMessage) {
64
- const fn = function (control) {
65
- var _a;
66
- if (control.parent) {
67
- const startDate = new Date(control.value);
68
- const endDate = new Date((_a = control.parent.controls[endDateField]) === null || _a === void 0 ? void 0 : _a.value);
69
- if (startDate > endDate) {
70
- const rtn = {};
71
- rtn[errorMessage] = true;
72
- return rtn;
184
+ _executeObservable(observable) {
185
+ return new Observable((observer) => {
186
+ observable
187
+ .pipe(catchError((err) => {
188
+ this.loading = false;
189
+ return throwError(err);
190
+ }))
191
+ .subscribe((reports) => {
192
+ this._reports = reports;
193
+ if (reports.length > 0) {
194
+ this.loading = false;
195
+ this._setValuesDefault();
196
+ observer.next(false);
197
+ }
198
+ else {
199
+ observer.next(true);
73
200
  }
201
+ }, () => {
202
+ this.loading = false;
203
+ });
204
+ });
205
+ }
206
+ _setValuesDefault() {
207
+ var _a;
208
+ this.formGroup.controls.reports.setValue(this._reports[0]);
209
+ this.formGroup.controls.format.setValue((_a = this._formatEnum[0]) === null || _a === void 0 ? void 0 : _a.value);
210
+ }
211
+ _hasEmpty(target) {
212
+ return (Object.keys(target).filter((key) => target[key] === '' || target[key] === undefined).length > 0);
213
+ }
214
+ _validateAllFormFields(formGroup) {
215
+ Object.keys(formGroup.controls).forEach((field) => {
216
+ const control = formGroup.get(field);
217
+ if (control instanceof FormControl) {
218
+ control.markAsDirty({ onlySelf: true });
74
219
  }
75
- return null;
76
- };
77
- return fn;
220
+ else if (control instanceof FormGroup) {
221
+ this._validateAllFormFields(control);
222
+ }
223
+ });
78
224
  }
79
- static endDateLessThanStartDateValidator(startDateField, errorMessage) {
80
- const fn = function (control) {
81
- var _a;
82
- if (control.parent) {
83
- const startDate = new Date((_a = control.parent.controls[startDateField]) === null || _a === void 0 ? void 0 : _a.value);
84
- const endDate = new Date(control.value);
85
- if (startDate > endDate) {
86
- const rtn = {};
87
- rtn[errorMessage] = true;
88
- return rtn;
225
+ _getFormGroup() {
226
+ return this._formBuilder.group({
227
+ reports: [{ value: null, disabled: false }, Validators.compose([Validators.required])],
228
+ format: [{ value: null, disabled: false }, Validators.compose([Validators.required])],
229
+ });
230
+ }
231
+ _getFormFields() {
232
+ return [
233
+ new FormField({
234
+ type: FieldType.Autocomplete,
235
+ name: "reports",
236
+ label: this._translate.instant('crmx.angular_components.report'),
237
+ size: { xl: 12, lg: 12, md: 12, sm: 12 },
238
+ multiple: false,
239
+ dataKey: "id",
240
+ appendTo: "body",
241
+ emptyMessage: "Nenhuma sugestão encontrada",
242
+ displayField: "name",
243
+ required: () => true,
244
+ suggestionsObservable: this.reportsObservable,
245
+ onSearch: (val) => this.reportsObservable.next(this._reports.filter((reportDto) => reportDto.name.match(new RegExp(val, "ig")))),
246
+ footer: {
247
+ help: {
248
+ text: this._translate.instant('crmx.angular_components.reports_help', { tag: this.options.tenantReport }),
249
+ icon: 'fa fa-info-circle'
250
+ }
89
251
  }
90
- }
91
- return null;
92
- };
93
- return fn;
252
+ }),
253
+ new FormField({
254
+ type: FieldType.Enum,
255
+ name: 'format',
256
+ label: this._translate.instant('crmx.angular_components.format'),
257
+ placeholder: this._translate.instant('crmx.angular_components.format_placeholder'),
258
+ size: { xl: 12, lg: 12, md: 12, sm: 12 },
259
+ multiple: false,
260
+ required: () => true,
261
+ options: this._formatEnum,
262
+ }),
263
+ ];
94
264
  }
95
- ;
96
- }
265
+ };
266
+ ReportsComponent.ctorParameters = () => [
267
+ { type: TranslateService },
268
+ { type: FormBuilder },
269
+ { type: ReportsService }
270
+ ];
271
+ __decorate([
272
+ Input()
273
+ ], ReportsComponent.prototype, "visible", void 0);
274
+ __decorate([
275
+ Input()
276
+ ], ReportsComponent.prototype, "options", void 0);
277
+ __decorate([
278
+ Input()
279
+ ], ReportsComponent.prototype, "formGroups", void 0);
280
+ __decorate([
281
+ Output()
282
+ ], ReportsComponent.prototype, "visibleChange", void 0);
283
+ __decorate([
284
+ Output()
285
+ ], ReportsComponent.prototype, "reportGenerated", void 0);
286
+ ReportsComponent = __decorate([
287
+ Component({
288
+ selector: 'report',
289
+ template: "<div *ngIf=\"options\">\n <ng-container *ngIf=\"options.viewMode === viewModeEnum.SIDEBAR else reportsDialog\" >\n <s-sidebar [(visible)]=\"visible\" (visibleChange)=\"onVisibleChange($event)\" [header]=\"options.header\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <s-footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </s-footer>\n </s-sidebar>\n </ng-container>\n\n <ng-template #reportsDialog>\n <p-dialog\n [(visible)]=\"visible\" (visibleChange)=\"visible = $event\"\n [resizable]=\"false\" [draggable]=\"false\" [modal]=\"true\" [closable]=\"false\"\n >\n <p-header [textContent]=\"options.header\"></p-header>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <p-footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </p-footer>\n </p-dialog>\n </ng-template>\n\n <ng-template #content>\n <div class=\"ui-g\" *sLoadingState=\"loading\">\n <div class=\"ui-g-12\">\n <s-dynamic-form\n [fields]=\"formFields\"\n [form]=\"formGroup\"\n [errorMessages]=\"getErrorMessages()\"\n ></s-dynamic-form>\n </div>\n <div class=\"ui-g-12\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n\n <ng-template #footer>\n <s-button\n tooltip=\"{{'crmx.angular_components.generate' | translate}}\"\n tooltipPosition=\"left\" type=\"submit\" class=\"sds-float-right\"\n priority=\"primary\" [label]=\"options.labelConfirmButton\"\n (onClick)=\"onConfirm()\"\n [disabled]=\"loading\"\n ></s-button>\n <s-button\n tooltip=\"{{'crmx.angular_components.cancel' | translate}}\"\n type=\"button\" class=\"sds-float-left\" priority=\"link\"\n [label]=\"'crmx.angular_components.cancel' | translate\"\n (onClick)=\"onCancel()\"\n [disabled]=\"loading\"\n ></s-button>\n </ng-template>\n</div>\n"
290
+ })
291
+ ], ReportsComponent);
97
292
 
98
- class DateValidatorsService {
99
- static isLastWeekdayOfMonth(date) {
100
- const newDate = new Date(date);
101
- const day = 7;
102
- newDate.setDate(date.getDate() + day);
103
- return newDate.getMonth() > date.getMonth() || newDate.getFullYear() > date.getFullYear();
104
- }
105
- }
293
+ let ReportsModule = class ReportsModule {
294
+ };
295
+ ReportsModule = __decorate([
296
+ NgModule({
297
+ imports: [
298
+ LocaleModule.forChild(),
299
+ FormsModule,
300
+ RouterModule,
301
+ CommonModule,
302
+ TranslateModule,
303
+ SelectButtonModule,
304
+ DialogModule,
305
+ ButtonModule,
306
+ DynamicFormModule,
307
+ SidebarModule,
308
+ PanelModule,
309
+ LoadingStateModule,
310
+ ],
311
+ declarations: [
312
+ ReportsComponent,
313
+ ],
314
+ exports: [
315
+ ReportsComponent,
316
+ ],
317
+ providers: [
318
+ ReportsService,
319
+ ]
320
+ })
321
+ ], ReportsModule);
106
322
 
107
- let WebsocketService = class WebsocketService {
108
- constructor() {
109
- this.primitiveEventObservables = [];
110
- const url = StorageService.getBaseUrl().concat('/websocket/subscription');
111
- const socket = new SockJS(url);
112
- this.client = Stomp.over(socket);
113
- }
114
- startConnect() {
115
- this.client.connect({}, () => this.onConnected(), () => this.onConnectError());
116
- }
117
- onEvent(primitiveEvent) {
118
- const { domain, service, primitive, allUsers } = primitiveEvent;
119
- const observable = new Subject();
120
- const primitiveEventWithObservable = {
121
- domain,
122
- service,
123
- primitive,
124
- allUsers,
125
- observable,
126
- };
127
- this.primitiveEventObservables.push(primitiveEventWithObservable);
128
- return observable;
129
- }
130
- sendEvent(params) {
131
- const topic = this.getTopicEvent(params);
132
- this.client.send(topic, params.headers, JSON.stringify({
133
- data: params.message
134
- }));
323
+ let RefreshWebsocketAlertComponent = class RefreshWebsocketAlertComponent {
324
+ constructor(_messageService, _translateService) {
325
+ this._messageService = _messageService;
326
+ this._translateService = _translateService;
327
+ this.open = false;
328
+ this.closeRefreshSocket = new EventEmitter();
329
+ this.refresh = new EventEmitter();
135
330
  }
136
- onConnected() {
137
- this.primitiveEventObservables.forEach(event => {
138
- this.client.subscribe(this.getTopicEvent(event), ((message) => {
139
- const body = JSON.parse(message.body);
140
- event.observable.next(body.data);
141
- }));
331
+ ngOnInit() {
332
+ this.closeRefreshSocket.subscribe(() => {
333
+ this.open = false;
334
+ });
335
+ this.refresh.subscribe(() => {
336
+ this._messageService.clear(this.key);
337
+ this.closeRefreshSocket.emit();
142
338
  });
143
339
  }
144
- onConnectError() {
145
- console.log('Error in connect!');
146
- }
147
- getTopicEvent(primitiveEvent) {
148
- let topic = '/topic/'.concat(StorageService.getTenantDomain());
149
- if (primitiveEvent.allUsers === false) {
150
- topic = topic
151
- .concat('/')
152
- .concat(StorageService.getToken());
340
+ show(message) {
341
+ if (!this.open) {
342
+ this.open = true;
343
+ const thisMessage = {
344
+ key: this.key,
345
+ summary: (message === null || message === void 0 ? void 0 : message.summary) || this._translateService.instant('crmx.angular_components.refresh_websocket_alert_summary_default'),
346
+ detail: (message === null || message === void 0 ? void 0 : message.detail) || this._translateService.instant('crmx.angular_components.refresh_websocket_alert_detail_default'),
347
+ severity: (message === null || message === void 0 ? void 0 : message.severity) || 'info',
348
+ life: 10000,
349
+ };
350
+ this._messageService.add(thisMessage);
153
351
  }
154
- topic = topic
155
- .concat('/')
156
- .concat(primitiveEvent.domain)
157
- .concat('/')
158
- .concat(primitiveEvent.service)
159
- .concat('/')
160
- .concat(primitiveEvent.primitive);
161
- return topic;
162
352
  }
163
353
  };
164
- WebsocketService.ɵprov = ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(); }, token: WebsocketService, providedIn: "root" });
165
- WebsocketService = __decorate([
166
- Injectable({
167
- providedIn: 'root',
354
+ RefreshWebsocketAlertComponent.ctorParameters = () => [
355
+ { type: MessageService },
356
+ { type: TranslateService }
357
+ ];
358
+ __decorate([
359
+ Input()
360
+ ], RefreshWebsocketAlertComponent.prototype, "key", void 0);
361
+ __decorate([
362
+ Output()
363
+ ], RefreshWebsocketAlertComponent.prototype, "closeRefreshSocket", void 0);
364
+ __decorate([
365
+ Output()
366
+ ], RefreshWebsocketAlertComponent.prototype, "refresh", void 0);
367
+ RefreshWebsocketAlertComponent = __decorate([
368
+ Component({
369
+ selector: 'refresh-websocket-alert',
370
+ template: "<p-toast [key]=\"key\" (onClose)=\"closeRefreshSocket.emit($event)\">\n <ng-template let-message pTemplate=\"message\">\n <span class=\"ui-toast-icon pi\"></span>\n <div class=\"ui-toast-message-text-content\">\n <div class=\"ui-toast-summary\">{{ message.summary }}</div>\n <div class=\"ui-toast-detail\">\n <span>{{ message.detail }}</span>\n <s-button\n [label]=\"'crmx.angular_components.refresh_websocket_alert_click_here' | translate\"\n priority=\"link\"\n (onClick)=\"refresh.emit()\"\n styleClass=\"refresh-websocket\"\n ></s-button>\n </div>\n </div>\n </ng-template>\n</p-toast>\n",
371
+ styles: [".refresh-websocket{height:20px!important}"]
168
372
  })
169
- ], WebsocketService);
373
+ ], RefreshWebsocketAlertComponent);
374
+
375
+ let RefreshWebsocketAlertModule = class RefreshWebsocketAlertModule {
376
+ };
377
+ RefreshWebsocketAlertModule = __decorate([
378
+ NgModule({
379
+ imports: [
380
+ LocaleModule.forChild(),
381
+ ButtonModule,
382
+ TranslateModule,
383
+ ToastModule,
384
+ ],
385
+ declarations: [
386
+ RefreshWebsocketAlertComponent,
387
+ ],
388
+ exports: [
389
+ RefreshWebsocketAlertComponent,
390
+ ]
391
+ })
392
+ ], RefreshWebsocketAlertModule);
393
+
394
+ const fallback = {
395
+ "crmx.angular_components.cancel": "Cancelar",
396
+ "crmx.angular_components.confirm": "Gerar",
397
+ "crmx.angular_components.error_required": "Campo obrigatório",
398
+ "crmx.angular_components.error_unauthorized_title": "Acesso não autorizado",
399
+ "crmx.angular_components.error_unauthorized_description": "Você não tem permissão para utilizar o recurso desejado",
400
+ "crmx.angular_components.format": "Formato",
401
+ "crmx.angular_components.format_placeholder": "Selecione uma Opção",
402
+ "crmx.angular_components.report": "Relatório",
403
+ "crmx.angular_components.reports_help": "Listando todos relatórios com a tag '{{tag}}'",
404
+ "crmx.angular_components.reports_title": "Gerar Relatório",
405
+ "crmx.angular_components.refresh_websocket_alert_click_here": "Clique aqui",
406
+ "crmx.angular_components.refresh_websocket_alert_detail_default": "Para atualizar a tela",
407
+ "crmx.angular_components.refresh_websocket_alert_summary_default": "Atualização de dados"
408
+ };
170
409
 
171
410
  class User {
172
411
  constructor() {
@@ -365,15 +604,70 @@ class Collaborator {
365
604
  }
366
605
  }
367
606
 
607
+ let StorageService = class StorageService {
608
+ constructor(cookieService) {
609
+ this.cookieService = cookieService;
610
+ }
611
+ getUser() {
612
+ return JSON.parse(localStorage.getItem('SENIOR_USER_INFO')).data;
613
+ }
614
+ getUserId() {
615
+ return this.getUser().id;
616
+ }
617
+ store(key, value) {
618
+ const userId = this.getUserId();
619
+ localStorage.setItem(`${userId}_${key}`, JSON.stringify(value));
620
+ }
621
+ get(key) {
622
+ const userId = this.getUserId();
623
+ const value = localStorage.getItem(`${userId}_${key}`);
624
+ if (value) {
625
+ return JSON.parse(value);
626
+ }
627
+ return null;
628
+ }
629
+ getComSeniorToken() {
630
+ return JSON.parse(this.cookieService.get('com.senior.token'));
631
+ }
632
+ getBaseUrl() {
633
+ return this.cookieService.get('com.senior.base.url');
634
+ }
635
+ getTenantDomain() {
636
+ return this.getComSeniorToken().username.split('@')[1];
637
+ }
638
+ getTenantName() {
639
+ return this.getComSeniorToken().tenantName;
640
+ }
641
+ getUsername() {
642
+ return this.getComSeniorToken().username.split('@')[0];
643
+ }
644
+ getLogin() {
645
+ return this.getComSeniorToken().username;
646
+ }
647
+ getToken() {
648
+ return this.getComSeniorToken().access_token;
649
+ }
650
+ isUserAdmin() {
651
+ return this.getUsername() === 'admin';
652
+ }
653
+ };
654
+ StorageService.ctorParameters = () => [
655
+ { type: CookieService }
656
+ ];
657
+ StorageService = __decorate([
658
+ Injectable()
659
+ ], StorageService);
660
+
368
661
  let CurrentCollaboratorService = class CurrentCollaboratorService {
369
- constructor(http) {
662
+ constructor(http, storageService) {
370
663
  this.http = http;
664
+ this.storageService = storageService;
371
665
  this.ngUnsubscribe = new Subject();
372
666
  this.COLLABORATOR_KEY = 'CRMX_COLLABORATOR';
373
667
  }
374
668
  validate() {
375
669
  this.call(false).subscribe((collaborator) => {
376
- if (collaborator.active === false && !StorageService.isUserAdmin()) {
670
+ if (collaborator.active === false) {
377
671
  this.redirect('collaborator-inactive');
378
672
  }
379
673
  });
@@ -381,9 +675,21 @@ let CurrentCollaboratorService = class CurrentCollaboratorService {
381
675
  get() {
382
676
  return this.call(true);
383
677
  }
678
+ getE070FilCrmxMaster() {
679
+ return new Observable(observer => {
680
+ this.call(true).subscribe((collaborator) => {
681
+ const e070FilCrmxMaster = Object.assign({}, collaborator.branches.find((branch) => branch.master));
682
+ if (e070FilCrmxMaster) {
683
+ e070FilCrmxMaster.collaborator = collaborator;
684
+ observer.next(e070FilCrmxMaster);
685
+ }
686
+ observer.complete();
687
+ });
688
+ });
689
+ }
384
690
  call(useCache) {
385
691
  return new Observable(observer => {
386
- const collaboratorDto = StorageService.get(this.COLLABORATOR_KEY);
692
+ const collaboratorDto = this.storageService.get(this.COLLABORATOR_KEY);
387
693
  if (collaboratorDto !== null && useCache) {
388
694
  observer.next(Collaborator.fromDto(collaboratorDto));
389
695
  }
@@ -391,21 +697,23 @@ let CurrentCollaboratorService = class CurrentCollaboratorService {
391
697
  this.http.get('crmx_collaborator/foundation/queries/getCurrentCollaborator')
392
698
  .pipe(takeUntil(this.ngUnsubscribe), catchError((err) => {
393
699
  const statusCode = 404;
394
- if (err.status === statusCode && !StorageService.isUserAdmin()) {
700
+ if (err.status === statusCode) {
395
701
  this.redirect('collaborator-not-found');
396
702
  }
397
703
  ;
398
704
  throw err;
399
705
  }))
400
706
  .subscribe(collaboratorDto => {
401
- StorageService.store(this.COLLABORATOR_KEY, this.removeCircularReferences(collaboratorDto));
707
+ collaboratorDto = this.removeCircularReferences(collaboratorDto);
708
+ this.storageService.store(this.COLLABORATOR_KEY, collaboratorDto);
402
709
  observer.next(Collaborator.fromDto(collaboratorDto));
403
710
  });
404
711
  }
712
+ observer.complete();
405
713
  });
406
714
  }
407
715
  redirect(page) {
408
- location.href = StorageService.getBaseUrl() + '/gestao-relacionamento/crmx_collaborator/foundation/#/' + page;
716
+ location.href = `${this.storageService.getBaseUrl()}/gestao-relacionamento/crmx_collaborator/foundation/#/${page}`;
409
717
  }
410
718
  removeCircularReferences(obj) {
411
719
  const seen = new WeakSet();
@@ -421,18 +729,32 @@ let CurrentCollaboratorService = class CurrentCollaboratorService {
421
729
  }
422
730
  };
423
731
  CurrentCollaboratorService.ctorParameters = () => [
424
- { type: HttpClient }
732
+ { type: HttpClient },
733
+ { type: StorageService }
425
734
  ];
426
735
  CurrentCollaboratorService = __decorate([
427
736
  Injectable()
428
737
  ], CurrentCollaboratorService);
429
738
 
739
+ let StorageModule = class StorageModule {
740
+ };
741
+ StorageModule = __decorate([
742
+ NgModule({
743
+ imports: [],
744
+ providers: [
745
+ StorageService,
746
+ CookieService
747
+ ],
748
+ })
749
+ ], StorageModule);
750
+
430
751
  let CurrentCollaboratorModule = class CurrentCollaboratorModule {
431
752
  };
432
753
  CurrentCollaboratorModule = __decorate([
433
754
  NgModule({
434
755
  imports: [
435
- HttpClientModule
756
+ HttpClientModule,
757
+ StorageModule,
436
758
  ],
437
759
  providers: [
438
760
  CurrentCollaboratorService
@@ -440,6 +762,165 @@ CurrentCollaboratorModule = __decorate([
440
762
  })
441
763
  ], CurrentCollaboratorModule);
442
764
 
765
+ var MonthEnum;
766
+ (function (MonthEnum) {
767
+ MonthEnum["JANUARY"] = "JANUARY";
768
+ MonthEnum["FEBRUARY"] = "FEBRUARY";
769
+ MonthEnum["MARCH"] = "MARCH";
770
+ MonthEnum["APRIL"] = "APRIL";
771
+ MonthEnum["MAY"] = "MAY";
772
+ MonthEnum["JUNE"] = "JUNE";
773
+ MonthEnum["JULY"] = "JULY";
774
+ MonthEnum["AUGUST"] = "AUGUST";
775
+ MonthEnum["SEPTEMBER"] = "SEPTEMBER";
776
+ MonthEnum["OCTOBER"] = "OCTOBER";
777
+ MonthEnum["NOVEMBER"] = "NOVEMBER";
778
+ MonthEnum["DECEMBER"] = "DECEMBER";
779
+ })(MonthEnum || (MonthEnum = {}));
780
+
781
+ var OrdinalWeekDayEnum;
782
+ (function (OrdinalWeekDayEnum) {
783
+ OrdinalWeekDayEnum["FIRST"] = "FIRST";
784
+ OrdinalWeekDayEnum["SECOND"] = "SECOND";
785
+ OrdinalWeekDayEnum["THIRD"] = "THIRD";
786
+ OrdinalWeekDayEnum["FOURTH"] = "FOURTH";
787
+ OrdinalWeekDayEnum["LAST"] = "LAST";
788
+ })(OrdinalWeekDayEnum || (OrdinalWeekDayEnum = {}));
789
+
790
+ var RecurrenceEnum;
791
+ (function (RecurrenceEnum) {
792
+ RecurrenceEnum["DAILY"] = "DAILY";
793
+ RecurrenceEnum["WEEKLY"] = "WEEKLY";
794
+ RecurrenceEnum["MONTHLY"] = "MONTHLY";
795
+ RecurrenceEnum["YEARLY"] = "YEARLY";
796
+ })(RecurrenceEnum || (RecurrenceEnum = {}));
797
+
798
+ var RepeatWhenEnum;
799
+ (function (RepeatWhenEnum) {
800
+ RepeatWhenEnum["IN_DAY"] = "IN_DAY";
801
+ RepeatWhenEnum["IN_ORDINAL_WEEK_DAY"] = "IN_ORDINAL_WEEK_DAY";
802
+ })(RepeatWhenEnum || (RepeatWhenEnum = {}));
803
+
804
+ var WeekDayEnum;
805
+ (function (WeekDayEnum) {
806
+ WeekDayEnum["SUNDAY"] = "SUNDAY";
807
+ WeekDayEnum["MONDAY"] = "MONDAY";
808
+ WeekDayEnum["TUESDAY"] = "TUESDAY";
809
+ WeekDayEnum["WEDNESDAY"] = "WEDNESDAY";
810
+ WeekDayEnum["THURSDAY"] = "THURSDAY";
811
+ WeekDayEnum["FRIDAY"] = "FRIDAY";
812
+ WeekDayEnum["SATURDAY"] = "SATURDAY";
813
+ })(WeekDayEnum || (WeekDayEnum = {}));
814
+
815
+ let ScheduleFormRulesService = class ScheduleFormRulesService {
816
+ constructor() {
817
+ this.ngUnsubscribe = new Subject();
818
+ }
819
+ recurrencesValueChangeSubscribe(formGroup, formFields) {
820
+ this.recurrenceValueChangeSubscribe(formGroup, formFields);
821
+ this.repeatWhenValueChangeSubscribe(formGroup, formFields);
822
+ }
823
+ valueChangeSubscribe(formGroup, formFields) {
824
+ this.allDayValueChangeSubscribe(formGroup, formFields);
825
+ }
826
+ allDayValueChangeSubscribe(formGroup, formFields) {
827
+ formGroup.controls.allDay.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((value) => {
828
+ const fields = ['startTime', 'endTime'];
829
+ if (value) {
830
+ this.disableFields(formGroup, formFields, fields);
831
+ }
832
+ else {
833
+ this.enableFields(formGroup, formFields, fields);
834
+ }
835
+ });
836
+ }
837
+ recurrenceValueChangeSubscribe(formGroup, formFields) {
838
+ formGroup.controls.recurrence.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((value) => {
839
+ const fieldsToDisable = ['weekDays', 'repeatWhen', 'repeatWhenDay', 'repeatWhenMonth', 'repeatWhenOrdinalWeekDay', 'repeatWhenWeekMonth'];
840
+ this.disableFields(formGroup, formFields, fieldsToDisable);
841
+ if (value === RecurrenceEnum.WEEKLY) {
842
+ const fieldWeekDays = formFields.find((field) => field.name === 'weekDays');
843
+ fieldWeekDays.visible = () => true;
844
+ fieldWeekDays.required = () => true;
845
+ formGroup.controls.weekDays.setValidators([Validators.required]);
846
+ }
847
+ if (value === RecurrenceEnum.MONTHLY || value === RecurrenceEnum.YEARLY) {
848
+ const fieldRepeatWhen = formFields.find((field) => field.name === 'repeatWhen');
849
+ fieldRepeatWhen.visible = () => true;
850
+ fieldRepeatWhen.required = () => true;
851
+ formGroup.controls.repeatWhen.setValidators([Validators.required]);
852
+ formGroup.controls.repeatWhen.setValue(RepeatWhenEnum.IN_DAY);
853
+ }
854
+ });
855
+ }
856
+ repeatWhenValueChangeSubscribe(formGroup, formFields) {
857
+ formGroup.controls.repeatWhen.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((value) => {
858
+ const fieldsToDisable = ['repeatWhenDay', 'repeatWhenOrdinalWeekDay', 'repeatWhenWeekMonth', 'repeatWhenMonth'];
859
+ this.disableFields(formGroup, formFields, fieldsToDisable);
860
+ if (value === RepeatWhenEnum.IN_DAY) {
861
+ const fieldRepeatWhenDay = formFields.find((field) => field.name === 'repeatWhenDay');
862
+ fieldRepeatWhenDay.visible = () => true;
863
+ fieldRepeatWhenDay.required = () => true;
864
+ formGroup.controls.repeatWhenDay.setValidators([Validators.required]);
865
+ }
866
+ if (value === RepeatWhenEnum.IN_ORDINAL_WEEK_DAY) {
867
+ const fieldsToEnable = ['repeatWhenOrdinalWeekDay', 'repeatWhenWeekMonth'];
868
+ this.enableFields(formGroup, formFields, fieldsToEnable);
869
+ }
870
+ if (value !== undefined && formGroup.controls.recurrence.value === RecurrenceEnum.YEARLY) {
871
+ const fieldRepeatWhenMonth = formFields.find((field) => field.name === 'repeatWhenMonth');
872
+ fieldRepeatWhenMonth.visible = () => true;
873
+ fieldRepeatWhenMonth.required = () => true;
874
+ formGroup.controls.repeatWhenMonth.setValidators([Validators.required]);
875
+ }
876
+ });
877
+ }
878
+ disableFields(formGroup, formFields, fields) {
879
+ formFields
880
+ .filter((field) => fields.includes(field.name))
881
+ .forEach((field) => {
882
+ field.visible = () => false;
883
+ field.required = () => false;
884
+ });
885
+ for (const controlsKey in formGroup.controls) {
886
+ if (fields.includes(controlsKey)) {
887
+ const fieldFormGroup = formGroup.controls[controlsKey];
888
+ fieldFormGroup.setValue(undefined);
889
+ fieldFormGroup.clearValidators();
890
+ fieldFormGroup.setErrors(null);
891
+ }
892
+ }
893
+ }
894
+ enableFields(formGroup, formFields, fields) {
895
+ formFields
896
+ .filter((field) => fields.includes(field.name))
897
+ .forEach((field) => {
898
+ field.visible = () => true;
899
+ field.required = () => true;
900
+ });
901
+ for (const controlsKey in formGroup.controls) {
902
+ if (fields.includes(controlsKey)) {
903
+ const fieldFormGroup = formGroup.controls[controlsKey];
904
+ fieldFormGroup.setValidators([Validators.required]);
905
+ }
906
+ }
907
+ }
908
+ };
909
+ ScheduleFormRulesService = __decorate([
910
+ Injectable()
911
+ ], ScheduleFormRulesService);
912
+
913
+ let ScheduleFormRulesModule = class ScheduleFormRulesModule {
914
+ };
915
+ ScheduleFormRulesModule = __decorate([
916
+ NgModule({
917
+ imports: [],
918
+ providers: [
919
+ ScheduleFormRulesService
920
+ ],
921
+ })
922
+ ], ScheduleFormRulesModule);
923
+
443
924
  let StandardFiltersService = class StandardFiltersService {
444
925
  constructor(currentCollaboratorService) {
445
926
  this.currentCollaboratorService = currentCollaboratorService;
@@ -495,9 +976,228 @@ StandardFiltersModule = __decorate([
495
976
  })
496
977
  ], StandardFiltersModule);
497
978
 
979
+ class FormGroupValidatorsService {
980
+ static startDataGreaterThanEndDataValidator(endDateField, errorMessage) {
981
+ const fn = function (control) {
982
+ var _a;
983
+ if (control.parent) {
984
+ const startDate = new Date(control.value);
985
+ const endDate = new Date((_a = control.parent.controls[endDateField]) === null || _a === void 0 ? void 0 : _a.value);
986
+ if (startDate > endDate) {
987
+ const rtn = {};
988
+ rtn[errorMessage] = true;
989
+ return rtn;
990
+ }
991
+ }
992
+ return null;
993
+ };
994
+ return fn;
995
+ }
996
+ static endDateLessThanStartDateValidator(startDateField, errorMessage) {
997
+ const fn = function (control) {
998
+ var _a;
999
+ if (control.parent) {
1000
+ const startDate = new Date((_a = control.parent.controls[startDateField]) === null || _a === void 0 ? void 0 : _a.value);
1001
+ const endDate = new Date(control.value);
1002
+ if (startDate > endDate) {
1003
+ const rtn = {};
1004
+ rtn[errorMessage] = true;
1005
+ return rtn;
1006
+ }
1007
+ }
1008
+ return null;
1009
+ };
1010
+ return fn;
1011
+ }
1012
+ ;
1013
+ }
1014
+
1015
+ class DateValidatorsService {
1016
+ static isLastWeekdayOfMonth(date) {
1017
+ const newDate = new Date(date);
1018
+ const day = 7;
1019
+ newDate.setDate(date.getDate() + day);
1020
+ return newDate.getMonth() > date.getMonth() || newDate.getFullYear() > date.getFullYear();
1021
+ }
1022
+ }
1023
+
1024
+ class Topic {
1025
+ static fromDto(topicDto) {
1026
+ const topic = new Topic();
1027
+ Object.assign(topic, topicDto);
1028
+ return topic;
1029
+ }
1030
+ getTopic(tenantDomain, token) {
1031
+ let topic = '/topic/'.concat(tenantDomain);
1032
+ if (this.allUsers === false) {
1033
+ topic = topic
1034
+ .concat('/')
1035
+ .concat(token);
1036
+ }
1037
+ return topic.concat(this.toString());
1038
+ }
1039
+ toString() {
1040
+ return '/'
1041
+ .concat(this.domain)
1042
+ .concat('/')
1043
+ .concat(this.service)
1044
+ .concat('/')
1045
+ .concat(this.primitive);
1046
+ }
1047
+ }
1048
+
1049
+ class Event extends Topic {
1050
+ static fromDto(eventDto) {
1051
+ const event = new Event();
1052
+ Object.assign(event, eventDto);
1053
+ return event;
1054
+ }
1055
+ match(event) {
1056
+ return this.toString() === event.toString()
1057
+ && this.originCallback === event.originCallback;
1058
+ }
1059
+ }
1060
+
1061
+ let WebsocketService = class WebsocketService {
1062
+ constructor(router, storageService) {
1063
+ this.router = router;
1064
+ this.storageService = storageService;
1065
+ this._client = Stomp.over(new SockJS(this.storageService.getBaseUrl().concat('/websocket/subscription')));
1066
+ this._bindQueue = new Subject();
1067
+ this._eventBindingList = [];
1068
+ this._messageQueue = [];
1069
+ this._bindQueue.pipe(concatMap(event => this._bindObservable(event))).subscribe();
1070
+ }
1071
+ bind(eventDto) {
1072
+ eventDto.originCallback = eventDto.originCallback || this.router.url;
1073
+ this._bindQueue.next(Event.fromDto(eventDto));
1074
+ }
1075
+ _bindObservable(event) {
1076
+ return new Observable(observer => {
1077
+ if (this._client.connected) {
1078
+ this._registerBind(event);
1079
+ this._finishBindObservable(observer);
1080
+ }
1081
+ else {
1082
+ this._connectClient(event, observer);
1083
+ }
1084
+ });
1085
+ }
1086
+ _finishBindObservable(observer) {
1087
+ observer.next();
1088
+ observer.complete();
1089
+ }
1090
+ _connectClient(event, observer) {
1091
+ this._client.connect({}, () => {
1092
+ this._registerBind(event);
1093
+ this._finishBindObservable(observer);
1094
+ }, () => observer.error(new Error('Websocket connection error!')));
1095
+ }
1096
+ _registerBind(event) {
1097
+ const eventBinding = this._findEventBinding(event);
1098
+ if (eventBinding) {
1099
+ this._remakeBind(event, eventBinding);
1100
+ }
1101
+ else {
1102
+ this._makeBind(event);
1103
+ }
1104
+ }
1105
+ _remakeBind(event, eventBinding) {
1106
+ eventBinding.callback = event.callback;
1107
+ this._messageQueue
1108
+ .filter(messageQueue => messageQueue.event.match(event))
1109
+ .forEach(messageQueue => this._executeCallback(messageQueue.message, event));
1110
+ }
1111
+ _makeBind(event) {
1112
+ this._eventBindingList.push(event);
1113
+ this._client.subscribe(event.getTopic(this.storageService.getTenantDomain(), this.storageService.getToken()), (message) => this._executeCallback(message, event));
1114
+ }
1115
+ _executeCallback(message, event) {
1116
+ const eventBinding = this._findEventBinding(event);
1117
+ if (eventBinding.originCallback === this.router.url) {
1118
+ this._findEventBinding(event).callback(this._resolveRefs(JSON.parse(message.body).data));
1119
+ }
1120
+ else {
1121
+ this._messageQueue
1122
+ .filter(messageQueue => messageQueue.event.match(event))
1123
+ .forEach((messageQueue, index) => this._messageQueue.splice(index, 1));
1124
+ this._messageQueue.push({ message, event });
1125
+ }
1126
+ }
1127
+ _findEventBinding(event) {
1128
+ return this._eventBindingList.find(eventBinding => eventBinding.match(event));
1129
+ }
1130
+ _resolveRefs(payload) {
1131
+ const resolve = (obj, rootObj) => {
1132
+ if (Array.isArray(obj)) {
1133
+ obj.forEach(item => resolve(item, rootObj));
1134
+ }
1135
+ if (obj !== null && typeof obj === 'object') {
1136
+ Object.keys(obj).forEach(key => {
1137
+ if (key === '$ref' && obj[key]) {
1138
+ const refPath = obj[key]; // Caminho da referência
1139
+ Object.assign(obj, getDataFromRef(refPath, rootObj));
1140
+ delete obj[key];
1141
+ }
1142
+ else {
1143
+ resolve(obj[key], rootObj);
1144
+ }
1145
+ });
1146
+ }
1147
+ };
1148
+ const getDataFromRef = (ref, rootObj) => {
1149
+ const regex = /\["(.*?)"\]/g;
1150
+ const result = [];
1151
+ let match;
1152
+ while ((match = regex.exec(ref)) !== null) {
1153
+ result.push(match[1]);
1154
+ }
1155
+ return result.reduce((acc, part) => acc && acc[part], rootObj);
1156
+ };
1157
+ resolve(payload, payload);
1158
+ return payload;
1159
+ }
1160
+ };
1161
+ WebsocketService.ctorParameters = () => [
1162
+ { type: Router },
1163
+ { type: StorageService }
1164
+ ];
1165
+ WebsocketService.ɵprov = ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(ɵɵinject(Router), ɵɵinject(StorageService)); }, token: WebsocketService, providedIn: "root" });
1166
+ WebsocketService = __decorate([
1167
+ Injectable({
1168
+ providedIn: 'root',
1169
+ })
1170
+ ], WebsocketService);
1171
+
1172
+ let WebsocketModule = class WebsocketModule {
1173
+ };
1174
+ WebsocketModule = __decorate([
1175
+ NgModule({
1176
+ imports: [
1177
+ RouterModule,
1178
+ ],
1179
+ providers: [
1180
+ WebsocketService,
1181
+ ]
1182
+ })
1183
+ ], WebsocketModule);
1184
+
1185
+ class StringConverterService {
1186
+ static toUnderscore(camelCase) {
1187
+ const regex = /([a-z])([A-Z])/g;
1188
+ return camelCase.replace(regex, '$1_$2').toLowerCase();
1189
+ }
1190
+ }
1191
+
1192
+ class ValueChangesService {
1193
+ static pipeDefault(control) {
1194
+ return control.valueChanges.pipe(distinctUntilChanged());
1195
+ }
1196
+ }
1197
+
498
1198
  /**
499
1199
  * Generated bundle index. Do not edit.
500
1200
  */
501
1201
 
502
- export { Collaborator, CollaboratorE070FilCrmx, CollaboratorSquad, CurrentCollaboratorModule, CurrentCollaboratorService, DateValidatorsService, E070Emp, E070Fil, E070FilCrmx, FormGroupValidatorsService, Squad, StandardFiltersModule, StandardFiltersService, StorageService, StringConverterService, User, WebsocketService, CurrentCollaboratorModule as ɵa, CurrentCollaboratorService as ɵb };
1202
+ export { Collaborator, CollaboratorE070FilCrmx, CollaboratorSquad, CurrentCollaboratorModule, CurrentCollaboratorService, DateValidatorsService, E070Emp, E070Fil, E070FilCrmx, Event, FormGroupValidatorsService, FormatEnum, MonthEnum, OrdinalWeekDayEnum, RecurrenceEnum, RefreshWebsocketAlertComponent, RefreshWebsocketAlertModule, RepeatWhenEnum, ReportsComponent, ReportsModule, ReportsService, ScheduleFormRulesModule, ScheduleFormRulesService, Squad, StandardFiltersModule, StandardFiltersService, StorageService, StringConverterService, Topic, User, ValueChangesService, ViewModeEnum, WebsocketModule, WebsocketService, WeekDayEnum, fallback, StorageModule as ɵa, CurrentCollaboratorModule as ɵb, CurrentCollaboratorService as ɵc };
503
1203
  //# sourceMappingURL=senior-gestao-relacionamento-angular-components.js.map