@acorex/connectivity 21.0.0-next.1 → 21.0.0-next.11

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 (48) hide show
  1. package/api/index.d.ts +1 -59
  2. package/fesm2022/{acorex-connectivity-api-execute.command-SGNBLcOi.mjs → acorex-connectivity-api-execute.command-gIRQPxtq.mjs} +6 -6
  3. package/fesm2022/acorex-connectivity-api-execute.command-gIRQPxtq.mjs.map +1 -0
  4. package/fesm2022/acorex-connectivity-api.mjs +101 -185
  5. package/fesm2022/acorex-connectivity-api.mjs.map +1 -1
  6. package/fesm2022/{acorex-connectivity-mock-category-with-items.query-Dsxj98tX.mjs → acorex-connectivity-mock-category-with-items.query-Cl7T-rSS.mjs} +4 -4
  7. package/fesm2022/{acorex-connectivity-mock-category-with-items.query-Dsxj98tX.mjs.map → acorex-connectivity-mock-category-with-items.query-Cl7T-rSS.mjs.map} +1 -1
  8. package/fesm2022/acorex-connectivity-mock-complete-signature-process.command-MIKenDnl.mjs +80 -0
  9. package/fesm2022/acorex-connectivity-mock-complete-signature-process.command-MIKenDnl.mjs.map +1 -0
  10. package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DRiDwlqN.mjs → acorex-connectivity-mock-distribution-record.command-D9MRsoPw.mjs} +4 -4
  11. package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DRiDwlqN.mjs.map → acorex-connectivity-mock-distribution-record.command-D9MRsoPw.mjs.map} +1 -1
  12. package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-H6rrh30t.mjs +115 -0
  13. package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-H6rrh30t.mjs.map +1 -0
  14. package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-zuGKLAbn.mjs +163 -0
  15. package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-zuGKLAbn.mjs.map +1 -0
  16. package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-CQ75e_tN.mjs +186 -0
  17. package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-CQ75e_tN.mjs.map +1 -0
  18. package/fesm2022/acorex-connectivity-mock-get-product-list.query-OM16ygmJ.mjs +246 -0
  19. package/fesm2022/acorex-connectivity-mock-get-product-list.query-OM16ygmJ.mjs.map +1 -0
  20. package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-DoR3awXg.mjs +192 -0
  21. package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-DoR3awXg.mjs.map +1 -0
  22. package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-Dq779mtQ.mjs +56 -0
  23. package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-Dq779mtQ.mjs.map +1 -0
  24. package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-gNwKFN0F.mjs +246 -0
  25. package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-gNwKFN0F.mjs.map +1 -0
  26. package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-C3OxqcSp.mjs +258 -0
  27. package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-C3OxqcSp.mjs.map +1 -0
  28. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-v8jIyUEH.mjs +56 -0
  29. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-v8jIyUEH.mjs.map +1 -0
  30. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-Da6nKdpq.mjs +294 -0
  31. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-Da6nKdpq.mjs.map +1 -0
  32. package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-T0qvGjtD.mjs +212 -0
  33. package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-T0qvGjtD.mjs.map +1 -0
  34. package/fesm2022/acorex-connectivity-mock-notify-signers.command-CmXMibLx.mjs +69 -0
  35. package/fesm2022/acorex-connectivity-mock-notify-signers.command-CmXMibLx.mjs.map +1 -0
  36. package/fesm2022/acorex-connectivity-mock-request-signature.command-B6VZ5KeW.mjs +72 -0
  37. package/fesm2022/acorex-connectivity-mock-request-signature.command-B6VZ5KeW.mjs.map +1 -0
  38. package/fesm2022/{acorex-connectivity-mock-sample.command-CkH5bmEs.mjs → acorex-connectivity-mock-sample.command-BJJ67aLM.mjs} +4 -4
  39. package/fesm2022/{acorex-connectivity-mock-sample.command-CkH5bmEs.mjs.map → acorex-connectivity-mock-sample.command-BJJ67aLM.mjs.map} +1 -1
  40. package/fesm2022/acorex-connectivity-mock-validate-all-signatures.command-CG80T32a.mjs +81 -0
  41. package/fesm2022/acorex-connectivity-mock-validate-all-signatures.command-CG80T32a.mjs.map +1 -0
  42. package/fesm2022/acorex-connectivity-mock.mjs +45895 -46303
  43. package/fesm2022/acorex-connectivity-mock.mjs.map +1 -1
  44. package/fesm2022/acorex-connectivity-utils.mjs +7 -7
  45. package/fesm2022/acorex-connectivity-utils.mjs.map +1 -1
  46. package/mock/index.d.ts +409 -331
  47. package/package.json +2 -2
  48. package/fesm2022/acorex-connectivity-api-execute.command-SGNBLcOi.mjs.map +0 -1
@@ -0,0 +1,246 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXPEntityService } from '@acorex/platform/layout/entity';
4
+ import { AXPSystemStatusType } from '@acorex/platform/common';
5
+ import { RootConfig } from '@acorex/modules/subscription-management';
6
+ import { RootConfig as RootConfig$1 } from '@acorex/modules/tenant-management';
7
+
8
+ //#endregion
9
+ class GetSubscriptionsTimelineQuery {
10
+ constructor() {
11
+ this.entityService = inject(AXPEntityService);
12
+ this.subscriptionService = this.entityService
13
+ .withEntity(`${RootConfig.module.name}.${RootConfig.entities.subscription.name}`)
14
+ .data();
15
+ this.tenantService = this.entityService
16
+ .withEntity(`${RootConfig$1.module.name}.${RootConfig$1.entities.tenant.name}`)
17
+ .data();
18
+ }
19
+ async fetch(input) {
20
+ // Extract filters from AXPFilterClause format
21
+ const extractedFilters = this.extractSubscriptionFilters(input.filters);
22
+ const filterLogic = input.filters?.logic || input.logic || 'and';
23
+ // Separate custom filters from entity filters
24
+ const entityFilters = [];
25
+ let dateRangeFilter;
26
+ if (extractedFilters && extractedFilters.length > 0) {
27
+ for (const filter of extractedFilters) {
28
+ if (filter.field === 'dateRange') {
29
+ dateRangeFilter = filter.value;
30
+ }
31
+ else {
32
+ entityFilters.push(filter);
33
+ }
34
+ }
35
+ }
36
+ // Get all subscriptions
37
+ const subscriptionsResult = await this.subscriptionService.query({
38
+ skip: 0,
39
+ take: 10000,
40
+ filter: entityFilters.length > 0
41
+ ? {
42
+ logic: filterLogic,
43
+ filters: entityFilters,
44
+ }
45
+ : undefined,
46
+ });
47
+ let subscriptions = subscriptionsResult.items.filter((s) => s.subscriberType === 'Tenant');
48
+ // Get all tenants for lookup
49
+ const tenantsResult = await this.tenantService.query({
50
+ skip: 0,
51
+ take: 10000,
52
+ });
53
+ const tenants = tenantsResult.items;
54
+ const tenantMap = new Map(tenants.map((t) => [t.id, t]));
55
+ // Apply date range filter if provided
56
+ if (dateRangeFilter) {
57
+ subscriptions = this.applyDateRangeFilter(subscriptions, dateRangeFilter);
58
+ }
59
+ const now = new Date();
60
+ // Build results
61
+ const results = [];
62
+ for (const subscription of subscriptions) {
63
+ const startDate = new Date(subscription.startDate);
64
+ const endDate = subscription.endDate ? new Date(subscription.endDate) : undefined;
65
+ // Calculate duration in days
66
+ const durationDays = endDate
67
+ ? Math.ceil((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24))
68
+ : Math.ceil((now.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));
69
+ // Extract time period info from start date
70
+ const year = startDate.getFullYear();
71
+ const month = startDate.getMonth() + 1;
72
+ const monthName = startDate.toLocaleString('en-US', { month: 'long' });
73
+ const quarter = Math.ceil(month / 3);
74
+ const quarterName = `Q${quarter}`;
75
+ // Check if subscription is currently active
76
+ const isActive = subscription.statusId === AXPSystemStatusType.Active &&
77
+ startDate <= now &&
78
+ (!endDate || endDate >= now);
79
+ // Get tenant name
80
+ const tenant = tenantMap.get(subscription.subscriberId);
81
+ results.push({
82
+ subscriptionId: subscription.id,
83
+ subscriptionTitle: subscription.title || `${tenant?.title || 'Unknown'} - ${subscription.plan?.title || 'Unknown Plan'}`,
84
+ tenantId: subscription.subscriberId,
85
+ tenantName: tenant?.title || 'Unknown',
86
+ planId: subscription.planId,
87
+ planName: subscription.plan?.title || 'Unknown',
88
+ status: subscription.statusId || 'Unknown',
89
+ startDate: startDate,
90
+ startDateStr: startDate.toISOString(),
91
+ endDate: endDate,
92
+ endDateStr: endDate?.toISOString(),
93
+ durationDays: durationDays,
94
+ month: monthName,
95
+ monthNumber: month,
96
+ quarter: quarterName,
97
+ year: year,
98
+ isActive: isActive,
99
+ });
100
+ }
101
+ // Apply sorting if provided
102
+ if (input.sort && input.sort.length > 0) {
103
+ results.sort((a, b) => {
104
+ for (const sortField of input.sort) {
105
+ const field = sortField.field;
106
+ const aValue = a[field];
107
+ const bValue = b[field];
108
+ const dir = sortField.dir === 'asc' ? 1 : -1;
109
+ if (aValue === undefined && bValue === undefined)
110
+ continue;
111
+ if (aValue === undefined)
112
+ return 1 * dir;
113
+ if (bValue === undefined)
114
+ return -1 * dir;
115
+ // Handle date comparison
116
+ if (field === 'startDate') {
117
+ const aDate = a.startDate.getTime();
118
+ const bDate = b.startDate.getTime();
119
+ if (aDate < bDate)
120
+ return -1 * dir;
121
+ if (aDate > bDate)
122
+ return 1 * dir;
123
+ continue;
124
+ }
125
+ if (aValue < bValue)
126
+ return -1 * dir;
127
+ if (aValue > bValue)
128
+ return 1 * dir;
129
+ }
130
+ return 0;
131
+ });
132
+ }
133
+ else {
134
+ // Default sort by start date descending (newest first)
135
+ results.sort((a, b) => {
136
+ return b.startDate.getTime() - a.startDate.getTime();
137
+ });
138
+ }
139
+ // Apply pagination
140
+ const skip = input.skip || 0;
141
+ const take = input.take || 10;
142
+ const total = results.length;
143
+ const items = results.slice(skip, skip + take);
144
+ return {
145
+ items,
146
+ total,
147
+ };
148
+ }
149
+ //#region ---- Filter Extraction ----
150
+ /**
151
+ * Extract subscription-specific filters from AXPFilterClause format
152
+ * Maps report parameter paths to subscription entity field names
153
+ */
154
+ extractSubscriptionFilters(parameters) {
155
+ const filters = [];
156
+ const paramsAny = parameters;
157
+ if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {
158
+ return filters;
159
+ }
160
+ for (const filter of paramsAny.filters) {
161
+ if (!filter?.field || filter?.value === undefined || filter?.value === null) {
162
+ continue;
163
+ }
164
+ const field = filter.field;
165
+ const value = filter.value;
166
+ const operator = filter.operator || { type: 'equal' };
167
+ // Handle subscription-specific field mappings
168
+ if (field === 'planId') {
169
+ // Plan ID filter - can be array of IDs or single ID
170
+ if (Array.isArray(value) && value.length > 0) {
171
+ filters.push({
172
+ field: 'planId',
173
+ operator: { type: 'in' },
174
+ value: value,
175
+ });
176
+ }
177
+ else if (value) {
178
+ filters.push({
179
+ field: 'planId',
180
+ operator: { type: 'equal' },
181
+ value: value,
182
+ });
183
+ }
184
+ }
185
+ else if (field === 'statusId') {
186
+ // Status filter - skip 'all' value
187
+ if (value && value !== 'all') {
188
+ filters.push({
189
+ field: 'statusId',
190
+ operator: { type: 'equal' },
191
+ value: value,
192
+ });
193
+ }
194
+ }
195
+ else if (field === 'dateRange') {
196
+ // Date range filter - custom logic handled in query
197
+ filters.push({
198
+ field: 'dateRange',
199
+ operator: { type: 'equal' },
200
+ value: value,
201
+ });
202
+ }
203
+ else {
204
+ // Direct field mapping
205
+ filters.push({
206
+ field: field,
207
+ operator: operator,
208
+ value: value,
209
+ });
210
+ }
211
+ }
212
+ return filters;
213
+ }
214
+ //#endregion
215
+ //#region ---- Custom Filter Handlers ----
216
+ /**
217
+ * Apply date range filter to subscriptions
218
+ */
219
+ applyDateRangeFilter(subscriptions, dateRange) {
220
+ if (!dateRange || !dateRange.start || !dateRange.end) {
221
+ return subscriptions;
222
+ }
223
+ const startDate = new Date(dateRange.start);
224
+ const endDate = new Date(dateRange.end);
225
+ endDate.setHours(23, 59, 59, 999);
226
+ return subscriptions.filter((subscription) => {
227
+ const subStartDate = new Date(subscription.startDate);
228
+ const subEndDate = subscription.endDate ? new Date(subscription.endDate) : null;
229
+ // Check if subscription overlaps with the date range
230
+ return ((subStartDate >= startDate && subStartDate <= endDate) ||
231
+ (subEndDate && subEndDate >= startDate && subEndDate <= endDate) ||
232
+ (subStartDate <= startDate && (!subEndDate || subEndDate >= endDate)));
233
+ });
234
+ }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: GetSubscriptionsTimelineQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
236
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: GetSubscriptionsTimelineQuery, providedIn: 'root' }); }
237
+ }
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: GetSubscriptionsTimelineQuery, decorators: [{
239
+ type: Injectable,
240
+ args: [{
241
+ providedIn: 'root',
242
+ }]
243
+ }] });
244
+
245
+ export { GetSubscriptionsTimelineQuery };
246
+ //# sourceMappingURL=acorex-connectivity-mock-get-subscriptions-timeline.query-gNwKFN0F.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-connectivity-mock-get-subscriptions-timeline.query-gNwKFN0F.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-subscriptions-timeline.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPSystemStatusType } from '@acorex/platform/common';\nimport { RootConfig as SubscriptionRootConfig } from '@acorex/modules/subscription-management';\nimport { RootConfig as TenantRootConfig } from '@acorex/modules/tenant-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetSubscriptionsTimelineQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.subscriptionService = this.entityService\n .withEntity(`${SubscriptionRootConfig.module.name}.${SubscriptionRootConfig.entities.subscription.name}`)\n .data();\n this.tenantService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenant.name}`)\n .data();\n }\n async fetch(input) {\n // Extract filters from AXPFilterClause format\n const extractedFilters = this.extractSubscriptionFilters(input.filters);\n const filterLogic = input.filters?.logic || input.logic || 'and';\n // Separate custom filters from entity filters\n const entityFilters = [];\n let dateRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'dateRange') {\n dateRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all subscriptions\n const subscriptionsResult = await this.subscriptionService.query({\n skip: 0,\n take: 10000,\n filter: entityFilters.length > 0\n ? {\n logic: filterLogic,\n filters: entityFilters,\n }\n : undefined,\n });\n let subscriptions = subscriptionsResult.items.filter((s) => s.subscriberType === 'Tenant');\n // Get all tenants for lookup\n const tenantsResult = await this.tenantService.query({\n skip: 0,\n take: 10000,\n });\n const tenants = tenantsResult.items;\n const tenantMap = new Map(tenants.map((t) => [t.id, t]));\n // Apply date range filter if provided\n if (dateRangeFilter) {\n subscriptions = this.applyDateRangeFilter(subscriptions, dateRangeFilter);\n }\n const now = new Date();\n // Build results\n const results = [];\n for (const subscription of subscriptions) {\n const startDate = new Date(subscription.startDate);\n const endDate = subscription.endDate ? new Date(subscription.endDate) : undefined;\n // Calculate duration in days\n const durationDays = endDate\n ? Math.ceil((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24))\n : Math.ceil((now.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));\n // Extract time period info from start date\n const year = startDate.getFullYear();\n const month = startDate.getMonth() + 1;\n const monthName = startDate.toLocaleString('en-US', { month: 'long' });\n const quarter = Math.ceil(month / 3);\n const quarterName = `Q${quarter}`;\n // Check if subscription is currently active\n const isActive = subscription.statusId === AXPSystemStatusType.Active &&\n startDate <= now &&\n (!endDate || endDate >= now);\n // Get tenant name\n const tenant = tenantMap.get(subscription.subscriberId);\n results.push({\n subscriptionId: subscription.id,\n subscriptionTitle: subscription.title || `${tenant?.title || 'Unknown'} - ${subscription.plan?.title || 'Unknown Plan'}`,\n tenantId: subscription.subscriberId,\n tenantName: tenant?.title || 'Unknown',\n planId: subscription.planId,\n planName: subscription.plan?.title || 'Unknown',\n status: subscription.statusId || 'Unknown',\n startDate: startDate,\n startDateStr: startDate.toISOString(),\n endDate: endDate,\n endDateStr: endDate?.toISOString(),\n durationDays: durationDays,\n month: monthName,\n monthNumber: month,\n quarter: quarterName,\n year: year,\n isActive: isActive,\n });\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n results.sort((a, b) => {\n for (const sortField of input.sort) {\n const field = sortField.field;\n const aValue = a[field];\n const bValue = b[field];\n const dir = sortField.dir === 'asc' ? 1 : -1;\n if (aValue === undefined && bValue === undefined)\n continue;\n if (aValue === undefined)\n return 1 * dir;\n if (bValue === undefined)\n return -1 * dir;\n // Handle date comparison\n if (field === 'startDate') {\n const aDate = a.startDate.getTime();\n const bDate = b.startDate.getTime();\n if (aDate < bDate)\n return -1 * dir;\n if (aDate > bDate)\n return 1 * dir;\n continue;\n }\n if (aValue < bValue)\n return -1 * dir;\n if (aValue > bValue)\n return 1 * dir;\n }\n return 0;\n });\n }\n else {\n // Default sort by start date descending (newest first)\n results.sort((a, b) => {\n return b.startDate.getTime() - a.startDate.getTime();\n });\n }\n // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = results.length;\n const items = results.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract subscription-specific filters from AXPFilterClause format\n * Maps report parameter paths to subscription entity field names\n */\n extractSubscriptionFilters(parameters) {\n const filters = [];\n const paramsAny = parameters;\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n return filters;\n }\n for (const filter of paramsAny.filters) {\n if (!filter?.field || filter?.value === undefined || filter?.value === null) {\n continue;\n }\n const field = filter.field;\n const value = filter.value;\n const operator = filter.operator || { type: 'equal' };\n // Handle subscription-specific field mappings\n if (field === 'planId') {\n // Plan ID filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'planId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'planId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'statusId') {\n // Status filter - skip 'all' value\n if (value && value !== 'all') {\n filters.push({\n field: 'statusId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'dateRange') {\n // Date range filter - custom logic handled in query\n filters.push({\n field: 'dateRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else {\n // Direct field mapping\n filters.push({\n field: field,\n operator: operator,\n value: value,\n });\n }\n }\n return filters;\n }\n //#endregion\n //#region ---- Custom Filter Handlers ----\n /**\n * Apply date range filter to subscriptions\n */\n applyDateRangeFilter(subscriptions, dateRange) {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return subscriptions;\n }\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999);\n return subscriptions.filter((subscription) => {\n const subStartDate = new Date(subscription.startDate);\n const subEndDate = subscription.endDate ? new Date(subscription.endDate) : null;\n // Check if subscription overlaps with the date range\n return ((subStartDate >= startDate && subStartDate <= endDate) ||\n (subEndDate && subEndDate >= startDate && subEndDate <= endDate) ||\n (subStartDate <= startDate && (!subEndDate || subEndDate >= endDate)));\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: GetSubscriptionsTimelineQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: GetSubscriptionsTimelineQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: GetSubscriptionsTimelineQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN1YnNjcmlwdGlvbnMtdGltZWxpbmUucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvdGVuYW50LW1hbmFnZW1lbnQvcmVwb3J0cy9nZXQtc3Vic2NyaXB0aW9ucy10aW1lbGluZS5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxJQUFJLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0YsT0FBTyxFQUFFLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQXlDbkYsWUFBWTtBQUtaLE1BQU0sT0FBTyw2QkFBNkI7SUFIMUM7UUFNbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsYUFBYTthQUM3QyxVQUFVLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEcsSUFBSSxFQUE0RCxDQUFDO1FBQzVELGtCQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDdkMsVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RGLElBQUksRUFBZ0QsQ0FBQztLQXVQekQ7SUFyUEMsS0FBSyxDQUFDLEtBQUss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Y0FGNUIsTUFBTTs7NEZBRVAsNkJBQTZCO2tCQUh6QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUXVlcnkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQVhQRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc3Vic2NyaXB0aW9uLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFN5c3RlbVN0YXR1c1R5cGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBSb290Q29uZmlnIGFzIFN1YnNjcmlwdGlvblJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc3Vic2NyaXB0aW9uLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyBhcyBUZW5hbnRSb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlJbnB1dCB7XG4gIHNraXA/OiBudW1iZXI7XG4gIHRha2U/OiBudW1iZXI7XG4gIHNvcnQ/OiBBcnJheTx7IGZpZWxkOiBzdHJpbmc7IGRpcjogJ2FzYycgfCAnZGVzYycgfT47XG4gIGZpbHRlcnM/OiBBcnJheTx7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcGVyYXRvcjogeyB0eXBlOiBzdHJpbmcgfTtcbiAgICB2YWx1ZTogYW55O1xuICB9PjtcbiAgbG9naWM/OiAnYW5kJyB8ICdvcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uc1RpbWVsaW5lUmVzdWx0IHtcbiAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgc3Vic2NyaXB0aW9uVGl0bGU6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdGVuYW50TmFtZTogc3RyaW5nO1xuICBwbGFuSWQ/OiBzdHJpbmc7XG4gIHBsYW5OYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzdGFydERhdGU6IERhdGU7XG4gIHN0YXJ0RGF0ZVN0cjogc3RyaW5nO1xuICBlbmREYXRlPzogRGF0ZTtcbiAgZW5kRGF0ZVN0cj86IHN0cmluZztcbiAgZHVyYXRpb25EYXlzOiBudW1iZXI7XG4gIG1vbnRoOiBzdHJpbmc7XG4gIG1vbnRoTnVtYmVyOiBudW1iZXI7XG4gIHF1YXJ0ZXI6IHN0cmluZztcbiAgeWVhcjogbnVtYmVyO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeVJlc3VsdCB7XG4gIGl0ZW1zOiBTdWJzY3JpcHRpb25zVGltZWxpbmVSZXN1bHRbXTtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFN1YnNjcmlwdGlvbnNUaW1lbGluZVF1ZXJ5SW5wdXQsIEdldFN1YnNjcmlwdGlvbnNUaW1lbGluZVF1ZXJ5UmVzdWx0Plxue1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1N1YnNjcmlwdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7U3Vic2NyaXB0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5zdWJzY3JpcHRpb24ubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvbkVudGl0eU1vZGVsPigpO1xuICBwcml2YXRlIHRlbmFudFNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtUZW5hbnRSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1RlbmFudFJvb3RDb25maWcuZW50aXRpZXMudGVuYW50Lm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRFbnRpdHlNb2RlbD4oKTtcblxuICBhc3luYyBmZXRjaChpbnB1dDogR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlJbnB1dCB8IGFueSk6IFByb21pc2U8R2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlSZXN1bHQ+IHtcbiAgICAvLyBFeHRyYWN0IGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgY29uc3QgZXh0cmFjdGVkRmlsdGVycyA9IHRoaXMuZXh0cmFjdFN1YnNjcmlwdGlvbkZpbHRlcnMoaW5wdXQuZmlsdGVycyk7XG4gICAgY29uc3QgZmlsdGVyTG9naWMgPSAoaW5wdXQuZmlsdGVycyBhcyBhbnkpPy5sb2dpYyB8fCBpbnB1dC5sb2dpYyB8fCAnYW5kJztcblxuICAgIC8vIFNlcGFyYXRlIGN1c3RvbSBmaWx0ZXJzIGZyb20gZW50aXR5IGZpbHRlcnNcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXJzOiBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBsZXQgZGF0ZVJhbmdlRmlsdGVyOiBhbnk7XG5cbiAgICBpZiAoZXh0cmFjdGVkRmlsdGVycyAmJiBleHRyYWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGV4dHJhY3RlZEZpbHRlcnMpIHtcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ2RhdGVSYW5nZScpIHtcbiAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXIgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW50aXR5RmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgYWxsIHN1YnNjcmlwdGlvbnNcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zUmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICAgIGZpbHRlcjpcbiAgICAgICAgZW50aXR5RmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgbG9naWM6IGZpbHRlckxvZ2ljLFxuICAgICAgICAgICAgZmlsdGVyczogZW50aXR5RmlsdGVycyxcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGxldCBzdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9uc1Jlc3VsdC5pdGVtcy5maWx0ZXIoKHMpID0+IHMuc3Vic2NyaWJlclR5cGUgPT09ICdUZW5hbnQnKTtcblxuICAgIC8vIEdldCBhbGwgdGVuYW50cyBmb3IgbG9va3VwXG4gICAgY29uc3QgdGVuYW50c1Jlc3VsdCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdGVuYW50cyA9IHRlbmFudHNSZXN1bHQuaXRlbXM7XG4gICAgY29uc3QgdGVuYW50TWFwID0gbmV3IE1hcCh0ZW5hbnRzLm1hcCgodCkgPT4gW3QuaWQsIHRdKSk7XG5cbiAgICAvLyBBcHBseSBkYXRlIHJhbmdlIGZpbHRlciBpZiBwcm92aWRlZFxuICAgIGlmIChkYXRlUmFuZ2VGaWx0ZXIpIHtcbiAgICAgIHN1YnNjcmlwdGlvbnMgPSB0aGlzLmFwcGx5RGF0ZVJhbmdlRmlsdGVyKHN1YnNjcmlwdGlvbnMsIGRhdGVSYW5nZUZpbHRlcik7XG4gICAgfVxuXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIEJ1aWxkIHJlc3VsdHNcbiAgICBjb25zdCByZXN1bHRzOiBTdWJzY3JpcHRpb25zVGltZWxpbmVSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3Vic2NyaXB0aW9uLnN0YXJ0RGF0ZSk7XG4gICAgICBjb25zdCBlbmREYXRlID0gc3Vic2NyaXB0aW9uLmVuZERhdGUgPyBuZXcgRGF0ZShzdWJzY3JpcHRpb24uZW5kRGF0ZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBkdXJhdGlvbiBpbiBkYXlzXG4gICAgICBjb25zdCBkdXJhdGlvbkRheXMgPSBlbmREYXRlXG4gICAgICAgID8gTWF0aC5jZWlsKChlbmREYXRlLmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKVxuICAgICAgICA6IE1hdGguY2VpbCgobm93LmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcblxuICAgICAgLy8gRXh0cmFjdCB0aW1lIHBlcmlvZCBpbmZvIGZyb20gc3RhcnQgZGF0ZVxuICAgICAgY29uc3QgeWVhciA9IHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgICBjb25zdCBtb250aE5hbWUgPSBzdGFydERhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgICAgY29uc3QgcXVhcnRlciA9IE1hdGguY2VpbChtb250aCAvIDMpO1xuICAgICAgY29uc3QgcXVhcnRlck5hbWUgPSBgUSR7cXVhcnRlcn1gO1xuXG4gICAgICAvLyBDaGVjayBpZiBzdWJzY3JpcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZVxuICAgICAgY29uc3QgaXNBY3RpdmUgPVxuICAgICAgICBzdWJzY3JpcHRpb24uc3RhdHVzSWQgPT09IEFYUFN5c3RlbVN0YXR1c1R5cGUuQWN0aXZlICYmXG4gICAgICAgIHN0YXJ0RGF0ZSA8PSBub3cgJiZcbiAgICAgICAgKCFlbmREYXRlIHx8IGVuZERhdGUgPj0gbm93KTtcblxuICAgICAgLy8gR2V0IHRlbmFudCBuYW1lXG4gICAgICBjb25zdCB0ZW5hbnQgPSB0ZW5hbnRNYXAuZ2V0KHN1YnNjcmlwdGlvbi5zdWJzY3JpYmVySWQpO1xuXG4gICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICBzdWJzY3JpcHRpb25JZDogc3Vic2NyaXB0aW9uLmlkLFxuICAgICAgICBzdWJzY3JpcHRpb25UaXRsZTogc3Vic2NyaXB0aW9uLnRpdGxlIHx8IGAke3RlbmFudD8udGl0bGUgfHwgJ1Vua25vd24nfSAtICR7c3Vic2NyaXB0aW9uLnBsYW4/LnRpdGxlIHx8ICdVbmtub3duIFBsYW4nfWAsXG4gICAgICAgIHRlbmFudElkOiBzdWJzY3JpcHRpb24uc3Vic2NyaWJlcklkLFxuICAgICAgICB0ZW5hbnROYW1lOiB0ZW5hbnQ/LnRpdGxlIHx8ICdVbmtub3duJyxcbiAgICAgICAgcGxhbklkOiBzdWJzY3JpcHRpb24ucGxhbklkLFxuICAgICAgICBwbGFuTmFtZTogc3Vic2NyaXB0aW9uLnBsYW4/LnRpdGxlIHx8ICdVbmtub3duJyxcbiAgICAgICAgc3RhdHVzOiBzdWJzY3JpcHRpb24uc3RhdHVzSWQgfHwgJ1Vua25vd24nLFxuICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcbiAgICAgICAgc3RhcnREYXRlU3RyOiBzdGFydERhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcbiAgICAgICAgZW5kRGF0ZVN0cjogZW5kRGF0ZT8udG9JU09TdHJpbmcoKSxcbiAgICAgICAgZHVyYXRpb25EYXlzOiBkdXJhdGlvbkRheXMsXG4gICAgICAgIG1vbnRoOiBtb250aE5hbWUsXG4gICAgICAgIG1vbnRoTnVtYmVyOiBtb250aCxcbiAgICAgICAgcXVhcnRlcjogcXVhcnRlck5hbWUsXG4gICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgIGlzQWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHNvcnRpbmcgaWYgcHJvdmlkZWRcbiAgICBpZiAoaW5wdXQuc29ydCAmJiBpbnB1dC5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHNvcnRGaWVsZCBvZiBpbnB1dC5zb3J0ISkge1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gc29ydEZpZWxkLmZpZWxkIGFzIGtleW9mIFN1YnNjcmlwdGlvbnNUaW1lbGluZVJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBiVmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYlZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAtMSAqIGRpcjtcblxuICAgICAgICAgIC8vIEhhbmRsZSBkYXRlIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoZmllbGQgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBhRGF0ZSA9IGEuc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGJEYXRlID0gYi5zdGFydERhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYgKGFEYXRlIDwgYkRhdGUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICAgIGlmIChhRGF0ZSA+IGJEYXRlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnQgYnkgc3RhcnQgZGF0ZSBkZXNjZW5kaW5nIChuZXdlc3QgZmlyc3QpXG4gICAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIGIuc3RhcnREYXRlLmdldFRpbWUoKSAtIGEuc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHBhZ2luYXRpb25cbiAgICBjb25zdCBza2lwID0gaW5wdXQuc2tpcCB8fCAwO1xuICAgIGNvbnN0IHRha2UgPSBpbnB1dC50YWtlIHx8IDEwO1xuICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbXMgPSByZXN1bHRzLnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtcyxcbiAgICAgIHRvdGFsLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHN1YnNjcmlwdGlvbi1zcGVjaWZpYyBmaWx0ZXJzIGZyb20gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgKiBNYXBzIHJlcG9ydCBwYXJhbWV0ZXIgcGF0aHMgdG8gc3Vic2NyaXB0aW9uIGVudGl0eSBmaWVsZCBuYW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0U3Vic2NyaXB0aW9uRmlsdGVycyhwYXJhbWV0ZXJzOiBhbnkpOiBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEdldFN1YnNjcmlwdGlvbnNUaW1lbGluZVF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSA9IFtdO1xuICAgIGNvbnN0IHBhcmFtc0FueSA9IHBhcmFtZXRlcnMgYXMgYW55O1xuXG4gICAgaWYgKCFwYXJhbXNBbnk/LmZpbHRlcnMgfHwgIUFycmF5LmlzQXJyYXkocGFyYW1zQW55LmZpbHRlcnMpKSB7XG4gICAgICByZXR1cm4gZmlsdGVycztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBwYXJhbXNBbnkuZmlsdGVycykge1xuICAgICAgaWYgKCFmaWx0ZXI/LmZpZWxkIHx8IGZpbHRlcj8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXI/LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5maWVsZDtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXIub3BlcmF0b3IgfHwgeyB0eXBlOiAnZXF1YWwnIH07XG5cbiAgICAgIC8vIEhhbmRsZSBzdWJzY3JpcHRpb24tc3BlY2lmaWMgZmllbGQgbWFwcGluZ3NcbiAgICAgIGlmIChmaWVsZCA9PT0gJ3BsYW5JZCcpIHtcbiAgICAgICAgLy8gUGxhbiBJRCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3BsYW5JZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnaW4nIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdwbGFuSWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnc3RhdHVzSWQnKSB7XG4gICAgICAgIC8vIFN0YXR1cyBmaWx0ZXIgLSBza2lwICdhbGwnIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXNJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIC8vIERhdGUgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogJ2RhdGVSYW5nZScsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIEZpbHRlciBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgdG8gc3Vic2NyaXB0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseURhdGVSYW5nZUZpbHRlcihcbiAgICBzdWJzY3JpcHRpb25zOiBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uRW50aXR5TW9kZWxbXSxcbiAgICBkYXRlUmFuZ2U6IGFueVxuICApOiBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uRW50aXR5TW9kZWxbXSB7XG4gICAgaWYgKCFkYXRlUmFuZ2UgfHwgIWRhdGVSYW5nZS5zdGFydCB8fCAhZGF0ZVJhbmdlLmVuZCkge1xuICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbnM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLmVuZCk7XG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YlN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN1YnNjcmlwdGlvbi5zdGFydERhdGUpO1xuICAgICAgY29uc3Qgc3ViRW5kRGF0ZSA9IHN1YnNjcmlwdGlvbi5lbmREYXRlID8gbmV3IERhdGUoc3Vic2NyaXB0aW9uLmVuZERhdGUpIDogbnVsbDtcblxuICAgICAgLy8gQ2hlY2sgaWYgc3Vic2NyaXB0aW9uIG92ZXJsYXBzIHdpdGggdGhlIGRhdGUgcmFuZ2VcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChzdWJTdGFydERhdGUgPj0gc3RhcnREYXRlICYmIHN1YlN0YXJ0RGF0ZSA8PSBlbmREYXRlKSB8fFxuICAgICAgICAoc3ViRW5kRGF0ZSAmJiBzdWJFbmREYXRlID49IHN0YXJ0RGF0ZSAmJiBzdWJFbmREYXRlIDw9IGVuZERhdGUpIHx8XG4gICAgICAgIChzdWJTdGFydERhdGUgPD0gc3RhcnREYXRlICYmICghc3ViRW5kRGF0ZSB8fCBzdWJFbmREYXRlID49IGVuZERhdGUpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0="],"names":["SubscriptionRootConfig","TenantRootConfig"],"mappings":"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"}
@@ -0,0 +1,258 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXPEntityService } from '@acorex/platform/layout/entity';
4
+ import { AXPSystemStatusType } from '@acorex/platform/common';
5
+ import { RootConfig } from '@acorex/modules/tenant-management';
6
+ import { RootConfig as RootConfig$1 } from '@acorex/modules/subscription-management';
7
+ import { RootConfig as RootConfig$2 } from '@acorex/modules/application-management';
8
+
9
+ //#endregion
10
+ class GetTenantApplicationAccessQuery {
11
+ constructor() {
12
+ this.entityService = inject(AXPEntityService);
13
+ this.tenantService = this.entityService
14
+ .withEntity(`${RootConfig.module.name}.${RootConfig.entities.tenant.name}`)
15
+ .data();
16
+ this.subscriptionService = this.entityService
17
+ .withEntity(`${RootConfig$1.module.name}.${RootConfig$1.entities.subscription.name}`)
18
+ .data();
19
+ this.planService = this.entityService
20
+ .withEntity(`${RootConfig$1.module.name}.${RootConfig$1.entities.subscriptionPlan.name}`)
21
+ .data();
22
+ this.planItemService = this.entityService
23
+ .withEntity(`${RootConfig$1.module.name}.${RootConfig$1.entities.subscriptionPlanItem.name}`)
24
+ .data();
25
+ this.applicationService = this.entityService
26
+ .withEntity(`${RootConfig$2.module.name}.${RootConfig$2.entities.application.name}`)
27
+ .data();
28
+ }
29
+ async fetch(input) {
30
+ // Extract filters from AXPFilterClause format
31
+ const extractedFilters = this.extractTenantFilters(input.filters);
32
+ const filterLogic = input.filters?.logic || input.logic || 'and';
33
+ // Separate custom filters from entity filters
34
+ const entityFilters = [];
35
+ let dateRangeFilter;
36
+ if (extractedFilters && extractedFilters.length > 0) {
37
+ for (const filter of extractedFilters) {
38
+ if (filter.field === 'dateRange') {
39
+ dateRangeFilter = filter.value;
40
+ }
41
+ else {
42
+ entityFilters.push(filter);
43
+ }
44
+ }
45
+ }
46
+ // Get all tenants
47
+ const tenantsResult = await this.tenantService.query({
48
+ skip: 0,
49
+ take: 10000,
50
+ filter: entityFilters.length > 0
51
+ ? {
52
+ logic: filterLogic,
53
+ filters: entityFilters,
54
+ }
55
+ : undefined,
56
+ });
57
+ let tenants = tenantsResult.items;
58
+ // Apply date range filter if provided
59
+ if (dateRangeFilter) {
60
+ tenants = this.applyDateRangeFilter(tenants, dateRangeFilter);
61
+ }
62
+ // Get all subscriptions
63
+ const subscriptionsResult = await this.subscriptionService.query({
64
+ skip: 0,
65
+ take: 10000,
66
+ });
67
+ const subscriptions = subscriptionsResult.items.filter((s) => s.subscriberType === 'Tenant');
68
+ // Get all plans
69
+ const plansResult = await this.planService.query({
70
+ skip: 0,
71
+ take: 10000,
72
+ });
73
+ const plans = plansResult.items;
74
+ // Get all plan items
75
+ const planItemsResult = await this.planItemService.query({
76
+ skip: 0,
77
+ take: 10000,
78
+ });
79
+ const planItems = planItemsResult.items;
80
+ // Get all applications
81
+ const applicationsResult = await this.applicationService.query({
82
+ skip: 0,
83
+ take: 10000,
84
+ });
85
+ const applications = applicationsResult.items;
86
+ // Build results for each tenant
87
+ const results = [];
88
+ for (const tenant of tenants) {
89
+ // Get tenant's subscriptions
90
+ const tenantSubscriptions = subscriptions.filter((s) => s.subscriberId === tenant.id);
91
+ // Get unique applications through subscriptions → plans → plan items → editions → applications
92
+ const applicationSet = new Set();
93
+ const applicationNames = [];
94
+ for (const subscription of tenantSubscriptions) {
95
+ if (!subscription.planId)
96
+ continue;
97
+ // Get plan items for this plan
98
+ const planPlanItems = planItems.filter((pi) => pi.planId === subscription.planId);
99
+ for (const planItem of planPlanItems) {
100
+ if (!planItem.editionId)
101
+ continue;
102
+ // Find applications that have this edition
103
+ for (const application of applications) {
104
+ if (application.editionIds && application.editionIds.includes(planItem.editionId)) {
105
+ if (!applicationSet.has(application.id)) {
106
+ applicationSet.add(application.id);
107
+ applicationNames.push(application.title);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ // Count active subscriptions
114
+ const activeSubscriptions = tenantSubscriptions.filter((s) => s.statusId === AXPSystemStatusType.Active);
115
+ results.push({
116
+ tenantId: tenant.id,
117
+ tenantName: tenant.title,
118
+ tenantStatus: tenant.statusId || 'Unknown',
119
+ subscriptionCount: tenantSubscriptions.length,
120
+ applicationsCount: applicationSet.size,
121
+ applicationsList: applicationNames.join(', '),
122
+ activeSubscriptionsCount: activeSubscriptions.length,
123
+ registrationDate: tenant.registrationDate,
124
+ registrationDateStr: tenant.registrationDate?.toISOString(),
125
+ });
126
+ }
127
+ // Apply sorting if provided
128
+ if (input.sort && input.sort.length > 0) {
129
+ results.sort((a, b) => {
130
+ for (const sortField of input.sort) {
131
+ const field = sortField.field;
132
+ const aValue = a[field];
133
+ const bValue = b[field];
134
+ const dir = sortField.dir === 'asc' ? 1 : -1;
135
+ if (aValue === undefined && bValue === undefined)
136
+ continue;
137
+ if (aValue === undefined)
138
+ return 1 * dir;
139
+ if (bValue === undefined)
140
+ return -1 * dir;
141
+ if (aValue < bValue)
142
+ return -1 * dir;
143
+ if (aValue > bValue)
144
+ return 1 * dir;
145
+ }
146
+ return 0;
147
+ });
148
+ }
149
+ else {
150
+ // Default sort by tenant name
151
+ results.sort((a, b) => a.tenantName.localeCompare(b.tenantName));
152
+ }
153
+ // Apply pagination
154
+ const skip = input.skip || 0;
155
+ const take = input.take || 10;
156
+ const total = results.length;
157
+ const items = results.slice(skip, skip + take);
158
+ return {
159
+ items,
160
+ total,
161
+ };
162
+ }
163
+ //#region ---- Filter Extraction ----
164
+ /**
165
+ * Extract tenant-specific filters from AXPFilterClause format
166
+ * Maps report parameter paths to tenant entity field names
167
+ */
168
+ extractTenantFilters(parameters) {
169
+ const filters = [];
170
+ const paramsAny = parameters;
171
+ if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {
172
+ return filters;
173
+ }
174
+ for (const filter of paramsAny.filters) {
175
+ if (!filter?.field || filter?.value === undefined || filter?.value === null) {
176
+ continue;
177
+ }
178
+ const field = filter.field;
179
+ const value = filter.value;
180
+ const operator = filter.operator || { type: 'equal' };
181
+ // Handle tenant-specific field mappings
182
+ if (field === 'tenantId') {
183
+ // Tenant ID filter - can be array of IDs or single ID
184
+ if (Array.isArray(value) && value.length > 0) {
185
+ filters.push({
186
+ field: 'id',
187
+ operator: { type: 'in' },
188
+ value: value,
189
+ });
190
+ }
191
+ else if (value) {
192
+ filters.push({
193
+ field: 'id',
194
+ operator: { type: 'equal' },
195
+ value: value,
196
+ });
197
+ }
198
+ }
199
+ else if (field === 'statusId') {
200
+ // Status filter - skip 'all' value
201
+ if (value && value !== 'all') {
202
+ filters.push({
203
+ field: 'statusId',
204
+ operator: { type: 'equal' },
205
+ value: value,
206
+ });
207
+ }
208
+ }
209
+ else if (field === 'dateRange') {
210
+ // Date range filter - custom logic handled in query
211
+ filters.push({
212
+ field: 'dateRange',
213
+ operator: { type: 'equal' },
214
+ value: value,
215
+ });
216
+ }
217
+ else {
218
+ // Direct field mapping
219
+ filters.push({
220
+ field: field,
221
+ operator: operator,
222
+ value: value,
223
+ });
224
+ }
225
+ }
226
+ return filters;
227
+ }
228
+ //#endregion
229
+ //#region ---- Custom Filter Handlers ----
230
+ /**
231
+ * Apply date range filter to tenants
232
+ */
233
+ applyDateRangeFilter(tenants, dateRange) {
234
+ if (!dateRange || !dateRange.start || !dateRange.end) {
235
+ return tenants;
236
+ }
237
+ const startDate = new Date(dateRange.start);
238
+ const endDate = new Date(dateRange.end);
239
+ endDate.setHours(23, 59, 59, 999);
240
+ return tenants.filter((tenant) => {
241
+ if (!tenant.registrationDate)
242
+ return false;
243
+ const regDate = new Date(tenant.registrationDate);
244
+ return regDate >= startDate && regDate <= endDate;
245
+ });
246
+ }
247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: GetTenantApplicationAccessQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
248
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: GetTenantApplicationAccessQuery, providedIn: 'root' }); }
249
+ }
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: GetTenantApplicationAccessQuery, decorators: [{
251
+ type: Injectable,
252
+ args: [{
253
+ providedIn: 'root',
254
+ }]
255
+ }] });
256
+
257
+ export { GetTenantApplicationAccessQuery };
258
+ //# sourceMappingURL=acorex-connectivity-mock-get-tenant-application-access.query-C3OxqcSp.mjs.map