@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47

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 (170) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
  3. package/esm2020/lib/components/loader/loader.component.mjs +23 -23
  4. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
  5. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
  6. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
  7. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
  8. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
  9. package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
  10. package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
  11. package/esm2020/lib/config.mjs +4 -4
  12. package/esm2020/lib/helpers.service.mjs +470 -470
  13. package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
  14. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
  15. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
  16. package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
  17. package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
  18. package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
  19. package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
  20. package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
  21. package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
  22. package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
  23. package/esm2020/lib/mattertagData.mjs +165 -165
  24. package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
  25. package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
  26. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
  27. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
  28. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
  29. package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
  30. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
  31. package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
  32. package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
  33. package/esm2020/lib/services/base-tab.service.mjs +24 -24
  34. package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
  35. package/esm2020/lib/services/content.service.mjs +135 -135
  36. package/esm2020/lib/services/filter.service.mjs +599 -599
  37. package/esm2020/lib/services/intervention.service.mjs +236 -236
  38. package/esm2020/lib/services/locale.service.mjs +45 -45
  39. package/esm2020/lib/services/matterport-import.service.mjs +340 -340
  40. package/esm2020/lib/services/matterport.service.mjs +1587 -1587
  41. package/esm2020/lib/services/models/affectation.service.mjs +60 -60
  42. package/esm2020/lib/services/models/base-object.service.mjs +70 -70
  43. package/esm2020/lib/services/models/capture.service.mjs +34 -34
  44. package/esm2020/lib/services/models/comment.service.mjs +98 -98
  45. package/esm2020/lib/services/models/domain.service.mjs +78 -78
  46. package/esm2020/lib/services/models/equipment.service.mjs +683 -683
  47. package/esm2020/lib/services/models/event.service.mjs +128 -128
  48. package/esm2020/lib/services/models/feature.service.mjs +380 -380
  49. package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
  50. package/esm2020/lib/services/models/layer.service.mjs +33 -33
  51. package/esm2020/lib/services/models/measurement.service.mjs +199 -199
  52. package/esm2020/lib/services/models/mission.service.mjs +206 -206
  53. package/esm2020/lib/services/models/navigation.service.mjs +92 -92
  54. package/esm2020/lib/services/models/node.service.mjs +31 -31
  55. package/esm2020/lib/services/models/object3D.service.mjs +364 -364
  56. package/esm2020/lib/services/models/operation.service.mjs +59 -59
  57. package/esm2020/lib/services/models/organisation.service.mjs +73 -73
  58. package/esm2020/lib/services/models/plan.service.mjs +799 -799
  59. package/esm2020/lib/services/models/poi.service.mjs +103 -103
  60. package/esm2020/lib/services/models/profile.service.mjs +58 -58
  61. package/esm2020/lib/services/models/property.service.mjs +44 -44
  62. package/esm2020/lib/services/models/space.service.mjs +204 -204
  63. package/esm2020/lib/services/models/template.service.mjs +41 -41
  64. package/esm2020/lib/services/models/ticket.service.mjs +526 -526
  65. package/esm2020/lib/services/models/visit.service.mjs +130 -130
  66. package/esm2020/lib/services/models/zone.service.mjs +225 -225
  67. package/esm2020/lib/services/navigator.service.mjs +212 -212
  68. package/esm2020/lib/services/s3.service.mjs +137 -137
  69. package/esm2020/lib/services/search.service.mjs +124 -124
  70. package/esm2020/lib/services/support.service.mjs +42 -42
  71. package/esm2020/lib/services/tag.service.mjs +111 -111
  72. package/esm2020/lib/services/user.service.mjs +501 -501
  73. package/esm2020/lib/services/validators.service.mjs +50 -50
  74. package/esm2020/lib/services/viewer.service.mjs +389 -389
  75. package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
  76. package/esm2020/lib/services/zoneChange.service.mjs +30 -30
  77. package/esm2020/lib/types.service.mjs +311 -311
  78. package/esm2020/lib/validators/email.directive.mjs +7 -7
  79. package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
  80. package/esm2020/lib/validators/number.directive.mjs +12 -12
  81. package/esm2020/lib/validators/text.directive.mjs +12 -12
  82. package/esm2020/public-api.mjs +72 -72
  83. package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
  84. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
  85. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  86. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
  87. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  88. package/lib/components/csv-export/csv-export.component.d.ts +18 -18
  89. package/lib/components/loader/loader.component.d.ts +10 -10
  90. package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
  91. package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
  92. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
  93. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
  94. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
  95. package/lib/components/search-bar/search-bar.component.d.ts +16 -16
  96. package/lib/components/support-modal/support-modal.component.d.ts +26 -26
  97. package/lib/config.d.ts +22 -22
  98. package/lib/helpers.service.d.ts +79 -79
  99. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
  100. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
  101. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
  102. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
  103. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
  104. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
  105. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
  106. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
  107. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
  108. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
  109. package/lib/mattertagData.d.ts +70 -70
  110. package/lib/ngx-smarterplan-core.module.d.ts +29 -29
  111. package/lib/ngx-smarterplan-core.service.d.ts +6 -6
  112. package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
  113. package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
  114. package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
  115. package/lib/pipes/safe-url.pipe.d.ts +10 -10
  116. package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
  117. package/lib/pipes/username-from-id.pipe.d.ts +11 -11
  118. package/lib/services/amplify-cache.service.d.ts +37 -37
  119. package/lib/services/base-tab.service.d.ts +10 -10
  120. package/lib/services/baseVisibility.service.d.ts +9 -9
  121. package/lib/services/content.service.d.ts +28 -28
  122. package/lib/services/filter.service.d.ts +60 -60
  123. package/lib/services/intervention.service.d.ts +25 -25
  124. package/lib/services/locale.service.d.ts +23 -23
  125. package/lib/services/matterport-import.service.d.ts +53 -53
  126. package/lib/services/matterport.service.d.ts +336 -336
  127. package/lib/services/models/affectation.service.d.ts +14 -14
  128. package/lib/services/models/base-object.service.d.ts +20 -20
  129. package/lib/services/models/capture.service.d.ts +13 -13
  130. package/lib/services/models/comment.service.d.ts +26 -26
  131. package/lib/services/models/domain.service.d.ts +19 -19
  132. package/lib/services/models/equipment.service.d.ts +93 -93
  133. package/lib/services/models/event.service.d.ts +43 -43
  134. package/lib/services/models/feature.service.d.ts +75 -75
  135. package/lib/services/models/hashtag.service.d.ts +13 -13
  136. package/lib/services/models/layer.service.d.ts +11 -11
  137. package/lib/services/models/measurement.service.d.ts +51 -51
  138. package/lib/services/models/mission.service.d.ts +39 -39
  139. package/lib/services/models/navigation.service.d.ts +29 -29
  140. package/lib/services/models/node.service.d.ts +12 -12
  141. package/lib/services/models/object3D.service.d.ts +57 -57
  142. package/lib/services/models/operation.service.d.ts +15 -15
  143. package/lib/services/models/organisation.service.d.ts +19 -19
  144. package/lib/services/models/plan.service.d.ts +133 -133
  145. package/lib/services/models/poi.service.d.ts +25 -25
  146. package/lib/services/models/profile.service.d.ts +16 -16
  147. package/lib/services/models/property.service.d.ts +13 -13
  148. package/lib/services/models/space.service.d.ts +46 -46
  149. package/lib/services/models/template.service.d.ts +15 -15
  150. package/lib/services/models/ticket.service.d.ts +93 -93
  151. package/lib/services/models/visit.service.d.ts +24 -24
  152. package/lib/services/models/zone.service.d.ts +50 -50
  153. package/lib/services/navigator.service.d.ts +61 -61
  154. package/lib/services/s3.service.d.ts +14 -14
  155. package/lib/services/search.service.d.ts +20 -20
  156. package/lib/services/support.service.d.ts +17 -17
  157. package/lib/services/tag.service.d.ts +29 -29
  158. package/lib/services/user.service.d.ts +118 -118
  159. package/lib/services/validators.service.d.ts +18 -18
  160. package/lib/services/viewer.service.d.ts +110 -110
  161. package/lib/services/zone-drawer.service.d.ts +7 -7
  162. package/lib/services/zoneChange.service.d.ts +17 -17
  163. package/lib/types.service.d.ts +842 -842
  164. package/lib/validators/email.directive.d.ts +2 -2
  165. package/lib/validators/no-empty.directive.d.ts +2 -2
  166. package/lib/validators/number.directive.d.ts +2 -2
  167. package/lib/validators/text.directive.d.ts +2 -2
  168. package/package.json +2 -2
  169. package/public-api.d.ts +64 -64
  170. package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
@@ -1,204 +1,204 @@
1
- /* eslint-disable class-methods-use-this */
2
- import { Inject, Injectable } from "@angular/core";
3
- import { Subject } from "rxjs";
4
- import { filterUniqueArrayByID, sortAlphabeticallyOnName } from "../../helpers.service";
5
- import { PropertyType } from "../../types.service";
6
- import { getSignedImageUrlForSpace } from "../s3.service";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./visit.service";
9
- import * as i2 from "../user.service";
10
- import * as i3 from "./property.service";
11
- import * as i4 from "./capture.service";
12
- import * as i5 from "./mission.service";
13
- import * as i6 from "./ticket.service";
14
- import * as i7 from "./equipment.service";
15
- import * as i8 from "./feature.service";
16
- import * as i9 from "./measurement.service";
17
- export class SpaceService {
18
- constructor(visitService, userService, propertyService, captureService, missionService, ticketService, equipService, featureService, measurementService, apiInjected) {
19
- this.visitService = visitService;
20
- this.userService = userService;
21
- this.propertyService = propertyService;
22
- this.captureService = captureService;
23
- this.missionService = missionService;
24
- this.ticketService = ticketService;
25
- this.equipService = equipService;
26
- this.featureService = featureService;
27
- this.measurementService = measurementService;
28
- this.locationsForUser = [];
29
- this.locationUpdated = new Subject();
30
- this.API = apiInjected;
31
- }
32
- async listSpaces() {
33
- return this.API.__proto__.ListSpaces().then((spaces) => spaces.items.filter((sp) => !sp.deletedAt));
34
- }
35
- async getLocationsForCurrentUser() {
36
- const missions = this.userService.currentMissions;
37
- if (!missions)
38
- return [];
39
- let locations = [];
40
- await Promise.all(missions.map(async (mission) => {
41
- if (mission.space && !mission.space.deletedAt) {
42
- const space = await this.getSpace(mission.space.id);
43
- await this.signUrlForSpace(space);
44
- await this.visitService
45
- .getVisitsForSpaceForUser(space.id)
46
- .then((visits) => {
47
- if (visits) {
48
- space.visits = visits;
49
- }
50
- });
51
- locations.push(space);
52
- }
53
- }));
54
- if (locations.length > 0) {
55
- locations = sortAlphabeticallyOnName(filterUniqueArrayByID(locations));
56
- }
57
- this.locationsForUser = locations;
58
- this.locationUpdated.next(locations);
59
- return locations;
60
- }
61
- async signUrlForSpace(loc) {
62
- if (loc.annexes) {
63
- getSignedImageUrlForSpace(loc).then((url) => {
64
- if (url) {
65
- loc.annexes = url;
66
- }
67
- });
68
- }
69
- }
70
- async getAllowedSpacesForOrg(orgID, userOrgID) {
71
- if (userOrgID === "6e28201f-4679-4c29-9d2d-8a325f57cee9" ||
72
- orgID === "6e28201f-4679-4c29-9d2d-8a325f57cee9") {
73
- return this.listSpaces();
74
- }
75
- return this.getSpacesForOrg(userOrgID);
76
- }
77
- async getSpacesForOrg(orgID) {
78
- const properties = await this.propertyService.getPropertiesForOrganisation(orgID);
79
- if (properties.length > 0) {
80
- const spaces = [];
81
- for (const property of properties) {
82
- if (property.space && !property.space.deletedAt) {
83
- spaces.push(property.space);
84
- }
85
- }
86
- return spaces;
87
- }
88
- return null;
89
- }
90
- async createSpace(values, layer) {
91
- const loc = await this.API.__proto__.CreateSpace(values);
92
- const zoneInput = {
93
- name: values.name,
94
- spaceID: loc.id,
95
- surface: 0,
96
- layerID: layer ? layer.id : null,
97
- };
98
- await this.API.__proto__.CreateZone(zoneInput);
99
- return loc;
100
- }
101
- async updateSpace(input) {
102
- return this.API.__proto__.UpdateSpace(input);
103
- }
104
- async getSpace(id) {
105
- return this.API.__proto__.GetSpace(id);
106
- }
107
- async getModel3DForSpace(spaceID) {
108
- const captures = await this.captureService.getCapturesBySpace(spaceID);
109
- if (captures.length > 0 && captures[0].nodes.items.length > 0) {
110
- return captures[0].nodes.items[0].model3D;
111
- }
112
- return null;
113
- }
114
- async getAllowedModel3DForSpace(spaceID) {
115
- const visits = await this.visitService.getVisitsForSpaceForUser(spaceID);
116
- if (visits.length > 0) {
117
- return visits[0].model3d;
118
- }
119
- return null;
120
- }
121
- async softDeleteSpace(spaceID) {
122
- await this.updateSpace({
123
- id: spaceID,
124
- deletedAt: Date.now(),
125
- });
126
- const missions = await this.missionService.getMissionsForSpace(spaceID);
127
- const properties = await this.propertyService.listPropertiesForSpace(spaceID);
128
- if (this.userService.isSPAdmin()) {
129
- // delete all properties
130
- await Promise.all(properties.map(async (property) => {
131
- await this.propertyService.deleteProperty(property.id);
132
- }));
133
- // delete all missions
134
- await Promise.all(missions.map(async (mission) => {
135
- await this.missionService.update({
136
- id: mission.id,
137
- deletedAt: Date.now(),
138
- });
139
- }));
140
- }
141
- else {
142
- // delete property for current Org
143
- const currentOrg = this.userService.currentOrganisation(spaceID);
144
- const propertyToDelete = properties.find((property) => property.organisationID === currentOrg.id);
145
- if (propertyToDelete) {
146
- await this.propertyService.deleteProperty(propertyToDelete.id);
147
- }
148
- const missionsToDelete = missions.filter((mission) => mission.organisationID === currentOrg.id ||
149
- mission.orderedOrganisationID === currentOrg.id);
150
- await Promise.all(missionsToDelete.map(async (mission) => {
151
- await this.missionService.update({
152
- id: mission.id,
153
- deletedAt: Date.now(),
154
- });
155
- }));
156
- }
157
- const tickets = await this.ticketService.getTicketsBySpace(spaceID);
158
- await Promise.all(tickets.map(async (ticket) => {
159
- await this.ticketService.deleteTicket(ticket);
160
- }));
161
- const equips = await this.equipService.getEquipmentsForSpace(spaceID);
162
- await Promise.all(equips.map(async (eq) => {
163
- await this.equipService.deleteEquipment(eq);
164
- }));
165
- const features = await this.featureService.getFeaturesForSpace(spaceID);
166
- await Promise.all(features.map(async (feature) => {
167
- await this.featureService.deleteFeature(feature);
168
- }));
169
- // measurements
170
- const measures = await this.measurementService.getMeasurementsForSpaceForUser(spaceID);
171
- await Promise.all(measures.map(async (measure) => {
172
- await this.measurementService.deleteMeasurement(measure);
173
- }));
174
- // remove from list
175
- this.locationsForUser = this.locationsForUser.filter((space) => space.id !== spaceID);
176
- this.locationUpdated.next(this.locationsForUser);
177
- }
178
- /**
179
- * If current user can archive a space (only if his organisation is owning the property (PropertyType.PROPERTY))
180
- * @param spaceID
181
- * @returns
182
- */
183
- async canArchiveSpace(spaceID) {
184
- const currentOrg = this.userService.currentOrganisation(spaceID);
185
- const orgProperties = await this.propertyService.getPropertiesForOrganisation(currentOrg.id);
186
- const property = orgProperties.find((property_) => property_.spaceID === spaceID);
187
- if (property.type === PropertyType.PROPERTY) {
188
- return true;
189
- }
190
- return false;
191
- }
192
- }
193
- SpaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, deps: [{ token: i1.VisitService }, { token: i2.BaseUserService }, { token: i3.PropertyService }, { token: i4.CaptureService }, { token: i5.MissionService }, { token: i6.TicketsService }, { token: i7.EquipmentService }, { token: i8.FeatureService }, { token: i9.MeasurementService }, { token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
194
- SpaceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, providedIn: "root" });
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, decorators: [{
196
- type: Injectable,
197
- args: [{
198
- providedIn: "root",
199
- }]
200
- }], ctorParameters: function () { return [{ type: i1.VisitService }, { type: i2.BaseUserService }, { type: i3.PropertyService }, { type: i4.CaptureService }, { type: i5.MissionService }, { type: i6.TicketsService }, { type: i7.EquipmentService }, { type: i8.FeatureService }, { type: i9.MeasurementService }, { type: undefined, decorators: [{
201
- type: Inject,
202
- args: ['currentAPIService']
203
- }] }]; } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZTFELE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQ1ksWUFBMEIsRUFDMUIsV0FBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsYUFBNkIsRUFDN0IsWUFBOEIsRUFDOUIsY0FBOEIsRUFDOUIsa0JBQXNDLEVBQ2pCLFdBQWdCO1FBVHJDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBZmxELHFCQUFnQixHQUFZLEVBQUUsQ0FBQztRQUUvQixvQkFBZSxHQUFxQixJQUFJLE9BQU8sRUFB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WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQsIHNvcnRBbHBoYWJldGljYWxseU9uTmFtZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNwYWNlLCBMYXllciwgUHJvcGVydHlUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UgfSBmcm9tIFwiLi4vczMuc2VydmljZVwiO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQ2FwdHVyZVNlcnZpY2UgfSBmcm9tIFwiLi9jYXB0dXJlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9lcXVpcG1lbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tIFwiLi9mZWF0dXJlLnNlcnZpY2VcIjtcbmltcG9ydCB7IE1lYXN1cmVtZW50U2VydmljZSB9IGZyb20gXCIuL21lYXN1cmVtZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IE1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vbWlzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tIFwiLi9wcm9wZXJ0eS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gXCIuL3RpY2tldC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBWaXNpdFNlcnZpY2UgfSBmcm9tIFwiLi92aXNpdC5zZXJ2aWNlXCI7XG5cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBTcGFjZVNlcnZpY2Uge1xuXG4gICAgbG9jYXRpb25zRm9yVXNlcjogU3BhY2VbXSA9IFtdO1xuXG4gICAgbG9jYXRpb25VcGRhdGVkOiBTdWJqZWN0PFNwYWNlW10+ID0gbmV3IFN1YmplY3Q8U3BhY2VbXT4oKTtcblxuICAgIEFQSTogYW55OyAvL0FXU1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwcm9wZXJ0eVNlcnZpY2U6IFByb3BlcnR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjYXB0dXJlU2VydmljZTogQ2FwdHVyZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRpY2tldFNlcnZpY2U6IFRpY2tldHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVxdWlwU2VydmljZTogRXF1aXBtZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmZWF0dXJlU2VydmljZTogRmVhdHVyZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWVhc3VyZW1lbnRTZXJ2aWNlOiBNZWFzdXJlbWVudFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGxpc3RTcGFjZXMoKTogUHJvbWlzZTxTcGFjZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFNwYWNlcygpLnRoZW4oKHNwYWNlcykgPT5cbiAgICAgICAgICAgIHNwYWNlcy5pdGVtcy5maWx0ZXIoKHNwKSA9PiAhc3AuZGVsZXRlZEF0KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRMb2NhdGlvbnNGb3JDdXJyZW50VXNlcigpOiBQcm9taXNlPFNwYWNlW10+IHtcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcbiAgICAgICAgaWYgKCFtaXNzaW9ucykgcmV0dXJuIFtdO1xuICAgICAgICBsZXQgbG9jYXRpb25zID0gW107XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG1pc3Npb24uc3BhY2UgJiYgIW1pc3Npb24uc3BhY2UuZGVsZXRlZEF0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gYXdhaXQgdGhpcy5nZXRTcGFjZShtaXNzaW9uLnNwYWNlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zaWduVXJsRm9yU3BhY2Uoc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnZpc2l0U2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldFZpc2l0c0ZvclNwYWNlRm9yVXNlcihzcGFjZS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh2aXNpdHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlLnZpc2l0cyA9IHZpc2l0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICBpZiAobG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxvY2F0aW9ucyA9IHNvcnRBbHBoYWJldGljYWxseU9uTmFtZShcbiAgICAgICAgICAgICAgICBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQobG9jYXRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2NhdGlvbnNGb3JVc2VyID0gbG9jYXRpb25zO1xuICAgICAgICB0aGlzLmxvY2F0aW9uVXBkYXRlZC5uZXh0KGxvY2F0aW9ucyk7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbnM7XG4gICAgfVxuXG4gICAgYXN5bmMgc2lnblVybEZvclNwYWNlKGxvYzogU3BhY2UpIHtcbiAgICAgICAgaWYgKGxvYy5hbm5leGVzKSB7XG4gICAgICAgICAgICBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlKGxvYykudGhlbigodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgICAgICBsb2MuYW5uZXhlcyA9IHVybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldEFsbG93ZWRTcGFjZXNGb3JPcmcoXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXG4gICAgICAgIHVzZXJPcmdJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8U3BhY2VbXT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB1c2VyT3JnSUQgPT09IFwiNmUyODIwMWYtNDY3OS00YzI5LTlkMmQtOGEzMjVmNTdjZWU5XCIgfHxcbiAgICAgICAgICAgIG9yZ0lEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGlzdFNwYWNlcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNwYWNlc0Zvck9yZyh1c2VyT3JnSUQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldFNwYWNlc0Zvck9yZyhvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxTcGFjZVtdPiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihvcmdJRCk7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNwYWNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnNwYWNlICYmICFwcm9wZXJ0eS5zcGFjZS5kZWxldGVkQXQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3BhY2VzLnB1c2gocHJvcGVydHkuc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlU3BhY2UodmFsdWVzOiBTcGFjZSwgbGF5ZXI/OiBMYXllcik6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGxvYyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVTcGFjZSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCB6b25lSW5wdXQgPSB7XG4gICAgICAgICAgICBuYW1lOiB2YWx1ZXMubmFtZSxcbiAgICAgICAgICAgIHNwYWNlSUQ6IGxvYy5pZCxcbiAgICAgICAgICAgIHN1cmZhY2U6IDAsXG4gICAgICAgICAgICBsYXllcklEOiBsYXllciA/IGxheWVyLmlkIDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoem9uZUlucHV0KTtcbiAgICAgICAgcmV0dXJuIGxvYztcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGVTcGFjZShpbnB1dDogYW55KTogUHJvbWlzZTxTcGFjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVNwYWNlKGlucHV0KTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRTcGFjZShpZDogc3RyaW5nKTogUHJvbWlzZTxTcGFjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFNwYWNlKGlkKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNb2RlbDNERm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgY2FwdHVyZXMgPSBhd2FpdCB0aGlzLmNhcHR1cmVTZXJ2aWNlLmdldENhcHR1cmVzQnlTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgaWYgKGNhcHR1cmVzLmxlbmd0aCA+IDAgJiYgY2FwdHVyZXNbMF0ubm9kZXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVzWzBdLm5vZGVzLml0ZW1zWzBdLm1vZGVsM0Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWxsb3dlZE1vZGVsM0RGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCB2aXNpdHMgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoXG4gICAgICAgICAgICBzcGFjZUlELFxuICAgICAgICApO1xuICAgICAgICBpZiAodmlzaXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB2aXNpdHNbMF0ubW9kZWwzZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBhc3luYyBzb2Z0RGVsZXRlU3BhY2Uoc3BhY2VJRDogc3RyaW5nKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3BhY2Uoe1xuICAgICAgICAgICAgaWQ6IHNwYWNlSUQsXG4gICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuZ2V0TWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmxpc3RQcm9wZXJ0aWVzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmlzU1BBZG1pbigpKSB7XG4gICAgICAgICAgICAvLyBkZWxldGUgYWxsIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMubWFwKGFzeW5jIChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5kZWxldGVQcm9wZXJ0eShwcm9wZXJ0eS5pZCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gZGVsZXRlIGFsbCBtaXNzaW9uc1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UudXBkYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtaXNzaW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBkZWxldGUgcHJvcGVydHkgZm9yIGN1cnJlbnQgT3JnXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50T3JnID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQpO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlUb0RlbGV0ZSA9IHByb3BlcnRpZXMuZmluZChcbiAgICAgICAgICAgICAgICAocHJvcGVydHkpID0+IHByb3BlcnR5Lm9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eVRvRGVsZXRlKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZGVsZXRlUHJvcGVydHkocHJvcGVydHlUb0RlbGV0ZS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uc1RvRGVsZXRlID0gbWlzc2lvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChtaXNzaW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkIHx8XG4gICAgICAgICAgICAgICAgICAgIG1pc3Npb24ub3JkZXJlZE9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIG1pc3Npb25zVG9EZWxldGUubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UudXBkYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtaXNzaW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGlja2V0cyA9IGF3YWl0IHRoaXMudGlja2V0U2VydmljZS5nZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICB0aWNrZXRzLm1hcChhc3luYyAodGlja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50aWNrZXRTZXJ2aWNlLmRlbGV0ZVRpY2tldCh0aWNrZXQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGVxdWlwcyA9IGF3YWl0IHRoaXMuZXF1aXBTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBlcXVpcHMubWFwKGFzeW5jIChlcSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBTZXJ2aWNlLmRlbGV0ZUVxdWlwbWVudChlcSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgZmVhdHVyZXMubWFwKGFzeW5jIChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gbWVhc3VyZW1lbnRzXG4gICAgICAgIGNvbnN0IG1lYXN1cmVzID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKHNwYWNlSUQpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIG1lYXN1cmVzLm1hcChhc3luYyAobWVhc3VyZSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIC8vIHJlbW92ZSBmcm9tIGxpc3RcbiAgICAgICAgdGhpcy5sb2NhdGlvbnNGb3JVc2VyID0gdGhpcy5sb2NhdGlvbnNGb3JVc2VyLmZpbHRlcigoc3BhY2UpID0+IHNwYWNlLmlkICE9PSBzcGFjZUlEKTtcbiAgICAgICAgdGhpcy5sb2NhdGlvblVwZGF0ZWQubmV4dCh0aGlzLmxvY2F0aW9uc0ZvclVzZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIGN1cnJlbnQgdXNlciBjYW4gYXJjaGl2ZSBhIHNwYWNlIChvbmx5IGlmIGhpcyBvcmdhbmlzYXRpb24gaXMgb3duaW5nIHRoZSBwcm9wZXJ0eSAoUHJvcGVydHlUeXBlLlBST1BFUlRZKSlcbiAgICAgKiBAcGFyYW0gc3BhY2VJRFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgYXN5bmMgY2FuQXJjaGl2ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBjdXJyZW50T3JnID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQpO1xuICAgICAgICBjb25zdCBvcmdQcm9wZXJ0aWVzID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24oXG4gICAgICAgICAgICAgICAgY3VycmVudE9yZy5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gb3JnUHJvcGVydGllcy5maW5kKFxuICAgICAgICAgICAgKHByb3BlcnR5XykgPT4gcHJvcGVydHlfLnNwYWNlSUQgPT09IHNwYWNlSUQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSBQcm9wZXJ0eVR5cGUuUFJPUEVSVFkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
1
+ /* eslint-disable class-methods-use-this */
2
+ import { Inject, Injectable } from "@angular/core";
3
+ import { Subject } from "rxjs";
4
+ import { filterUniqueArrayByID, sortAlphabeticallyOnName } from "../../helpers.service";
5
+ import { PropertyType } from "../../types.service";
6
+ import { getSignedImageUrlForSpace } from "../s3.service";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./visit.service";
9
+ import * as i2 from "../user.service";
10
+ import * as i3 from "./property.service";
11
+ import * as i4 from "./capture.service";
12
+ import * as i5 from "./mission.service";
13
+ import * as i6 from "./ticket.service";
14
+ import * as i7 from "./equipment.service";
15
+ import * as i8 from "./feature.service";
16
+ import * as i9 from "./measurement.service";
17
+ export class SpaceService {
18
+ constructor(visitService, userService, propertyService, captureService, missionService, ticketService, equipService, featureService, measurementService, apiInjected) {
19
+ this.visitService = visitService;
20
+ this.userService = userService;
21
+ this.propertyService = propertyService;
22
+ this.captureService = captureService;
23
+ this.missionService = missionService;
24
+ this.ticketService = ticketService;
25
+ this.equipService = equipService;
26
+ this.featureService = featureService;
27
+ this.measurementService = measurementService;
28
+ this.locationsForUser = [];
29
+ this.locationUpdated = new Subject();
30
+ this.API = apiInjected;
31
+ }
32
+ async listSpaces() {
33
+ return this.API.__proto__.ListSpaces().then((spaces) => spaces.items.filter((sp) => !sp.deletedAt));
34
+ }
35
+ async getLocationsForCurrentUser() {
36
+ const missions = this.userService.currentMissions;
37
+ if (!missions)
38
+ return [];
39
+ let locations = [];
40
+ await Promise.all(missions.map(async (mission) => {
41
+ if (mission.space && !mission.space.deletedAt) {
42
+ const space = await this.getSpace(mission.space.id);
43
+ await this.signUrlForSpace(space);
44
+ await this.visitService
45
+ .getVisitsForSpaceForUser(space.id)
46
+ .then((visits) => {
47
+ if (visits) {
48
+ space.visits = visits;
49
+ }
50
+ });
51
+ locations.push(space);
52
+ }
53
+ }));
54
+ if (locations.length > 0) {
55
+ locations = sortAlphabeticallyOnName(filterUniqueArrayByID(locations));
56
+ }
57
+ this.locationsForUser = locations;
58
+ this.locationUpdated.next(locations);
59
+ return locations;
60
+ }
61
+ async signUrlForSpace(loc) {
62
+ if (loc.annexes) {
63
+ getSignedImageUrlForSpace(loc).then((url) => {
64
+ if (url) {
65
+ loc.annexes = url;
66
+ }
67
+ });
68
+ }
69
+ }
70
+ async getAllowedSpacesForOrg(orgID, userOrgID) {
71
+ if (userOrgID === "6e28201f-4679-4c29-9d2d-8a325f57cee9" ||
72
+ orgID === "6e28201f-4679-4c29-9d2d-8a325f57cee9") {
73
+ return this.listSpaces();
74
+ }
75
+ return this.getSpacesForOrg(userOrgID);
76
+ }
77
+ async getSpacesForOrg(orgID) {
78
+ const properties = await this.propertyService.getPropertiesForOrganisation(orgID);
79
+ if (properties.length > 0) {
80
+ const spaces = [];
81
+ for (const property of properties) {
82
+ if (property.space && !property.space.deletedAt) {
83
+ spaces.push(property.space);
84
+ }
85
+ }
86
+ return spaces;
87
+ }
88
+ return null;
89
+ }
90
+ async createSpace(values, layer) {
91
+ const loc = await this.API.__proto__.CreateSpace(values);
92
+ const zoneInput = {
93
+ name: values.name,
94
+ spaceID: loc.id,
95
+ surface: 0,
96
+ layerID: layer ? layer.id : null,
97
+ };
98
+ await this.API.__proto__.CreateZone(zoneInput);
99
+ return loc;
100
+ }
101
+ async updateSpace(input) {
102
+ return this.API.__proto__.UpdateSpace(input);
103
+ }
104
+ async getSpace(id) {
105
+ return this.API.__proto__.GetSpace(id);
106
+ }
107
+ async getModel3DForSpace(spaceID) {
108
+ const captures = await this.captureService.getCapturesBySpace(spaceID);
109
+ if (captures.length > 0 && captures[0].nodes.items.length > 0) {
110
+ return captures[0].nodes.items[0].model3D;
111
+ }
112
+ return null;
113
+ }
114
+ async getAllowedModel3DForSpace(spaceID) {
115
+ const visits = await this.visitService.getVisitsForSpaceForUser(spaceID);
116
+ if (visits.length > 0) {
117
+ return visits[0].model3d;
118
+ }
119
+ return null;
120
+ }
121
+ async softDeleteSpace(spaceID) {
122
+ await this.updateSpace({
123
+ id: spaceID,
124
+ deletedAt: Date.now(),
125
+ });
126
+ const missions = await this.missionService.getMissionsForSpace(spaceID);
127
+ const properties = await this.propertyService.listPropertiesForSpace(spaceID);
128
+ if (this.userService.isSPAdmin()) {
129
+ // delete all properties
130
+ await Promise.all(properties.map(async (property) => {
131
+ await this.propertyService.deleteProperty(property.id);
132
+ }));
133
+ // delete all missions
134
+ await Promise.all(missions.map(async (mission) => {
135
+ await this.missionService.update({
136
+ id: mission.id,
137
+ deletedAt: Date.now(),
138
+ });
139
+ }));
140
+ }
141
+ else {
142
+ // delete property for current Org
143
+ const currentOrg = this.userService.currentOrganisation(spaceID);
144
+ const propertyToDelete = properties.find((property) => property.organisationID === currentOrg.id);
145
+ if (propertyToDelete) {
146
+ await this.propertyService.deleteProperty(propertyToDelete.id);
147
+ }
148
+ const missionsToDelete = missions.filter((mission) => mission.organisationID === currentOrg.id ||
149
+ mission.orderedOrganisationID === currentOrg.id);
150
+ await Promise.all(missionsToDelete.map(async (mission) => {
151
+ await this.missionService.update({
152
+ id: mission.id,
153
+ deletedAt: Date.now(),
154
+ });
155
+ }));
156
+ }
157
+ const tickets = await this.ticketService.getTicketsBySpace(spaceID);
158
+ await Promise.all(tickets.map(async (ticket) => {
159
+ await this.ticketService.deleteTicket(ticket);
160
+ }));
161
+ const equips = await this.equipService.getEquipmentsForSpace(spaceID);
162
+ await Promise.all(equips.map(async (eq) => {
163
+ await this.equipService.deleteEquipment(eq);
164
+ }));
165
+ const features = await this.featureService.getFeaturesForSpace(spaceID);
166
+ await Promise.all(features.map(async (feature) => {
167
+ await this.featureService.deleteFeature(feature);
168
+ }));
169
+ // measurements
170
+ const measures = await this.measurementService.getMeasurementsForSpaceForUser(spaceID);
171
+ await Promise.all(measures.map(async (measure) => {
172
+ await this.measurementService.deleteMeasurement(measure);
173
+ }));
174
+ // remove from list
175
+ this.locationsForUser = this.locationsForUser.filter((space) => space.id !== spaceID);
176
+ this.locationUpdated.next(this.locationsForUser);
177
+ }
178
+ /**
179
+ * If current user can archive a space (only if his organisation is owning the property (PropertyType.PROPERTY))
180
+ * @param spaceID
181
+ * @returns
182
+ */
183
+ async canArchiveSpace(spaceID) {
184
+ const currentOrg = this.userService.currentOrganisation(spaceID);
185
+ const orgProperties = await this.propertyService.getPropertiesForOrganisation(currentOrg.id);
186
+ const property = orgProperties.find((property_) => property_.spaceID === spaceID);
187
+ if (property.type === PropertyType.PROPERTY) {
188
+ return true;
189
+ }
190
+ return false;
191
+ }
192
+ }
193
+ SpaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, deps: [{ token: i1.VisitService }, { token: i2.BaseUserService }, { token: i3.PropertyService }, { token: i4.CaptureService }, { token: i5.MissionService }, { token: i6.TicketsService }, { token: i7.EquipmentService }, { token: i8.FeatureService }, { token: i9.MeasurementService }, { token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
194
+ SpaceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, providedIn: "root" });
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, decorators: [{
196
+ type: Injectable,
197
+ args: [{
198
+ providedIn: "root",
199
+ }]
200
+ }], ctorParameters: function () { return [{ type: i1.VisitService }, { type: i2.BaseUserService }, { type: i3.PropertyService }, { type: i4.CaptureService }, { type: i5.MissionService }, { type: i6.TicketsService }, { type: i7.EquipmentService }, { type: i8.FeatureService }, { type: i9.MeasurementService }, { type: undefined, decorators: [{
201
+ type: Inject,
202
+ args: ['currentAPIService']
203
+ }] }]; } });
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZTFELE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQ1ksWUFBMEIsRUFDMUIsV0FBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsYUFBNkIsRUFDN0IsWUFBOEIsRUFDOUIsY0FBOEIsRUFDOUIsa0JBQXNDLEVBQ2pCLFdBQWdCO1FBVHJDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBZmxELHFCQUFnQixHQUFZLEVBQUUsQ0FBQztRQUUvQixvQkFBZSxHQUFxQixJQUFJLE9BQU8sRUFB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WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQsIHNvcnRBbHBoYWJldGljYWxseU9uTmFtZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3BhY2UsIExheWVyLCBQcm9wZXJ0eVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlIH0gZnJvbSBcIi4uL3MzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDYXB0dXJlU2VydmljZSB9IGZyb20gXCIuL2NhcHR1cmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFcXVpcG1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vZXF1aXBtZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tIFwiLi9mZWF0dXJlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWVhc3VyZW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbWVhc3VyZW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL21pc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tIFwiLi9wcm9wZXJ0eS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSBcIi4vdGlja2V0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlzaXRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlzaXQuc2VydmljZVwiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BhY2VTZXJ2aWNlIHtcclxuXHJcbiAgICBsb2NhdGlvbnNGb3JVc2VyOiBTcGFjZVtdID0gW107XHJcblxyXG4gICAgbG9jYXRpb25VcGRhdGVkOiBTdWJqZWN0PFNwYWNlW10+ID0gbmV3IFN1YmplY3Q8U3BhY2VbXT4oKTtcclxuXHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2FwdHVyZVNlcnZpY2U6IENhcHR1cmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdGlja2V0U2VydmljZTogVGlja2V0c1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcXVpcFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmZWF0dXJlU2VydmljZTogRmVhdHVyZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtZWFzdXJlbWVudFNlcnZpY2U6IE1lYXN1cmVtZW50U2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbGlzdFNwYWNlcygpOiBQcm9taXNlPFNwYWNlW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkxpc3RTcGFjZXMoKS50aGVuKChzcGFjZXMpID0+XHJcbiAgICAgICAgICAgIHNwYWNlcy5pdGVtcy5maWx0ZXIoKHNwKSA9PiAhc3AuZGVsZXRlZEF0KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldExvY2F0aW9uc0ZvckN1cnJlbnRVc2VyKCk6IFByb21pc2U8U3BhY2VbXT4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbnM7XHJcbiAgICAgICAgaWYgKCFtaXNzaW9ucykgcmV0dXJuIFtdO1xyXG4gICAgICAgIGxldCBsb2NhdGlvbnMgPSBbXTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobWlzc2lvbi5zcGFjZSAmJiAhbWlzc2lvbi5zcGFjZS5kZWxldGVkQXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZSA9IGF3YWl0IHRoaXMuZ2V0U3BhY2UobWlzc2lvbi5zcGFjZS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zaWduVXJsRm9yU3BhY2Uoc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoc3BhY2UuaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh2aXNpdHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZS52aXNpdHMgPSB2aXNpdHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucy5wdXNoKHNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbG9jYXRpb25zID0gc29ydEFscGhhYmV0aWNhbGx5T25OYW1lKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGxvY2F0aW9ucyksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9jYXRpb25zRm9yVXNlciA9IGxvY2F0aW9ucztcclxuICAgICAgICB0aGlzLmxvY2F0aW9uVXBkYXRlZC5uZXh0KGxvY2F0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzaWduVXJsRm9yU3BhY2UobG9jOiBTcGFjZSkge1xyXG4gICAgICAgIGlmIChsb2MuYW5uZXhlcykge1xyXG4gICAgICAgICAgICBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlKGxvYykudGhlbigodXJsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jLmFubmV4ZXMgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRBbGxvd2VkU3BhY2VzRm9yT3JnKFxyXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXHJcbiAgICAgICAgdXNlck9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPFNwYWNlW10+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJPcmdJRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiB8fFxyXG4gICAgICAgICAgICBvcmdJRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5saXN0U3BhY2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNwYWNlc0Zvck9yZyh1c2VyT3JnSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNwYWNlc0Zvck9yZyhvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxTcGFjZVtdPiB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24ob3JnSUQpO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc3BhY2VzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnNwYWNlICYmICFwcm9wZXJ0eS5zcGFjZS5kZWxldGVkQXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGFjZXMucHVzaChwcm9wZXJ0eS5zcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHNwYWNlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlU3BhY2UodmFsdWVzOiBTcGFjZSwgbGF5ZXI/OiBMYXllcik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgbG9jID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVNwYWNlKHZhbHVlcyk7XHJcbiAgICAgICAgY29uc3Qgem9uZUlucHV0ID0ge1xyXG4gICAgICAgICAgICBuYW1lOiB2YWx1ZXMubmFtZSxcclxuICAgICAgICAgICAgc3BhY2VJRDogbG9jLmlkLFxyXG4gICAgICAgICAgICBzdXJmYWNlOiAwLFxyXG4gICAgICAgICAgICBsYXllcklEOiBsYXllciA/IGxheWVyLmlkIDogbnVsbCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIGxvYztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVTcGFjZShpbnB1dDogYW55KTogUHJvbWlzZTxTcGFjZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlU3BhY2UoaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNwYWNlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFNwYWNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRTcGFjZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TW9kZWwzREZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgY2FwdHVyZXMgPSBhd2FpdCB0aGlzLmNhcHR1cmVTZXJ2aWNlLmdldENhcHR1cmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAoY2FwdHVyZXMubGVuZ3RoID4gMCAmJiBjYXB0dXJlc1swXS5ub2Rlcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlc1swXS5ub2Rlcy5pdGVtc1swXS5tb2RlbDNEO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRBbGxvd2VkTW9kZWwzREZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgdmlzaXRzID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UuZ2V0VmlzaXRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHZpc2l0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2aXNpdHNbMF0ubW9kZWwzZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc29mdERlbGV0ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZykge1xyXG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3BhY2Uoe1xyXG4gICAgICAgICAgICBpZDogc3BhY2VJRCxcclxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5saXN0UHJvcGVydGllc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmlzU1BBZG1pbigpKSB7XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgcHJvcGVydGllc1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMubWFwKGFzeW5jIChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmRlbGV0ZVByb3BlcnR5KHByb3BlcnR5LmlkKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgYWxsIG1pc3Npb25zXHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS51cGRhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbWlzc2lvbi5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZGVsZXRlIHByb3BlcnR5IGZvciBjdXJyZW50IE9yZ1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50T3JnID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVRvRGVsZXRlID0gcHJvcGVydGllcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5vcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHByb3BlcnR5VG9EZWxldGUpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmRlbGV0ZVByb3BlcnR5KHByb3BlcnR5VG9EZWxldGUuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb25zVG9EZWxldGUgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobWlzc2lvbikgPT5cclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5vcmRlcmVkT3JnYW5pc2F0aW9uSUQgPT09IGN1cnJlbnRPcmcuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbnNUb0RlbGV0ZS5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtaXNzaW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGlja2V0cyA9IGF3YWl0IHRoaXMudGlja2V0U2VydmljZS5nZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50aWNrZXRTZXJ2aWNlLmRlbGV0ZVRpY2tldCh0aWNrZXQpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGVxdWlwcyA9IGF3YWl0IHRoaXMuZXF1aXBTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgZXF1aXBzLm1hcChhc3luYyAoZXEpID0+IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBTZXJ2aWNlLmRlbGV0ZUVxdWlwbWVudChlcSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIGZlYXR1cmVzLm1hcChhc3luYyAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBtZWFzdXJlbWVudHNcclxuICAgICAgICBjb25zdCBtZWFzdXJlcyA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgbWVhc3VyZXMubWFwKGFzeW5jIChtZWFzdXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5kZWxldGVNZWFzdXJlbWVudChtZWFzdXJlKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyByZW1vdmUgZnJvbSBsaXN0XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnNGb3JVc2VyID0gdGhpcy5sb2NhdGlvbnNGb3JVc2VyLmZpbHRlcigoc3BhY2UpID0+IHNwYWNlLmlkICE9PSBzcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uVXBkYXRlZC5uZXh0KHRoaXMubG9jYXRpb25zRm9yVXNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBjdXJyZW50IHVzZXIgY2FuIGFyY2hpdmUgYSBzcGFjZSAob25seSBpZiBoaXMgb3JnYW5pc2F0aW9uIGlzIG93bmluZyB0aGUgcHJvcGVydHkgKFByb3BlcnR5VHlwZS5QUk9QRVJUWSkpXHJcbiAgICAgKiBAcGFyYW0gc3BhY2VJRFxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY2FuQXJjaGl2ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcmcgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3Qgb3JnUHJvcGVydGllcyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3JnLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gb3JnUHJvcGVydGllcy5maW5kKFxyXG4gICAgICAgICAgICAocHJvcGVydHlfKSA9PiBwcm9wZXJ0eV8uc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSBQcm9wZXJ0eVR5cGUuUFJPUEVSVFkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,41 +1,41 @@
1
- import { Inject, Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class TemplateService {
4
- constructor(apiInjected) {
5
- this.API = apiInjected;
6
- }
7
- // --CRUD---
8
- async create(template) {
9
- return this.API.__proto__.CreateVisitTemplate(template);
10
- }
11
- async update(template) {
12
- return this.API.__proto__.UpdateVisitTemplate(template);
13
- }
14
- async detele(templateID) {
15
- return this.API.__proto__.DeleteVisitTemplate({ id: templateID });
16
- }
17
- async softDelete(templateID) {
18
- return this.update({ id: templateID, deletedAt: Date.now() });
19
- }
20
- async get(templateID) {
21
- return this.API.__proto__.GetVisitTemplate(templateID);
22
- }
23
- async getTemplatesBySpace(spaceID) {
24
- return this.API.__proto__.TemplatesBySpace(spaceID).then((response) => response.items);
25
- }
26
- async getTemplatesByZone(zoneID) {
27
- return this.API.__proto__.TemplatesByZone(zoneID).then((response) => response.items);
28
- }
29
- }
30
- TemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
31
- TemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateService, providedIn: "root" });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateService, decorators: [{
33
- type: Injectable,
34
- args: [{
35
- providedIn: "root",
36
- }]
37
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
38
- type: Inject,
39
- args: ['currentAPIService']
40
- }] }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3RlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxlQUFlO0lBR3hCLFlBQ2lDLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO0lBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUMsRUFBRSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBa0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBZTtRQUNyQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RixDQUFDOzs0R0FwQ1EsZUFBZSxrQkFJWixtQkFBbUI7Z0hBSnRCLGVBQWUsY0FGWixNQUFNOzJGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBWaXNpdFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVNlcnZpY2Uge1xuICAgIEFQSTogYW55OyAvL0FXU1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIC8vIC0tQ1JVRC0tLVxuICAgIGFzeW5jIGNyZWF0ZSh0ZW1wbGF0ZTogVmlzaXRUZW1wbGF0ZSk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVZpc2l0VGVtcGxhdGUodGVtcGxhdGUpO1xuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZSh0ZW1wbGF0ZTogYW55KTogUHJvbWlzZTxWaXNpdFRlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlVmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGV0ZWxlKHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZVZpc2l0VGVtcGxhdGUoe2lkOnRlbXBsYXRlSUR9KTtcbiAgICB9XG5cbiAgICBhc3luYyBzb2Z0RGVsZXRlKHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGUoe2lkOiB0ZW1wbGF0ZUlELCBkZWxldGVkQXQ6IERhdGUubm93KCl9KTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXQodGVtcGxhdGVJRDogc3RyaW5nKTogUHJvbWlzZTxWaXNpdFRlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0VmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZUlEKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRUZW1wbGF0ZXNCeVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVGVtcGxhdGVzQnlTcGFjZShzcGFjZUlEKS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldFRlbXBsYXRlc0J5Wm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVGVtcGxhdGVzQnlab25lKHpvbmVJRCkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zKTtcbiAgICB9XG59Il19
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class TemplateService {
4
+ constructor(apiInjected) {
5
+ this.API = apiInjected;
6
+ }
7
+ // --CRUD---
8
+ async create(template) {
9
+ return this.API.__proto__.CreateVisitTemplate(template);
10
+ }
11
+ async update(template) {
12
+ return this.API.__proto__.UpdateVisitTemplate(template);
13
+ }
14
+ async detele(templateID) {
15
+ return this.API.__proto__.DeleteVisitTemplate({ id: templateID });
16
+ }
17
+ async softDelete(templateID) {
18
+ return this.update({ id: templateID, deletedAt: Date.now() });
19
+ }
20
+ async get(templateID) {
21
+ return this.API.__proto__.GetVisitTemplate(templateID);
22
+ }
23
+ async getTemplatesBySpace(spaceID) {
24
+ return this.API.__proto__.TemplatesBySpace(spaceID).then((response) => response.items);
25
+ }
26
+ async getTemplatesByZone(zoneID) {
27
+ return this.API.__proto__.TemplatesByZone(zoneID).then((response) => response.items);
28
+ }
29
+ }
30
+ TemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ TemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateService, providedIn: "root" });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: "root",
36
+ }]
37
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
38
+ type: Inject,
39
+ args: ['currentAPIService']
40
+ }] }]; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3RlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxlQUFlO0lBR3hCLFlBQ2lDLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO0lBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUMsRUFBRSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBa0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBZTtRQUNyQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RixDQUFDOzs0R0FwQ1EsZUFBZSxrQkFJWixtQkFBbUI7Z0hBSnRCLGVBQWUsY0FGWixNQUFNOzJGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFZpc2l0VGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55XHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tQ1JVRC0tLVxyXG4gICAgYXN5bmMgY3JlYXRlKHRlbXBsYXRlOiBWaXNpdFRlbXBsYXRlKTogUHJvbWlzZTxWaXNpdFRlbXBsYXRlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVWaXNpdFRlbXBsYXRlKHRlbXBsYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGUodGVtcGxhdGU6IGFueSk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlVmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGV0ZWxlKHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlVmlzaXRUZW1wbGF0ZSh7aWQ6dGVtcGxhdGVJRH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGUodGVtcGxhdGVJRDogc3RyaW5nKTogUHJvbWlzZTxWaXNpdFRlbXBsYXRlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKHtpZDogdGVtcGxhdGVJRCwgZGVsZXRlZEF0OiBEYXRlLm5vdygpfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0VmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZUlEKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRUZW1wbGF0ZXNCeVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5UZW1wbGF0ZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0VGVtcGxhdGVzQnlab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxWaXNpdFRlbXBsYXRlW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlRlbXBsYXRlc0J5Wm9uZSh6b25lSUQpLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyk7XHJcbiAgICB9XHJcbn0iXX0=