dt-common-device 7.2.1 → 7.2.5

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 (213) hide show
  1. package/dist/admin/Admin.repository.d.ts +7 -0
  2. package/dist/admin/Admin.repository.js +182 -0
  3. package/dist/admin/Admin.service.d.ts +5 -0
  4. package/dist/admin/Admin.service.js +17 -0
  5. package/dist/admin/index.d.ts +1 -0
  6. package/dist/admin/index.js +17 -0
  7. package/dist/alerts/Alert.model.d.ts +1 -1
  8. package/dist/alerts/Alert.model.js +5 -0
  9. package/dist/alerts/Alert.repository.js +10 -0
  10. package/dist/alerts/Alert.service.d.ts +0 -7
  11. package/dist/alerts/Alert.service.js +107 -66
  12. package/dist/alerts/AlertBuilder.d.ts +5 -1
  13. package/dist/alerts/AlertBuilder.js +10 -0
  14. package/dist/alerts/alert.types.d.ts +17 -0
  15. package/dist/alerts/alert.types.js +13 -1
  16. package/dist/audit/AuditProperties.d.ts +16 -0
  17. package/dist/audit/AuditProperties.js +2 -0
  18. package/dist/chronicle/IChronicle.interface.d.ts +14 -0
  19. package/dist/chronicle/IChronicle.interface.js +2 -0
  20. package/dist/chronicle/chronicle.service.d.ts +4 -0
  21. package/dist/chronicle/chronicle.service.js +44 -0
  22. package/dist/connection/Connection.repository.d.ts +8 -0
  23. package/dist/connection/Connection.repository.js +92 -0
  24. package/dist/connection/Connection.service.d.ts +8 -0
  25. package/dist/connection/Connection.service.js +32 -0
  26. package/dist/connection/IConnection.d.ts +28 -0
  27. package/dist/connection/IConnection.js +16 -0
  28. package/dist/connection/index.d.ts +2 -0
  29. package/dist/connection/index.js +18 -0
  30. package/dist/constants/Event.d.ts +3 -1
  31. package/dist/constants/Event.js +3 -1
  32. package/dist/device/cloud/entities/CloudConnection.d.ts +6 -0
  33. package/dist/device/cloud/entities/CloudConnection.js +6 -0
  34. package/dist/device/cloud/entities/CloudDevice.d.ts +16 -0
  35. package/dist/device/cloud/entities/CloudDevice.js +26 -0
  36. package/dist/device/cloud/entities/CloudDeviceService.d.ts +5 -0
  37. package/dist/device/cloud/entities/CloudDeviceService.js +9 -0
  38. package/dist/device/cloud/entities/DeviceFactory.d.ts +7 -0
  39. package/dist/device/cloud/entities/DeviceFactory.js +80 -0
  40. package/dist/device/cloud/entities/index.d.ts +3 -0
  41. package/dist/device/cloud/entities/index.js +19 -0
  42. package/dist/device/cloud/interface.d.ts +101 -0
  43. package/dist/device/cloud/interface.js +3 -0
  44. package/dist/device/cloud/interfaces/ICloudConnection.d.ts +5 -0
  45. package/dist/device/cloud/interfaces/ICloudConnection.js +2 -0
  46. package/dist/device/cloud/interfaces/ICloudDevice.d.ts +9 -0
  47. package/dist/device/cloud/interfaces/ICloudDevice.js +2 -0
  48. package/dist/device/cloud/interfaces/ICloudDeviceService.d.ts +4 -0
  49. package/dist/device/cloud/interfaces/ICloudDeviceService.js +2 -0
  50. package/dist/device/cloud/interfaces/IConnectionService.d.ts +7 -0
  51. package/dist/device/cloud/interfaces/IConnectionService.js +2 -0
  52. package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +7 -0
  53. package/dist/device/cloud/interfaces/IDeviceConnectionService.js +3 -0
  54. package/dist/device/cloud/interfaces/IDeviceFactory.d.ts +4 -0
  55. package/dist/device/cloud/interfaces/IDeviceFactory.js +2 -0
  56. package/dist/device/cloud/interfaces/IDeviceService.d.ts +8 -0
  57. package/dist/device/cloud/interfaces/IDeviceService.js +2 -0
  58. package/dist/device/cloud/interfaces/IDevicesService.d.ts +9 -0
  59. package/dist/device/cloud/interfaces/IDevicesService.js +2 -0
  60. package/dist/device/cloud/interfaces/IHubService.d.ts +5 -0
  61. package/dist/device/cloud/interfaces/IHubService.js +2 -0
  62. package/dist/device/cloud/interfaces/IRawDataTransformer.d.ts +4 -0
  63. package/dist/device/cloud/interfaces/IRawDataTransformer.js +2 -0
  64. package/dist/device/cloud/interfaces/IRawDevice.d.ts +17 -0
  65. package/dist/device/cloud/interfaces/IRawDevice.js +11 -0
  66. package/dist/device/cloud/interfaces/index.d.ts +5 -0
  67. package/dist/device/cloud/interfaces/index.js +21 -0
  68. package/dist/device/cloud/services/CloudDevice.service.d.ts +5 -0
  69. package/dist/device/cloud/services/CloudDevice.service.js +9 -0
  70. package/dist/device/cloud/services/Connection.service.d.ts +8 -0
  71. package/dist/device/cloud/services/Connection.service.js +6 -0
  72. package/dist/device/cloud/services/Device.service.d.ts +39 -0
  73. package/dist/device/cloud/services/Device.service.js +9 -0
  74. package/dist/device/cloud/services/DeviceCloudService.d.ts +42 -0
  75. package/dist/device/cloud/services/DeviceCloudService.js +59 -0
  76. package/dist/device/cloud/services/DeviceHub.service.d.ts +3 -0
  77. package/dist/device/cloud/services/DeviceHub.service.js +6 -0
  78. package/dist/device/cloud/services/Hub.service.d.ts +25 -0
  79. package/dist/device/cloud/services/Hub.service.js +9 -0
  80. package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +38 -0
  81. package/dist/device/cloud/services/SmartThingsDeviceService.js +52 -0
  82. package/dist/device/cloud/services/index.d.ts +2 -0
  83. package/dist/device/cloud/services/index.js +18 -0
  84. package/dist/device/cloud/types.d.ts +52 -0
  85. package/dist/device/cloud/types.js +15 -0
  86. package/dist/device/index.d.ts +4 -0
  87. package/dist/device/index.js +20 -0
  88. package/dist/device/local/entities/AlertBuilder.d.ts +87 -0
  89. package/dist/device/local/entities/AlertBuilder.example.d.ts +11 -0
  90. package/dist/device/local/entities/AlertBuilder.example.js +117 -0
  91. package/dist/device/local/entities/AlertBuilder.js +179 -0
  92. package/dist/device/local/entities/IssueBuilder.d.ts +109 -0
  93. package/dist/device/local/entities/IssueBuilder.example.d.ts +16 -0
  94. package/dist/device/local/entities/IssueBuilder.example.js +196 -0
  95. package/dist/device/local/entities/IssueBuilder.js +237 -0
  96. package/dist/device/local/entities/index.d.ts +2 -0
  97. package/dist/device/local/entities/index.js +7 -0
  98. package/dist/device/local/events/EventHandler.d.ts +11 -0
  99. package/dist/device/local/events/EventHandler.js +86 -0
  100. package/dist/device/local/events/Events.d.ts +54 -0
  101. package/dist/device/local/events/Events.js +57 -0
  102. package/dist/device/local/events/index.d.ts +2 -0
  103. package/dist/device/local/events/index.js +7 -0
  104. package/dist/device/local/handler/EventHandler.d.ts +7 -0
  105. package/dist/device/local/handler/EventHandler.js +44 -0
  106. package/dist/device/local/interface.d.ts +0 -0
  107. package/dist/device/local/interface.js +1 -0
  108. package/dist/device/local/interfaces/IConnection.d.ts +26 -0
  109. package/dist/device/local/interfaces/IConnection.js +14 -0
  110. package/dist/device/local/interfaces/IDevice.d.ts +68 -0
  111. package/dist/device/local/interfaces/IDevice.js +10 -0
  112. package/dist/device/local/interfaces/IDtDevice.d.ts +16 -0
  113. package/dist/device/local/interfaces/IDtDevice.js +2 -0
  114. package/dist/device/local/interfaces/IHub.d.ts +46 -0
  115. package/dist/device/local/interfaces/IHub.js +2 -0
  116. package/dist/device/local/interfaces/IProperty.d.ts +29 -0
  117. package/dist/device/local/interfaces/IProperty.js +2 -0
  118. package/dist/device/local/interfaces/ISchedule.d.ts +25 -0
  119. package/dist/device/local/interfaces/ISchedule.js +2 -0
  120. package/dist/device/local/interfaces/index.d.ts +3 -0
  121. package/dist/device/local/interfaces/index.js +19 -0
  122. package/dist/device/local/models/Alert.model.d.ts +28 -0
  123. package/dist/device/local/models/Alert.model.js +222 -0
  124. package/dist/device/local/models/Issue.model.d.ts +28 -0
  125. package/dist/device/local/models/Issue.model.js +260 -0
  126. package/dist/device/local/repository/Alert.repository.d.ts +106 -0
  127. package/dist/device/local/repository/Alert.repository.js +374 -0
  128. package/dist/device/local/repository/Connection.repository.d.ts +8 -0
  129. package/dist/device/local/repository/Connection.repository.js +92 -0
  130. package/dist/device/local/repository/Device.repository.d.ts +30 -0
  131. package/dist/device/local/repository/Device.repository.js +325 -0
  132. package/dist/device/local/repository/Hub.repository.d.ts +13 -0
  133. package/dist/device/local/repository/Hub.repository.js +139 -0
  134. package/dist/device/local/repository/Issue.repository.d.ts +113 -0
  135. package/dist/device/local/repository/Issue.repository.js +401 -0
  136. package/dist/device/local/repository/Property.repository.d.ts +8 -0
  137. package/dist/device/local/repository/Property.repository.js +95 -0
  138. package/dist/device/local/repository/Schedule.repository.d.ts +9 -0
  139. package/dist/device/local/repository/Schedule.repository.js +109 -0
  140. package/dist/device/local/services/Alert.service.d.ts +137 -0
  141. package/dist/device/local/services/Alert.service.js +475 -0
  142. package/dist/device/local/services/AlertService.example.d.ts +55 -0
  143. package/dist/device/local/services/AlertService.example.js +148 -0
  144. package/dist/device/local/services/Connection.service.d.ts +8 -0
  145. package/dist/device/local/services/Connection.service.js +32 -0
  146. package/dist/device/local/services/Device.service.d.ts +40 -0
  147. package/dist/device/local/services/Device.service.js +391 -0
  148. package/dist/device/local/services/DeviceHub.service.d.ts +11 -0
  149. package/dist/device/local/services/DeviceHub.service.js +40 -0
  150. package/dist/device/local/services/Hub.service.d.ts +12 -0
  151. package/dist/device/local/services/Hub.service.js +107 -0
  152. package/dist/device/local/services/Issue.service.d.ts +168 -0
  153. package/dist/device/local/services/Issue.service.js +642 -0
  154. package/dist/device/local/services/IssueService.example.d.ts +68 -0
  155. package/dist/device/local/services/IssueService.example.js +177 -0
  156. package/dist/device/local/services/Property.service.d.ts +8 -0
  157. package/dist/device/local/services/Property.service.js +36 -0
  158. package/dist/device/local/services/Schedule.service.d.ts +9 -0
  159. package/dist/device/local/services/Schedule.service.js +26 -0
  160. package/dist/device/local/services/index.d.ts +3 -0
  161. package/dist/device/local/services/index.js +19 -0
  162. package/dist/entities/accessGroup/AccessGroup.repository.d.ts +1 -2
  163. package/dist/entities/accessGroup/AccessGroup.repository.js +1 -4
  164. package/dist/entities/accessGroup/AccessGroup.service.d.ts +1 -2
  165. package/dist/entities/accessGroup/AccessGroup.service.js +3 -4
  166. package/dist/entities/device/local/services/Device.service.d.ts +1 -0
  167. package/dist/entities/device/local/services/Device.service.js +43 -10
  168. package/dist/entities/guest/Guest.repository.d.ts +1 -1
  169. package/dist/entities/guest/Guest.repository.js +2 -5
  170. package/dist/entities/guest/Guest.service.d.ts +1 -1
  171. package/dist/entities/guest/Guest.service.js +1 -4
  172. package/dist/entities/schedules/Schedule.repository.d.ts +1 -1
  173. package/dist/entities/schedules/Schedule.repository.js +2 -5
  174. package/dist/entities/schedules/Schedule.service.d.ts +1 -1
  175. package/dist/entities/schedules/Schedule.service.js +1 -4
  176. package/dist/entities/user/User.repository.js +1 -4
  177. package/dist/entities/user/User.service.d.ts +1 -1
  178. package/dist/entities/user/User.service.js +1 -4
  179. package/dist/entities/zone/Zone.service.js +1 -4
  180. package/dist/events/DeviceEventHandler.js +1 -1
  181. package/dist/events/EventHandler.d.ts +1 -0
  182. package/dist/events/EventHandler.js +10 -0
  183. package/dist/issues/Issue.model.d.ts +1 -1
  184. package/dist/issues/Issue.repository.js +12 -0
  185. package/dist/issues/Issue.service.d.ts +0 -1
  186. package/dist/issues/Issue.service.js +40 -16
  187. package/dist/issues/issue.types.d.ts +3 -10
  188. package/dist/issues/issue.types.js +0 -9
  189. package/dist/pms/IPms.d.ts +6 -0
  190. package/dist/pms/IPms.js +10 -0
  191. package/dist/pms/index.d.ts +1 -0
  192. package/dist/pms/index.js +17 -0
  193. package/dist/property/IProperty.d.ts +29 -0
  194. package/dist/property/IProperty.js +2 -0
  195. package/dist/property/Property.repository.d.ts +8 -0
  196. package/dist/property/Property.repository.js +109 -0
  197. package/dist/property/Property.service.d.ts +8 -0
  198. package/dist/property/Property.service.js +124 -0
  199. package/dist/property/index.d.ts +2 -0
  200. package/dist/property/index.js +18 -0
  201. package/dist/queue/interfaces/IHttpRequestJob.d.ts +9 -0
  202. package/dist/queue/interfaces/IHttpRequestJob.js +2 -0
  203. package/dist/types/alert.types.d.ts +57 -0
  204. package/dist/types/alert.types.js +22 -0
  205. package/dist/types/config.types.d.ts +19 -0
  206. package/dist/types/config.types.js +2 -0
  207. package/dist/types/index.d.ts +3 -0
  208. package/dist/types/index.js +19 -0
  209. package/dist/types/issue.types.d.ts +90 -0
  210. package/dist/types/issue.types.js +40 -0
  211. package/dist/utils/http-utils.d.ts +13 -0
  212. package/dist/utils/http-utils.js +117 -0
  213. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ export declare class AdminRepository {
2
+ private readonly axiosInstance;
3
+ private readonly deviceRepository;
4
+ private readonly postgres;
5
+ constructor();
6
+ getZonesByAccessGroupIds(accessGroupIds: string[]): Promise<any[]>;
7
+ }
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
19
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
20
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
21
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
22
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
23
+ var _, done = false;
24
+ for (var i = decorators.length - 1; i >= 0; i--) {
25
+ var context = {};
26
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
27
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
28
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
29
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
30
+ if (kind === "accessor") {
31
+ if (result === void 0) continue;
32
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
33
+ if (_ = accept(result.get)) descriptor.get = _;
34
+ if (_ = accept(result.set)) descriptor.set = _;
35
+ if (_ = accept(result.init)) initializers.unshift(_);
36
+ }
37
+ else if (_ = accept(result)) {
38
+ if (kind === "field") initializers.unshift(_);
39
+ else descriptor[key] = _;
40
+ }
41
+ }
42
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
43
+ done = true;
44
+ };
45
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
46
+ var useValue = arguments.length > 2;
47
+ for (var i = 0; i < initializers.length; i++) {
48
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
49
+ }
50
+ return useValue ? value : void 0;
51
+ };
52
+ var __importStar = (this && this.__importStar) || (function () {
53
+ var ownKeys = function(o) {
54
+ ownKeys = Object.getOwnPropertyNames || function (o) {
55
+ var ar = [];
56
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
57
+ return ar;
58
+ };
59
+ return ownKeys(o);
60
+ };
61
+ return function (mod) {
62
+ if (mod && mod.__esModule) return mod;
63
+ var result = {};
64
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
65
+ __setModuleDefault(result, mod);
66
+ return result;
67
+ };
68
+ })();
69
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
70
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
71
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
72
+ };
73
+ Object.defineProperty(exports, "__esModule", { value: true });
74
+ exports.AdminRepository = void 0;
75
+ const typedi_1 = __importStar(require("typedi"));
76
+ const utils_1 = require("../utils");
77
+ const Device_repository_1 = require("../device/local/repository/Device.repository");
78
+ const db_1 = require("../db/db");
79
+ const interfaces_1 = require("../device/cloud/interfaces");
80
+ let AdminRepository = (() => {
81
+ let _classDecorators = [(0, typedi_1.Service)()];
82
+ let _classDescriptor;
83
+ let _classExtraInitializers = [];
84
+ let _classThis;
85
+ var AdminRepository = _classThis = class {
86
+ constructor() {
87
+ this.axiosInstance = (0, utils_1.getCloudServiceAxiosInstance)();
88
+ this.deviceRepository = typedi_1.default.get(Device_repository_1.DeviceRepository);
89
+ this.postgres = (0, db_1.getPostgresClient)();
90
+ }
91
+ async getZonesByAccessGroupIds(accessGroupIds) {
92
+ const result = await this.postgres.query(`SELECT "zc".*, "z"."id", "z"."name"
93
+ FROM "dt_zones_collection_map" "zc"
94
+ INNER JOIN "dt_zones" "z" ON "zc"."zoneId" = "z"."id"
95
+ WHERE "zc"."collectionId" = ANY($1)`, [accessGroupIds]);
96
+ const response = result.rows;
97
+ const _zones = (nestedZones, allzones = []) => {
98
+ nestedZones.forEach((z) => {
99
+ const onlyZone = { ...z };
100
+ delete onlyZone.childZones;
101
+ allzones.push(onlyZone);
102
+ if (!Array.isArray(z.childZones)) {
103
+ if (z.childZones.id)
104
+ z.childZones = [z.childZones];
105
+ }
106
+ if (z.childZones.length) {
107
+ _zones(z.childZones, allzones);
108
+ }
109
+ });
110
+ return allzones.map((e) => e.id);
111
+ };
112
+ // const zones = _zones(response);
113
+ const zoneIds = response.map((el) => el.id);
114
+ const collectionZone = [];
115
+ for (let i = 0; i < response.length; i++) {
116
+ let zoneIds = [];
117
+ const zones = await this.axiosInstance.get(`/zones/child?zoneId=${response[i].zoneId}`);
118
+ zoneIds.push(response[i].zoneId);
119
+ if (zones.childZones?.length > 0) {
120
+ const nestedZoneIds = new Set(_zones(zones.childZones));
121
+ zoneIds = [...zoneIds, ...nestedZoneIds];
122
+ }
123
+ if (collectionZone.length == 0) {
124
+ const obj = {
125
+ collectionId: response[i].collectionId,
126
+ zoneIds,
127
+ };
128
+ collectionZone.push(obj);
129
+ }
130
+ else {
131
+ const obj = collectionZone.find((e) => e.collectionId == response[i].collectionId);
132
+ if (obj) {
133
+ obj.zoneIds = [...obj.zoneIds, ...zoneIds];
134
+ }
135
+ else {
136
+ collectionZone.push({
137
+ collectionId: response[i].collectionId,
138
+ zoneIds,
139
+ });
140
+ }
141
+ }
142
+ }
143
+ let _zoneIds = collectionZone.flatMap((e) => {
144
+ return e.zoneIds.map((z) => z);
145
+ });
146
+ if (_zoneIds.length === 0)
147
+ return [];
148
+ const deviecDetail = await this.deviceRepository.queryDevices({
149
+ zoneIds: _zoneIds,
150
+ excludeDeviceType: interfaces_1.DeviceType.HUB
151
+ });
152
+ const _collectionZone = collectionZone.map((e) => {
153
+ const zones = e.zoneIds;
154
+ let devices = [];
155
+ zones.forEach((element) => {
156
+ const device = deviecDetail.filter((d) => d.zoneId == element);
157
+ // Add collectionId to each device
158
+ device.forEach((dev) => {
159
+ dev.collectionId = e.collectionId;
160
+ });
161
+ const _devices = devices.concat(device);
162
+ devices = _devices;
163
+ });
164
+ e.devices = devices;
165
+ e.parentZone = response;
166
+ return e;
167
+ });
168
+ const collectionZoneDevices = Array.from(new Set(_collectionZone));
169
+ return collectionZoneDevices;
170
+ }
171
+ };
172
+ __setFunctionName(_classThis, "AdminRepository");
173
+ (() => {
174
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
175
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
176
+ AdminRepository = _classThis = _classDescriptor.value;
177
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
178
+ __runInitializers(_classThis, _classExtraInitializers);
179
+ })();
180
+ return AdminRepository = _classThis;
181
+ })();
182
+ exports.AdminRepository = AdminRepository;
@@ -0,0 +1,5 @@
1
+ export declare class AdminService {
2
+ private readonly adminRepository;
3
+ constructor();
4
+ getZonesByAccessGroupIds(accessGroupIds: string[]): Promise<any[]>;
5
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AdminService = void 0;
7
+ const typedi_1 = __importDefault(require("typedi"));
8
+ const Admin_repository_1 = require("./Admin.repository");
9
+ class AdminService {
10
+ constructor() {
11
+ this.adminRepository = typedi_1.default.get(Admin_repository_1.AdminRepository);
12
+ }
13
+ async getZonesByAccessGroupIds(accessGroupIds) {
14
+ return await this.adminRepository.getZonesByAccessGroupIds(accessGroupIds);
15
+ }
16
+ }
17
+ exports.AdminService = AdminService;
@@ -0,0 +1 @@
1
+ export * from "./Admin.service";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Admin.service"), exports);
@@ -13,7 +13,7 @@ interface IAlertModel extends Model<IAlertDocument, {}, IAlertMethods> {
13
13
  findSnoozed(includeDeleted?: boolean): Promise<IAlertDocument[]>;
14
14
  findExpiredSnooze(includeDeleted?: boolean): Promise<IAlertDocument[]>;
15
15
  }
16
- declare const AlertSchema: mongoose.Schema<IAlertDocument, IAlertModel, IAlertMethods, {}, {}, {}, mongoose.DefaultSchemaOptions, IAlertDocument, mongoose.Document<unknown, {}, mongoose.FlatRecord<IAlertDocument>, {}, mongoose.ResolveSchemaOptions<mongoose.DefaultSchemaOptions>> & Omit<mongoose.FlatRecord<IAlertDocument> & Required<{
16
+ declare const AlertSchema: mongoose.Schema<IAlertDocument, IAlertModel, IAlertMethods, {}, {}, {}, mongoose.DefaultSchemaOptions, IAlertDocument, mongoose.Document<unknown, {}, mongoose.FlatRecord<IAlertDocument>, {}> & Omit<mongoose.FlatRecord<IAlertDocument> & Required<{
17
17
  _id: string;
18
18
  }> & {
19
19
  __v: number;
@@ -79,6 +79,11 @@ const AlertSchema = new mongoose_1.Schema({
79
79
  enum: Object.values(alert_types_1.AlertSeverity),
80
80
  default: alert_types_1.AlertSeverity.LOW,
81
81
  },
82
+ type: {
83
+ type: String,
84
+ enum: Object.values(alert_types_1.AlertType),
85
+ required: true,
86
+ },
82
87
  isRead: {
83
88
  type: Boolean,
84
89
  default: false,
@@ -68,6 +68,16 @@ let AlertRepository = (() => {
68
68
  query.isRead = filters.isRead;
69
69
  if (!filters.includeDeleted)
70
70
  query.isDeleted = false;
71
+ if (filters.type)
72
+ query.type = filters.type;
73
+ // Date filtering
74
+ if (filters.startDate || filters.endDate) {
75
+ query.createdAt = {};
76
+ if (filters.startDate)
77
+ query.createdAt.$gte = filters.startDate;
78
+ if (filters.endDate)
79
+ query.createdAt.$lte = filters.endDate;
80
+ }
71
81
  return query;
72
82
  }
73
83
  /**
@@ -1,8 +1,6 @@
1
1
  import { IAlertDocument } from "./Alert.model";
2
2
  import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, IAlertQuery } from "./alert.types";
3
- import { Source } from "../constants/Service";
4
3
  import { AlertBuilder } from "./AlertBuilder";
5
- import { IDevice } from "../entities/device/local/interfaces";
6
4
  export declare class AlertService {
7
5
  private readonly alertRepository;
8
6
  constructor();
@@ -21,7 +19,6 @@ export declare class AlertService {
21
19
  /**
22
20
  * Create a device-specific alert using AlertBuilder
23
21
  */
24
- raiseDeviceAlert(data: CreateAlertData): Promise<IAlertDocument>;
25
22
  /**
26
23
  * Create a hub-specific alert using AlertBuilder
27
24
  */
@@ -29,19 +26,15 @@ export declare class AlertService {
29
26
  /**
30
27
  * Raise alert for device going offline (OPERATIONAL only)
31
28
  */
32
- raiseDeviceOfflineAlert(device: IDevice, source: Source, reason?: string): Promise<IAlertDocument>;
33
29
  /**
34
30
  * Raise alert for device coming online (OPERATIONAL only)
35
31
  */
36
- raiseDeviceOnlineAlert(device: IDevice, source: Source, reason?: string): Promise<IAlertDocument>;
37
32
  /**
38
33
  * Raise alert for device battery level below threshold (READINESS + OPERATIONAL + ENERGY)
39
34
  */
40
- raiseDeviceBatteryAlert(device: IDevice, batteryLevel: number, threshold: number, source: Source): Promise<IAlertDocument>;
41
35
  /**
42
36
  * Raise alert for device issue (jammed or malfunctioned) (READINESS + OPERATIONAL)
43
37
  */
44
- raiseDeviceIssueAlert(device: IDevice, issueType: string, source: Source, reason?: string): Promise<IAlertDocument>;
45
38
  /**
46
39
  * Create a new alert with business logic validation
47
40
  * Accepts either a CreateAlertData object or an AlertBuilder instance
@@ -140,18 +140,20 @@ let AlertService = (() => {
140
140
  /**
141
141
  * Create a device-specific alert using AlertBuilder
142
142
  */
143
- async raiseDeviceAlert(data) {
144
- const alertBuilder = AlertBuilder_1.AlertBuilder.createDeviceAlert(data.entityId || "", data.propertyId, data.zoneId)
145
- .setTitle(data.title)
146
- .setDescription(data.description);
147
- if (data.category)
148
- alertBuilder.setCategory(data.category);
149
- if (data.severity)
150
- alertBuilder.setSeverity(data.severity);
151
- if (data.createdBy)
152
- alertBuilder.setCreatedBy(data.createdBy);
153
- return await this.createAlert(alertBuilder);
154
- }
143
+ // async raiseDeviceAlert(data: CreateAlertData): Promise<IAlertDocument> {
144
+ // const alertBuilder = AlertBuilder.createDeviceAlert(
145
+ // data.entityId || "",
146
+ // data.propertyId,
147
+ // data.zoneId
148
+ // )
149
+ // .setTitle(data.title)
150
+ // .setDescription(data.description);
151
+ // if (data.category) alertBuilder.setCategory(data.category);
152
+ // if (data.severity) alertBuilder.setSeverity(data.severity);
153
+ // if (data.type) alertBuilder.setType(data.type);
154
+ // if (data.createdBy) alertBuilder.setCreatedBy(data.createdBy);
155
+ // return await this.createAlert(alertBuilder);
156
+ // }
155
157
  /**
156
158
  * Create a hub-specific alert using AlertBuilder
157
159
  */
@@ -163,6 +165,8 @@ let AlertService = (() => {
163
165
  alertBuilder.setCategory(data.category);
164
166
  if (data.severity)
165
167
  alertBuilder.setSeverity(data.severity);
168
+ if (data.type)
169
+ alertBuilder.setType(data.type);
166
170
  if (data.createdBy)
167
171
  alertBuilder.setCreatedBy(data.createdBy);
168
172
  return await this.createAlert(alertBuilder);
@@ -170,67 +174,95 @@ let AlertService = (() => {
170
174
  /**
171
175
  * Raise alert for device going offline (OPERATIONAL only)
172
176
  */
173
- async raiseDeviceOfflineAlert(device, source, reason) {
174
- return await this.raiseDeviceAlert({
175
- entityId: device.deviceId,
176
- propertyId: device.propertyId,
177
- zoneId: device.zoneId,
178
- title: "Device Offline",
179
- description: `Device ${device.name} has gone offline. ${reason ? `Reason: ${reason}` : ""}`,
180
- category: alert_types_1.AlertCategory.OPERATIONS,
181
- severity: alert_types_1.AlertSeverity.HIGH,
182
- createdBy: source,
183
- entityType: alert_types_1.EntityType.DEVICE,
184
- });
185
- }
177
+ // async raiseDeviceOfflineAlert(
178
+ // device: IDevice,
179
+ // source: Source,
180
+ // reason?: string
181
+ // ): Promise<IAlertDocument> {
182
+ // return await this.raiseDeviceAlert({
183
+ // entityId: device.deviceId,
184
+ // propertyId: device.propertyId,
185
+ // zoneId: device.zoneId,
186
+ // title: "Device Offline",
187
+ // description: `Device ${device.name} has gone offline. ${
188
+ // reason ? `Reason: ${reason}` : ""
189
+ // }`,
190
+ // category: AlertCategory.OPERATIONS,
191
+ // severity: AlertSeverity.HIGH,
192
+ // createdBy: source,
193
+ // entityType: EntityType.DEVICE,
194
+ // type: AlertType.DEVICE_OFFLINE, // Using a relevant type for device offline
195
+ // });
196
+ // }
186
197
  /**
187
198
  * Raise alert for device coming online (OPERATIONAL only)
188
199
  */
189
- async raiseDeviceOnlineAlert(device, source, reason) {
190
- return await this.raiseDeviceAlert({
191
- entityId: device.deviceId,
192
- propertyId: device.propertyId,
193
- zoneId: device.zoneId,
194
- title: "Device Online",
195
- description: `Device ${device.name} is now online. ${reason ? `Reason: ${reason}` : ""}`,
196
- category: alert_types_1.AlertCategory.OPERATIONS,
197
- severity: alert_types_1.AlertSeverity.INFO,
198
- createdBy: source,
199
- entityType: alert_types_1.EntityType.DEVICE,
200
- });
201
- }
200
+ // async raiseDeviceOnlineAlert(
201
+ // device: IDevice,
202
+ // source: Source,
203
+ // reason?: string
204
+ // ): Promise<IAlertDocument> {
205
+ // return await this.raiseDeviceAlert({
206
+ // entityId: device.deviceId,
207
+ // propertyId: device.propertyId,
208
+ // zoneId: device.zoneId,
209
+ // title: "Device Online",
210
+ // description: `Device ${device.name} is now online. ${
211
+ // reason ? `Reason: ${reason}` : ""
212
+ // }`,
213
+ // category: AlertCategory.OPERATIONS,
214
+ // severity: AlertSeverity.INFO,
215
+ // createdBy: source,
216
+ // entityType: EntityType.DEVICE,
217
+ // type: AlertType.DEVICE_ONLINE,
218
+ // });
219
+ // }
202
220
  /**
203
221
  * Raise alert for device battery level below threshold (READINESS + OPERATIONAL + ENERGY)
204
222
  */
205
- async raiseDeviceBatteryAlert(device, batteryLevel, threshold, source) {
206
- return await this.raiseDeviceAlert({
207
- entityId: device.deviceId,
208
- propertyId: device.propertyId,
209
- zoneId: device.zoneId,
210
- title: "Device Battery Low",
211
- description: `Device ${device.name} (${device.deviceId}) battery level is ${batteryLevel}%, which is below the property threshold of ${threshold}%.`,
212
- category: alert_types_1.AlertCategory.ENERGY,
213
- severity: alert_types_1.AlertSeverity.HIGH,
214
- createdBy: source,
215
- entityType: alert_types_1.EntityType.DEVICE,
216
- });
217
- }
223
+ // async raiseDeviceBatteryAlert(
224
+ // device: IDevice,
225
+ // batteryLevel: number,
226
+ // threshold: number,
227
+ // source: Source
228
+ // ): Promise<IAlertDocument> {
229
+ // return await this.raiseDeviceAlert({
230
+ // entityId: device.deviceId,
231
+ // propertyId: device.propertyId,
232
+ // zoneId: device.zoneId,
233
+ // title: "Device Battery Low",
234
+ // description: `Device ${device.name} (${device.deviceId}) battery level is ${batteryLevel}%, which is below the property threshold of ${threshold}%.`,
235
+ // category: AlertCategory.ENERGY,
236
+ // severity: AlertSeverity.HIGH,
237
+ // createdBy: source,
238
+ // entityType: EntityType.DEVICE,
239
+ // type: AlertType.DEVICE_BATTERY_LOW,
240
+ // });
241
+ // }
218
242
  /**
219
243
  * Raise alert for device issue (jammed or malfunctioned) (READINESS + OPERATIONAL)
220
244
  */
221
- async raiseDeviceIssueAlert(device, issueType, source, reason) {
222
- return await this.raiseDeviceAlert({
223
- entityId: device.deviceId,
224
- propertyId: device.propertyId,
225
- zoneId: device.zoneId,
226
- title: `Device Issue - ${issueType}`,
227
- description: `Device ${device.name} has an issue: ${issueType}. ${reason ? `Reason: ${reason}` : ""}`,
228
- category: alert_types_1.AlertCategory.OPERATIONS,
229
- severity: alert_types_1.AlertSeverity.HIGH,
230
- createdBy: source,
231
- entityType: alert_types_1.EntityType.DEVICE,
232
- });
233
- }
245
+ // async raiseDeviceIssueAlert(
246
+ // device: IDevice,
247
+ // issueType: string,
248
+ // source: Source,
249
+ // reason?: string
250
+ // ): Promise<IAlertDocument> {
251
+ // return await this.raiseDeviceAlert({
252
+ // entityId: device.deviceId,
253
+ // propertyId: device.propertyId,
254
+ // zoneId: device.zoneId,
255
+ // title: `Device Issue - ${issueType}`,
256
+ // description: `Device ${device.name} has an issue: ${issueType}. ${
257
+ // reason ? `Reason: ${reason}` : ""
258
+ // }`,
259
+ // category: AlertCategory.OPERATIONS,
260
+ // severity: AlertSeverity.HIGH,
261
+ // createdBy: source,
262
+ // entityType: EntityType.DEVICE,
263
+ // type: AlertType.DEVICE_ISSUE,
264
+ // });
265
+ // }
234
266
  /**
235
267
  * Create a new alert with business logic validation
236
268
  * Accepts either a CreateAlertData object or an AlertBuilder instance
@@ -248,7 +280,7 @@ let AlertService = (() => {
248
280
  this.validateAlertData(processedAlertData);
249
281
  // Business logic: Set default severity if not provided
250
282
  if (!processedAlertData.severity) {
251
- processedAlertData.severity = this.determineDefaultSeverity(processedAlertData.category);
283
+ processedAlertData.severity = this.determineDefaultSeverity(processedAlertData.category, processedAlertData.type);
252
284
  }
253
285
  // Business logic: Validate snooze date is in the future
254
286
  if (processedAlertData.snoozeUntil &&
@@ -536,6 +568,9 @@ let AlertService = (() => {
536
568
  if (!data.entityType) {
537
569
  throw new Error("Entity type is required");
538
570
  }
571
+ if (!data.type) {
572
+ throw new Error("Alert type is required");
573
+ }
539
574
  }
540
575
  validateFilters(filters) {
541
576
  if (filters.limit && (filters.limit < 1 || filters.limit > 100)) {
@@ -544,6 +579,12 @@ let AlertService = (() => {
544
579
  if (filters.skip && filters.skip < 0) {
545
580
  throw new Error("Skip must be non-negative");
546
581
  }
582
+ // Validate date filters
583
+ if (filters.startDate &&
584
+ filters.endDate &&
585
+ filters.startDate > filters.endDate) {
586
+ throw new Error("Start date must be before or equal to end date");
587
+ }
547
588
  }
548
589
  validateUpdateData(data) {
549
590
  if (data.title && data.title.trim().length < 3) {
@@ -558,7 +599,7 @@ let AlertService = (() => {
558
599
  throw new Error("Snooze date must be in the future");
559
600
  }
560
601
  }
561
- determineDefaultSeverity(category) {
602
+ determineDefaultSeverity(category, type) {
562
603
  // Business logic: Determine default severity based on category
563
604
  const categorySeverities = {
564
605
  [alert_types_1.AlertCategory.OPERATIONS]: alert_types_1.AlertSeverity.HIGH,
@@ -1,4 +1,4 @@
1
- import { CreateAlertData, AlertCategory, AlertSeverity, EntityType } from "./alert.types";
1
+ import { CreateAlertData, AlertCategory, AlertSeverity, EntityType, AlertType } from "./alert.types";
2
2
  /**
3
3
  * AlertBuilder - A builder pattern implementation for constructing CreateAlertData objects
4
4
  *
@@ -52,6 +52,10 @@ export declare class AlertBuilder {
52
52
  * Sets the alert severity (optional, defaults to LOW)
53
53
  */
54
54
  setSeverity(severity?: AlertSeverity): this;
55
+ /**
56
+ * Sets the alert type (optional)
57
+ */
58
+ setType(type?: AlertType): this;
55
59
  /**
56
60
  * Sets the user who created the alert (optional)
57
61
  */
@@ -97,6 +97,15 @@ class AlertBuilder {
97
97
  }
98
98
  return this;
99
99
  }
100
+ /**
101
+ * Sets the alert type (optional)
102
+ */
103
+ setType(type) {
104
+ if (type !== undefined) {
105
+ this.data.type = type;
106
+ }
107
+ return this;
108
+ }
100
109
  /**
101
110
  * Sets the user who created the alert (optional)
102
111
  */
@@ -127,6 +136,7 @@ class AlertBuilder {
127
136
  "description",
128
137
  "entityType",
129
138
  "entityId",
139
+ "type",
130
140
  ];
131
141
  const missingFields = requiredFields.filter((field) => !this.data[field]);
132
142
  if (missingFields.length > 0) {
@@ -11,11 +11,23 @@ export declare enum AlertSeverity {
11
11
  HIGH = "HIGH",
12
12
  CRITICAL = "CRITICAL"
13
13
  }
14
+ export declare enum AlertType {
15
+ ACCOUNT_NEW_DEVICE = "ACCOUNT_NEW_DEVICE",
16
+ DEVICE_TAMPER_ATTEMPT = "DEVICE_TAMPER_ATTEMPT",
17
+ DOOR_LEFT_OPEN = "DOOR_LEFT_OPEN",
18
+ DOOR_OPEN_FREQUENT = "DOOR_OPEN_FREQUENT",
19
+ DOOR_OPEN_OUTSIDE_BIZ_HOURS = "DOOR_OPEN_OUTSIDE_BIZ_HOURS",
20
+ LOCK_ACCESS_EMERGENCY_CODE = "LOCK_ACCESS_EMERGENCY_CODE",
21
+ LOCK_ACCESS_MASTER_CODE = "LOCK_ACCESS_MASTER_CODE",
22
+ SPECIFIC_DOOR_ACCESS = "SPECIFIC_DOOR_ACCESS",
23
+ GUEST_LOCK_FIRST_ACCESS = "GUEST_LOCK_FIRST_ACCESS"
24
+ }
14
25
  export interface AlertDocument {
15
26
  _id: string;
16
27
  category: AlertCategory;
17
28
  propertyId: string;
18
29
  zoneId: string;
30
+ type: AlertType;
19
31
  title: string;
20
32
  description: string;
21
33
  entityId?: string;
@@ -39,6 +51,7 @@ export interface CreateAlertData {
39
51
  entityId?: string;
40
52
  entityType: EntityType;
41
53
  severity?: AlertSeverity;
54
+ type?: AlertType;
42
55
  createdBy?: string;
43
56
  snoozeUntil?: Date;
44
57
  }
@@ -49,6 +62,7 @@ export interface UpdateAlertData {
49
62
  entityId?: string;
50
63
  entityType?: EntityType;
51
64
  severity?: AlertSeverity;
65
+ type?: AlertType;
52
66
  isRead?: boolean;
53
67
  isActive?: boolean;
54
68
  snoozeUntil?: Date;
@@ -61,9 +75,12 @@ export interface IAlertQuery {
61
75
  severity?: AlertSeverity;
62
76
  entityType?: EntityType;
63
77
  entityId?: string;
78
+ type?: AlertType;
64
79
  isActive?: boolean;
65
80
  isRead?: boolean;
66
81
  includeDeleted?: boolean;
82
+ startDate?: Date;
83
+ endDate?: Date;
67
84
  sort?: {
68
85
  [key: string]: 1 | -1;
69
86
  };