dt-common-device 7.1.13 → 7.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alerts/Alert.model.d.ts +1 -1
- package/dist/alerts/Alert.service.d.ts +6 -10
- package/dist/alerts/Alert.service.js +97 -75
- package/dist/alerts/AlertBuilder.d.ts +0 -4
- package/dist/alerts/AlertBuilder.js +0 -8
- package/dist/alerts/alert.types.d.ts +0 -1
- package/dist/alerts/alert.types.js +0 -1
- package/dist/audit/IAuditProperties.d.ts +3 -1
- package/dist/audit/IAuditProperties.js +2 -0
- package/dist/config/config.js +3 -0
- package/dist/config/constants.js +2 -1
- package/dist/constants/Event.d.ts +30 -0
- package/dist/constants/Event.js +30 -0
- package/dist/db/db.js +2 -2
- package/dist/entities/accessGroup/AccessGroup.repository.d.ts +2 -1
- package/dist/entities/accessGroup/AccessGroup.repository.js +4 -1
- package/dist/entities/accessGroup/AccessGroup.service.d.ts +2 -1
- package/dist/entities/accessGroup/AccessGroup.service.js +4 -3
- package/dist/entities/admin/Admin.repository.d.ts +1 -0
- package/dist/entities/admin/Admin.repository.js +32 -0
- package/dist/entities/admin/Admin.service.d.ts +2 -0
- package/dist/entities/admin/Admin.service.js +14 -0
- package/dist/entities/device/local/services/Device.service.js +2 -1
- package/dist/entities/guest/Guest.repository.d.ts +1 -1
- package/dist/entities/guest/Guest.repository.js +5 -2
- package/dist/entities/guest/Guest.service.d.ts +1 -1
- package/dist/entities/guest/Guest.service.js +4 -1
- package/dist/entities/schedules/Schedule.repository.d.ts +1 -1
- package/dist/entities/schedules/Schedule.repository.js +5 -2
- package/dist/entities/schedules/Schedule.service.d.ts +1 -1
- package/dist/entities/schedules/Schedule.service.js +4 -1
- package/dist/entities/user/User.repository.js +4 -1
- package/dist/entities/user/User.service.d.ts +1 -1
- package/dist/entities/user/User.service.js +4 -1
- package/dist/entities/zone/Zone.service.js +4 -1
- package/dist/issues/Issue.model.d.ts +1 -1
- package/dist/issues/Issue.model.js +4 -0
- package/dist/issues/Issue.service.d.ts +19 -18
- package/dist/issues/Issue.service.js +190 -48
- package/dist/issues/IssueBuilder.d.ts +0 -4
- package/dist/issues/IssueBuilder.js +1 -9
- package/dist/issues/issue.types.d.ts +4 -1
- package/dist/issues/issue.types.js +0 -1
- package/package.json +1 -1
- package/dist/admin/Admin.repository.d.ts +0 -7
- package/dist/admin/Admin.repository.js +0 -182
- package/dist/admin/Admin.service.d.ts +0 -5
- package/dist/admin/Admin.service.js +0 -17
- package/dist/admin/index.d.ts +0 -1
- package/dist/admin/index.js +0 -17
- package/dist/audit/AuditProperties.d.ts +0 -16
- package/dist/audit/AuditProperties.js +0 -2
- package/dist/chronicle/IChronicle.interface.d.ts +0 -14
- package/dist/chronicle/IChronicle.interface.js +0 -2
- package/dist/chronicle/chronicle.service.d.ts +0 -4
- package/dist/chronicle/chronicle.service.js +0 -44
- package/dist/connection/Connection.repository.d.ts +0 -8
- package/dist/connection/Connection.repository.js +0 -92
- package/dist/connection/Connection.service.d.ts +0 -8
- package/dist/connection/Connection.service.js +0 -32
- package/dist/connection/IConnection.d.ts +0 -28
- package/dist/connection/IConnection.js +0 -16
- package/dist/connection/index.d.ts +0 -2
- package/dist/connection/index.js +0 -18
- package/dist/device/cloud/entities/CloudConnection.d.ts +0 -6
- package/dist/device/cloud/entities/CloudConnection.js +0 -6
- package/dist/device/cloud/entities/CloudDevice.d.ts +0 -16
- package/dist/device/cloud/entities/CloudDevice.js +0 -26
- package/dist/device/cloud/entities/CloudDeviceService.d.ts +0 -5
- package/dist/device/cloud/entities/CloudDeviceService.js +0 -9
- package/dist/device/cloud/entities/DeviceFactory.d.ts +0 -7
- package/dist/device/cloud/entities/DeviceFactory.js +0 -80
- package/dist/device/cloud/entities/index.d.ts +0 -3
- package/dist/device/cloud/entities/index.js +0 -19
- package/dist/device/cloud/interface.d.ts +0 -101
- package/dist/device/cloud/interface.js +0 -3
- package/dist/device/cloud/interfaces/ICloudConnection.d.ts +0 -5
- package/dist/device/cloud/interfaces/ICloudConnection.js +0 -2
- package/dist/device/cloud/interfaces/ICloudDevice.d.ts +0 -9
- package/dist/device/cloud/interfaces/ICloudDevice.js +0 -2
- package/dist/device/cloud/interfaces/ICloudDeviceService.d.ts +0 -4
- package/dist/device/cloud/interfaces/ICloudDeviceService.js +0 -2
- package/dist/device/cloud/interfaces/IConnectionService.d.ts +0 -7
- package/dist/device/cloud/interfaces/IConnectionService.js +0 -2
- package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +0 -7
- package/dist/device/cloud/interfaces/IDeviceConnectionService.js +0 -3
- package/dist/device/cloud/interfaces/IDeviceFactory.d.ts +0 -4
- package/dist/device/cloud/interfaces/IDeviceFactory.js +0 -2
- package/dist/device/cloud/interfaces/IDeviceService.d.ts +0 -8
- package/dist/device/cloud/interfaces/IDeviceService.js +0 -2
- package/dist/device/cloud/interfaces/IDevicesService.d.ts +0 -9
- package/dist/device/cloud/interfaces/IDevicesService.js +0 -2
- package/dist/device/cloud/interfaces/IHubService.d.ts +0 -5
- package/dist/device/cloud/interfaces/IHubService.js +0 -2
- package/dist/device/cloud/interfaces/IRawDataTransformer.d.ts +0 -4
- package/dist/device/cloud/interfaces/IRawDataTransformer.js +0 -2
- package/dist/device/cloud/interfaces/IRawDevice.d.ts +0 -17
- package/dist/device/cloud/interfaces/IRawDevice.js +0 -11
- package/dist/device/cloud/interfaces/index.d.ts +0 -5
- package/dist/device/cloud/interfaces/index.js +0 -21
- package/dist/device/cloud/services/CloudDevice.service.d.ts +0 -5
- package/dist/device/cloud/services/CloudDevice.service.js +0 -9
- package/dist/device/cloud/services/Connection.service.d.ts +0 -8
- package/dist/device/cloud/services/Connection.service.js +0 -6
- package/dist/device/cloud/services/Device.service.d.ts +0 -39
- package/dist/device/cloud/services/Device.service.js +0 -9
- package/dist/device/cloud/services/DeviceCloudService.d.ts +0 -42
- package/dist/device/cloud/services/DeviceCloudService.js +0 -59
- package/dist/device/cloud/services/DeviceHub.service.d.ts +0 -3
- package/dist/device/cloud/services/DeviceHub.service.js +0 -6
- package/dist/device/cloud/services/Hub.service.d.ts +0 -25
- package/dist/device/cloud/services/Hub.service.js +0 -9
- package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +0 -38
- package/dist/device/cloud/services/SmartThingsDeviceService.js +0 -52
- package/dist/device/cloud/services/index.d.ts +0 -2
- package/dist/device/cloud/services/index.js +0 -18
- package/dist/device/cloud/types.d.ts +0 -52
- package/dist/device/cloud/types.js +0 -15
- package/dist/device/index.d.ts +0 -4
- package/dist/device/index.js +0 -20
- package/dist/device/local/entities/AlertBuilder.d.ts +0 -87
- package/dist/device/local/entities/AlertBuilder.example.d.ts +0 -11
- package/dist/device/local/entities/AlertBuilder.example.js +0 -117
- package/dist/device/local/entities/AlertBuilder.js +0 -179
- package/dist/device/local/entities/IssueBuilder.d.ts +0 -109
- package/dist/device/local/entities/IssueBuilder.example.d.ts +0 -16
- package/dist/device/local/entities/IssueBuilder.example.js +0 -196
- package/dist/device/local/entities/IssueBuilder.js +0 -237
- package/dist/device/local/entities/index.d.ts +0 -2
- package/dist/device/local/entities/index.js +0 -7
- package/dist/device/local/events/EventHandler.d.ts +0 -11
- package/dist/device/local/events/EventHandler.js +0 -86
- package/dist/device/local/events/Events.d.ts +0 -54
- package/dist/device/local/events/Events.js +0 -57
- package/dist/device/local/events/index.d.ts +0 -2
- package/dist/device/local/events/index.js +0 -7
- package/dist/device/local/handler/EventHandler.d.ts +0 -7
- package/dist/device/local/handler/EventHandler.js +0 -44
- package/dist/device/local/interface.d.ts +0 -0
- package/dist/device/local/interface.js +0 -1
- package/dist/device/local/interfaces/IConnection.d.ts +0 -26
- package/dist/device/local/interfaces/IConnection.js +0 -14
- package/dist/device/local/interfaces/IDevice.d.ts +0 -68
- package/dist/device/local/interfaces/IDevice.js +0 -10
- package/dist/device/local/interfaces/IDtDevice.d.ts +0 -16
- package/dist/device/local/interfaces/IDtDevice.js +0 -2
- package/dist/device/local/interfaces/IHub.d.ts +0 -46
- package/dist/device/local/interfaces/IHub.js +0 -2
- package/dist/device/local/interfaces/IProperty.d.ts +0 -29
- package/dist/device/local/interfaces/IProperty.js +0 -2
- package/dist/device/local/interfaces/ISchedule.d.ts +0 -25
- package/dist/device/local/interfaces/ISchedule.js +0 -2
- package/dist/device/local/interfaces/index.d.ts +0 -3
- package/dist/device/local/interfaces/index.js +0 -19
- package/dist/device/local/models/Alert.model.d.ts +0 -28
- package/dist/device/local/models/Alert.model.js +0 -222
- package/dist/device/local/models/Issue.model.d.ts +0 -28
- package/dist/device/local/models/Issue.model.js +0 -260
- package/dist/device/local/repository/Alert.repository.d.ts +0 -106
- package/dist/device/local/repository/Alert.repository.js +0 -374
- package/dist/device/local/repository/Connection.repository.d.ts +0 -8
- package/dist/device/local/repository/Connection.repository.js +0 -92
- package/dist/device/local/repository/Device.repository.d.ts +0 -30
- package/dist/device/local/repository/Device.repository.js +0 -325
- package/dist/device/local/repository/Hub.repository.d.ts +0 -13
- package/dist/device/local/repository/Hub.repository.js +0 -139
- package/dist/device/local/repository/Issue.repository.d.ts +0 -113
- package/dist/device/local/repository/Issue.repository.js +0 -401
- package/dist/device/local/repository/Property.repository.d.ts +0 -8
- package/dist/device/local/repository/Property.repository.js +0 -95
- package/dist/device/local/repository/Schedule.repository.d.ts +0 -9
- package/dist/device/local/repository/Schedule.repository.js +0 -109
- package/dist/device/local/services/Alert.service.d.ts +0 -137
- package/dist/device/local/services/Alert.service.js +0 -475
- package/dist/device/local/services/AlertService.example.d.ts +0 -55
- package/dist/device/local/services/AlertService.example.js +0 -148
- package/dist/device/local/services/Connection.service.d.ts +0 -8
- package/dist/device/local/services/Connection.service.js +0 -32
- package/dist/device/local/services/Device.service.d.ts +0 -40
- package/dist/device/local/services/Device.service.js +0 -391
- package/dist/device/local/services/DeviceHub.service.d.ts +0 -11
- package/dist/device/local/services/DeviceHub.service.js +0 -40
- package/dist/device/local/services/Hub.service.d.ts +0 -12
- package/dist/device/local/services/Hub.service.js +0 -107
- package/dist/device/local/services/Issue.service.d.ts +0 -168
- package/dist/device/local/services/Issue.service.js +0 -642
- package/dist/device/local/services/IssueService.example.d.ts +0 -68
- package/dist/device/local/services/IssueService.example.js +0 -177
- package/dist/device/local/services/Property.service.d.ts +0 -8
- package/dist/device/local/services/Property.service.js +0 -36
- package/dist/device/local/services/Schedule.service.d.ts +0 -9
- package/dist/device/local/services/Schedule.service.js +0 -26
- package/dist/device/local/services/index.d.ts +0 -3
- package/dist/device/local/services/index.js +0 -19
- package/dist/pms/IPms.d.ts +0 -6
- package/dist/pms/IPms.js +0 -10
- package/dist/pms/index.d.ts +0 -1
- package/dist/pms/index.js +0 -17
- package/dist/property/IProperty.d.ts +0 -29
- package/dist/property/IProperty.js +0 -2
- package/dist/property/Property.repository.d.ts +0 -8
- package/dist/property/Property.repository.js +0 -109
- package/dist/property/Property.service.d.ts +0 -8
- package/dist/property/Property.service.js +0 -124
- package/dist/property/index.d.ts +0 -2
- package/dist/property/index.js +0 -18
- package/dist/queue/interfaces/IHttpRequestJob.d.ts +0 -9
- package/dist/queue/interfaces/IHttpRequestJob.js +0 -2
- package/dist/types/alert.types.d.ts +0 -57
- package/dist/types/alert.types.js +0 -22
- package/dist/types/config.types.d.ts +0 -19
- package/dist/types/config.types.js +0 -2
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.js +0 -19
- package/dist/types/issue.types.d.ts +0 -90
- package/dist/types/issue.types.js +0 -40
- package/dist/utils/http-utils.d.ts +0 -13
- package/dist/utils/http-utils.js +0 -117
|
@@ -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>, {}
|
|
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<{
|
|
17
17
|
_id: string;
|
|
18
18
|
}> & {
|
|
19
19
|
__v: number;
|
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
import { IAlertDocument } from "./Alert.model";
|
|
2
|
-
import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity,
|
|
2
|
+
import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, IAlertQuery } from "./alert.types";
|
|
3
3
|
import { Source } from "../constants/Service";
|
|
4
4
|
import { AlertBuilder } from "./AlertBuilder";
|
|
5
5
|
import { IDevice } from "../entities/device/local/interfaces";
|
|
6
6
|
export declare class AlertService {
|
|
7
7
|
private readonly alertRepository;
|
|
8
8
|
constructor();
|
|
9
|
-
/**
|
|
10
|
-
* Create a readiness alert using AlertBuilder
|
|
11
|
-
*/
|
|
12
|
-
raiseReadinessAlert(propertyId: string, zoneId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
13
9
|
/**
|
|
14
10
|
* Create an operations alert using AlertBuilder
|
|
15
11
|
*/
|
|
16
|
-
raiseOperationsAlert(
|
|
12
|
+
raiseOperationsAlert(data: CreateAlertData): Promise<IAlertDocument>;
|
|
17
13
|
/**
|
|
18
14
|
* Create a security alert using AlertBuilder
|
|
19
15
|
*/
|
|
20
|
-
raiseSecurityAlert(
|
|
16
|
+
raiseSecurityAlert(data: CreateAlertData): Promise<IAlertDocument>;
|
|
21
17
|
/**
|
|
22
18
|
* Create an energy alert using AlertBuilder
|
|
23
19
|
*/
|
|
24
|
-
raiseEnergyAlert(
|
|
20
|
+
raiseEnergyAlert(data: CreateAlertData): Promise<IAlertDocument>;
|
|
25
21
|
/**
|
|
26
22
|
* Create a device-specific alert using AlertBuilder
|
|
27
23
|
*/
|
|
28
|
-
raiseDeviceAlert(
|
|
24
|
+
raiseDeviceAlert(data: CreateAlertData): Promise<IAlertDocument>;
|
|
29
25
|
/**
|
|
30
26
|
* Create a hub-specific alert using AlertBuilder
|
|
31
27
|
*/
|
|
32
|
-
raiseHubAlert(
|
|
28
|
+
raiseHubAlert(data: CreateAlertData): Promise<IAlertDocument>;
|
|
33
29
|
/**
|
|
34
30
|
* Raise alert for device going offline (OPERATIONAL only)
|
|
35
31
|
*/
|
|
@@ -86,127 +86,150 @@ let AlertService = (() => {
|
|
|
86
86
|
constructor() {
|
|
87
87
|
this.alertRepository = typedi_1.default.get(Alert_repository_1.AlertRepository);
|
|
88
88
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Create a readiness alert using AlertBuilder
|
|
91
|
-
*/
|
|
92
|
-
async raiseReadinessAlert(propertyId, zoneId, title, description, entityId, entityType, createdBy) {
|
|
93
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createReadinessAlert()
|
|
94
|
-
.setPropertyId(propertyId)
|
|
95
|
-
.setZoneId(zoneId)
|
|
96
|
-
.setTitle(title)
|
|
97
|
-
.setDescription(description);
|
|
98
|
-
if (entityId)
|
|
99
|
-
alertBuilder.setEntityId(entityId);
|
|
100
|
-
if (entityType)
|
|
101
|
-
alertBuilder.setEntityType(entityType);
|
|
102
|
-
if (createdBy)
|
|
103
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
104
|
-
return await this.createAlert(alertBuilder);
|
|
105
|
-
}
|
|
106
89
|
/**
|
|
107
90
|
* Create an operations alert using AlertBuilder
|
|
108
91
|
*/
|
|
109
|
-
async raiseOperationsAlert(
|
|
92
|
+
async raiseOperationsAlert(data) {
|
|
110
93
|
const alertBuilder = AlertBuilder_1.AlertBuilder.createOperationsAlert()
|
|
111
|
-
.setPropertyId(propertyId)
|
|
112
|
-
.setZoneId(zoneId)
|
|
113
|
-
.setTitle(title)
|
|
114
|
-
.setDescription(description);
|
|
115
|
-
if (entityId)
|
|
116
|
-
alertBuilder.setEntityId(entityId);
|
|
117
|
-
if (entityType)
|
|
118
|
-
alertBuilder.setEntityType(entityType);
|
|
119
|
-
if (createdBy)
|
|
120
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
94
|
+
.setPropertyId(data.propertyId)
|
|
95
|
+
.setZoneId(data.zoneId)
|
|
96
|
+
.setTitle(data.title)
|
|
97
|
+
.setDescription(data.description);
|
|
98
|
+
if (data.entityId)
|
|
99
|
+
alertBuilder.setEntityId(data.entityId);
|
|
100
|
+
if (data.entityType)
|
|
101
|
+
alertBuilder.setEntityType(data.entityType);
|
|
102
|
+
if (data.createdBy)
|
|
103
|
+
alertBuilder.setCreatedBy(data.createdBy);
|
|
121
104
|
return await this.createAlert(alertBuilder);
|
|
122
105
|
}
|
|
123
106
|
/**
|
|
124
107
|
* Create a security alert using AlertBuilder
|
|
125
108
|
*/
|
|
126
|
-
async raiseSecurityAlert(
|
|
109
|
+
async raiseSecurityAlert(data) {
|
|
127
110
|
const alertBuilder = AlertBuilder_1.AlertBuilder.createSecurityAlert()
|
|
128
|
-
.setPropertyId(propertyId)
|
|
129
|
-
.setZoneId(zoneId)
|
|
130
|
-
.setTitle(title)
|
|
131
|
-
.setDescription(description);
|
|
132
|
-
if (entityId)
|
|
133
|
-
alertBuilder.setEntityId(entityId);
|
|
134
|
-
if (entityType)
|
|
135
|
-
alertBuilder.setEntityType(entityType);
|
|
136
|
-
if (createdBy)
|
|
137
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
111
|
+
.setPropertyId(data.propertyId)
|
|
112
|
+
.setZoneId(data.zoneId)
|
|
113
|
+
.setTitle(data.title)
|
|
114
|
+
.setDescription(data.description);
|
|
115
|
+
if (data.entityId)
|
|
116
|
+
alertBuilder.setEntityId(data.entityId);
|
|
117
|
+
if (data.entityType)
|
|
118
|
+
alertBuilder.setEntityType(data.entityType);
|
|
119
|
+
if (data.createdBy)
|
|
120
|
+
alertBuilder.setCreatedBy(data.createdBy);
|
|
138
121
|
return await this.createAlert(alertBuilder);
|
|
139
122
|
}
|
|
140
123
|
/**
|
|
141
124
|
* Create an energy alert using AlertBuilder
|
|
142
125
|
*/
|
|
143
|
-
async raiseEnergyAlert(
|
|
126
|
+
async raiseEnergyAlert(data) {
|
|
144
127
|
const alertBuilder = AlertBuilder_1.AlertBuilder.createEnergyAlert()
|
|
145
|
-
.setPropertyId(propertyId)
|
|
146
|
-
.setZoneId(zoneId)
|
|
147
|
-
.setTitle(title)
|
|
148
|
-
.setDescription(description);
|
|
149
|
-
if (entityId)
|
|
150
|
-
alertBuilder.setEntityId(entityId);
|
|
151
|
-
if (entityType)
|
|
152
|
-
alertBuilder.setEntityType(entityType);
|
|
153
|
-
if (createdBy)
|
|
154
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
128
|
+
.setPropertyId(data.propertyId)
|
|
129
|
+
.setZoneId(data.zoneId)
|
|
130
|
+
.setTitle(data.title)
|
|
131
|
+
.setDescription(data.description);
|
|
132
|
+
if (data.entityId)
|
|
133
|
+
alertBuilder.setEntityId(data.entityId);
|
|
134
|
+
if (data.entityType)
|
|
135
|
+
alertBuilder.setEntityType(data.entityType);
|
|
136
|
+
if (data.createdBy)
|
|
137
|
+
alertBuilder.setCreatedBy(data.createdBy);
|
|
155
138
|
return await this.createAlert(alertBuilder);
|
|
156
139
|
}
|
|
157
140
|
/**
|
|
158
141
|
* Create a device-specific alert using AlertBuilder
|
|
159
142
|
*/
|
|
160
|
-
async raiseDeviceAlert(
|
|
161
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createDeviceAlert(
|
|
162
|
-
.setTitle(title)
|
|
163
|
-
.setDescription(description);
|
|
164
|
-
if (category)
|
|
165
|
-
alertBuilder.setCategory(category);
|
|
166
|
-
if (severity)
|
|
167
|
-
alertBuilder.setSeverity(severity);
|
|
168
|
-
if (
|
|
169
|
-
alertBuilder.setCreatedBy(
|
|
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);
|
|
170
153
|
return await this.createAlert(alertBuilder);
|
|
171
154
|
}
|
|
172
155
|
/**
|
|
173
156
|
* Create a hub-specific alert using AlertBuilder
|
|
174
157
|
*/
|
|
175
|
-
async raiseHubAlert(
|
|
176
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createHubAlert(
|
|
177
|
-
.setTitle(title)
|
|
178
|
-
.setDescription(description);
|
|
179
|
-
if (category)
|
|
180
|
-
alertBuilder.setCategory(category);
|
|
181
|
-
if (severity)
|
|
182
|
-
alertBuilder.setSeverity(severity);
|
|
183
|
-
if (createdBy)
|
|
184
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
158
|
+
async raiseHubAlert(data) {
|
|
159
|
+
const alertBuilder = AlertBuilder_1.AlertBuilder.createHubAlert(data.entityId || "", data.propertyId, data.zoneId)
|
|
160
|
+
.setTitle(data.title)
|
|
161
|
+
.setDescription(data.description);
|
|
162
|
+
if (data.category)
|
|
163
|
+
alertBuilder.setCategory(data.category);
|
|
164
|
+
if (data.severity)
|
|
165
|
+
alertBuilder.setSeverity(data.severity);
|
|
166
|
+
if (data.createdBy)
|
|
167
|
+
alertBuilder.setCreatedBy(data.createdBy);
|
|
185
168
|
return await this.createAlert(alertBuilder);
|
|
186
169
|
}
|
|
187
170
|
/**
|
|
188
171
|
* Raise alert for device going offline (OPERATIONAL only)
|
|
189
172
|
*/
|
|
190
173
|
async raiseDeviceOfflineAlert(device, source, reason) {
|
|
191
|
-
return await this.raiseDeviceAlert(
|
|
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
|
+
});
|
|
192
185
|
}
|
|
193
186
|
/**
|
|
194
187
|
* Raise alert for device coming online (OPERATIONAL only)
|
|
195
188
|
*/
|
|
196
189
|
async raiseDeviceOnlineAlert(device, source, reason) {
|
|
197
|
-
return await this.raiseDeviceAlert(
|
|
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
|
+
});
|
|
198
201
|
}
|
|
199
202
|
/**
|
|
200
203
|
* Raise alert for device battery level below threshold (READINESS + OPERATIONAL + ENERGY)
|
|
201
204
|
*/
|
|
202
205
|
async raiseDeviceBatteryAlert(device, batteryLevel, threshold, source) {
|
|
203
|
-
return await this.raiseDeviceAlert(
|
|
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
|
+
});
|
|
204
217
|
}
|
|
205
218
|
/**
|
|
206
219
|
* Raise alert for device issue (jammed or malfunctioned) (READINESS + OPERATIONAL)
|
|
207
220
|
*/
|
|
208
221
|
async raiseDeviceIssueAlert(device, issueType, source, reason) {
|
|
209
|
-
return await this.raiseDeviceAlert(
|
|
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
|
+
});
|
|
210
233
|
}
|
|
211
234
|
/**
|
|
212
235
|
* Create a new alert with business logic validation
|
|
@@ -538,7 +561,6 @@ let AlertService = (() => {
|
|
|
538
561
|
determineDefaultSeverity(category) {
|
|
539
562
|
// Business logic: Determine default severity based on category
|
|
540
563
|
const categorySeverities = {
|
|
541
|
-
[alert_types_1.AlertCategory.READINESS]: alert_types_1.AlertSeverity.LOW,
|
|
542
564
|
[alert_types_1.AlertCategory.OPERATIONS]: alert_types_1.AlertSeverity.HIGH,
|
|
543
565
|
[alert_types_1.AlertCategory.SECURITY]: alert_types_1.AlertSeverity.CRITICAL,
|
|
544
566
|
[alert_types_1.AlertCategory.ENERGY]: alert_types_1.AlertSeverity.LOW,
|
|
@@ -73,10 +73,6 @@ export declare class AlertBuilder {
|
|
|
73
73
|
* Resets the builder to its initial state
|
|
74
74
|
*/
|
|
75
75
|
reset(): this;
|
|
76
|
-
/**
|
|
77
|
-
* Creates a new builder instance with predefined values for common alert types
|
|
78
|
-
*/
|
|
79
|
-
static createReadinessAlert(): AlertBuilder;
|
|
80
76
|
static createOperationsAlert(): AlertBuilder;
|
|
81
77
|
static createSecurityAlert(): AlertBuilder;
|
|
82
78
|
static createEnergyAlert(): AlertBuilder;
|
|
@@ -152,14 +152,6 @@ class AlertBuilder {
|
|
|
152
152
|
this.data = {};
|
|
153
153
|
return this;
|
|
154
154
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Creates a new builder instance with predefined values for common alert types
|
|
157
|
-
*/
|
|
158
|
-
static createReadinessAlert() {
|
|
159
|
-
return new AlertBuilder()
|
|
160
|
-
.setCategory(alert_types_1.AlertCategory.READINESS)
|
|
161
|
-
.setSeverity(alert_types_1.AlertSeverity.LOW);
|
|
162
|
-
}
|
|
163
155
|
static createOperationsAlert() {
|
|
164
156
|
return new AlertBuilder()
|
|
165
157
|
.setCategory(alert_types_1.AlertCategory.OPERATIONS)
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EntityType = exports.AlertSeverity = exports.AlertCategory = void 0;
|
|
4
4
|
var AlertCategory;
|
|
5
5
|
(function (AlertCategory) {
|
|
6
|
-
AlertCategory["READINESS"] = "READINESS";
|
|
7
6
|
AlertCategory["OPERATIONS"] = "OPERATIONS";
|
|
8
7
|
AlertCategory["SECURITY"] = "SECURITY";
|
|
9
8
|
AlertCategory["ENERGY"] = "ENERGY";
|
package/dist/config/config.js
CHANGED
|
@@ -103,6 +103,9 @@ async function validateInternalEventHandler(cfg) {
|
|
|
103
103
|
throw error;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
+
else {
|
|
107
|
+
throw new Error("dt-common-device: No internal event handler provided. Please provide an internal event handler in the config.");
|
|
108
|
+
}
|
|
106
109
|
}
|
|
107
110
|
async function validateServiceConfig(cfg) {
|
|
108
111
|
checkRequiredEnv(constants_1.CONFIG_KEYS[sourceKey].env);
|
package/dist/config/constants.js
CHANGED
|
@@ -164,4 +164,34 @@ export declare const DT_EVENT_TYPES: {
|
|
|
164
164
|
FAILED: string;
|
|
165
165
|
};
|
|
166
166
|
};
|
|
167
|
+
ISSUE: {
|
|
168
|
+
CREATE: {
|
|
169
|
+
SUCCESS: string;
|
|
170
|
+
FAILED: string;
|
|
171
|
+
SKIPPED: string;
|
|
172
|
+
};
|
|
173
|
+
UPDATE: {
|
|
174
|
+
SUCCESS: string;
|
|
175
|
+
FAILED: string;
|
|
176
|
+
};
|
|
177
|
+
DELETE: {
|
|
178
|
+
SUCCESS: string;
|
|
179
|
+
FAILED: string;
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
ALERT: {
|
|
183
|
+
CREATE: {
|
|
184
|
+
SUCCESS: string;
|
|
185
|
+
FAILED: string;
|
|
186
|
+
SKIPPED: string;
|
|
187
|
+
};
|
|
188
|
+
UPDATE: {
|
|
189
|
+
SUCCESS: string;
|
|
190
|
+
FAILED: string;
|
|
191
|
+
};
|
|
192
|
+
DELETE: {
|
|
193
|
+
SUCCESS: string;
|
|
194
|
+
FAILED: string;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
167
197
|
};
|
package/dist/constants/Event.js
CHANGED
|
@@ -167,4 +167,34 @@ exports.DT_EVENT_TYPES = {
|
|
|
167
167
|
FAILED: "zone.delete.failed",
|
|
168
168
|
},
|
|
169
169
|
},
|
|
170
|
+
ISSUE: {
|
|
171
|
+
CREATE: {
|
|
172
|
+
SUCCESS: "issue.create.success",
|
|
173
|
+
FAILED: "issue.create.failed",
|
|
174
|
+
SKIPPED: "issue.create.skipped",
|
|
175
|
+
},
|
|
176
|
+
UPDATE: {
|
|
177
|
+
SUCCESS: "issue.update.success",
|
|
178
|
+
FAILED: "issue.update.failed",
|
|
179
|
+
},
|
|
180
|
+
DELETE: {
|
|
181
|
+
SUCCESS: "issue.delete.success",
|
|
182
|
+
FAILED: "issue.delete.failed",
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
ALERT: {
|
|
186
|
+
CREATE: {
|
|
187
|
+
SUCCESS: "alert.create.success",
|
|
188
|
+
FAILED: "alert.create.failed",
|
|
189
|
+
SKIPPED: "alert.create.skipped",
|
|
190
|
+
},
|
|
191
|
+
UPDATE: {
|
|
192
|
+
SUCCESS: "alert.update.success",
|
|
193
|
+
FAILED: "alert.update.failed",
|
|
194
|
+
},
|
|
195
|
+
DELETE: {
|
|
196
|
+
SUCCESS: "alert.delete.success",
|
|
197
|
+
FAILED: "alert.delete.failed",
|
|
198
|
+
},
|
|
199
|
+
},
|
|
170
200
|
};
|
package/dist/db/db.js
CHANGED
|
@@ -44,10 +44,10 @@ const connectDatabase = async () => {
|
|
|
44
44
|
try {
|
|
45
45
|
const URI = (0, config_1.getMongoUri)();
|
|
46
46
|
await mongoose_1.default.connect(URI);
|
|
47
|
-
|
|
47
|
+
(0, config_1.getLogger)().info(`Connected to MongoDB at ${URI.split("/").at(-1)}`);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
|
-
|
|
50
|
+
(0, config_1.getLogger)().error("Error connecting to MongoDB:", error);
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
exports.connectDatabase = connectDatabase;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { IAccessGroup } from "./IAccessGroup";
|
|
1
2
|
export declare class AccessGroupRepository {
|
|
2
3
|
private readonly postgres;
|
|
3
4
|
constructor();
|
|
4
|
-
getAccessGroup(accessGroupId: string): Promise<
|
|
5
|
+
getAccessGroup(accessGroupId: string): Promise<IAccessGroup | null>;
|
|
5
6
|
}
|
|
@@ -56,7 +56,10 @@ let AccessGroupRepository = (() => {
|
|
|
56
56
|
WHERE "id" = $1
|
|
57
57
|
`;
|
|
58
58
|
const result = await this.postgres.query(query, [accessGroupId]);
|
|
59
|
-
|
|
59
|
+
if (result.rows.length > 0) {
|
|
60
|
+
return result.rows[0];
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
60
63
|
}
|
|
61
64
|
};
|
|
62
65
|
__setFunctionName(_classThis, "AccessGroupRepository");
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { IAccessGroup } from "./IAccessGroup";
|
|
1
2
|
export declare class AccessGroupService {
|
|
2
3
|
private readonly accessGroupRepository;
|
|
3
4
|
constructor();
|
|
4
|
-
getAccessGroup(accessGroupId: string): Promise<
|
|
5
|
+
getAccessGroup(accessGroupId: string): Promise<IAccessGroup | null>;
|
|
5
6
|
}
|
|
@@ -87,7 +87,10 @@ let AccessGroupService = (() => {
|
|
|
87
87
|
if (!accessGroupId) {
|
|
88
88
|
throw new Error("Access Group ID is required");
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
const accessGroup = await this.accessGroupRepository.getAccessGroup(accessGroupId);
|
|
91
|
+
if (!accessGroup)
|
|
92
|
+
return null;
|
|
93
|
+
return accessGroup;
|
|
91
94
|
}
|
|
92
95
|
};
|
|
93
96
|
__setFunctionName(_classThis, "AccessGroupService");
|
|
@@ -101,5 +104,3 @@ let AccessGroupService = (() => {
|
|
|
101
104
|
return AccessGroupService = _classThis;
|
|
102
105
|
})();
|
|
103
106
|
exports.AccessGroupService = AccessGroupService;
|
|
104
|
-
// Accessgroup.getAccessGroup(accessGroupId)
|
|
105
|
-
// GetAccessGroup()
|
|
@@ -4,6 +4,7 @@ export declare class AdminRepository {
|
|
|
4
4
|
private readonly postgres;
|
|
5
5
|
constructor();
|
|
6
6
|
getZonesByAccessGroupIds(accessGroupIds: string[]): Promise<any[]>;
|
|
7
|
+
getZonesByAccessGroups(accessGroupIds: string[]): Promise<any[]>;
|
|
7
8
|
getAccessGroup(accessGroupId: string): Promise<IAccessGroup | null>;
|
|
8
9
|
getZoneAccessGroupByZoneId(zoneId: string): Promise<IZoneAccessGroup | null>;
|
|
9
10
|
getZone(zoneId: string): Promise<IZone | null>;
|
|
@@ -165,6 +165,38 @@ let AdminRepository = (() => {
|
|
|
165
165
|
const collectionZoneDevices = Array.from(new Set(_collectionZone));
|
|
166
166
|
return collectionZoneDevices;
|
|
167
167
|
}
|
|
168
|
+
async getZonesByAccessGroups(accessGroupIds) {
|
|
169
|
+
// Fetch zones associated with these access groups
|
|
170
|
+
const zonesIdsQuery = `
|
|
171
|
+
SELECT DISTINCT z."zoneId"
|
|
172
|
+
FROM dt_zones_collection_map z
|
|
173
|
+
WHERE z."collectionId" = ANY($1)
|
|
174
|
+
`;
|
|
175
|
+
const zonesIdsResult = await this.postgres.query(zonesIdsQuery, [
|
|
176
|
+
accessGroupIds,
|
|
177
|
+
]);
|
|
178
|
+
const zoneTypesQuery = `
|
|
179
|
+
SELECT id
|
|
180
|
+
FROM "dt_zoneTypes"
|
|
181
|
+
WHERE name = 'Guest Room'
|
|
182
|
+
`;
|
|
183
|
+
const zoneTypes = await this.postgres.query(zoneTypesQuery);
|
|
184
|
+
const guestRoomZoneTypeId = zoneTypes.rows[0].id;
|
|
185
|
+
const zonesIds = zonesIdsResult.rows.map((row) => row.zoneId);
|
|
186
|
+
const zonesQuery = `
|
|
187
|
+
SELECT id
|
|
188
|
+
FROM dt_zones
|
|
189
|
+
WHERE id = ANY($1) AND "zoneTypeId" = $2
|
|
190
|
+
`;
|
|
191
|
+
const zonesResult = await this.postgres.query(zonesQuery, [
|
|
192
|
+
zonesIds,
|
|
193
|
+
guestRoomZoneTypeId,
|
|
194
|
+
]);
|
|
195
|
+
if (zonesResult?.rows?.length > 0) {
|
|
196
|
+
return zonesResult?.rows?.map((e) => e.id);
|
|
197
|
+
}
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
168
200
|
async getAccessGroup(accessGroupId) {
|
|
169
201
|
const query = `
|
|
170
202
|
SELECT * FROM dt_collections
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { IAccessGroup, IUser, IZone } from "./IAdmin";
|
|
2
2
|
export declare class AdminService {
|
|
3
3
|
private readonly adminRepository;
|
|
4
|
+
private readonly redisUtils;
|
|
4
5
|
constructor();
|
|
5
6
|
getZonesByAccessGroupIds(accessGroupIds: string[]): Promise<any[] | undefined>;
|
|
7
|
+
getZonesByAccessGroups(accessGroupIds: string[]): Promise<any[] | undefined>;
|
|
6
8
|
getAccessGroup(accessGroupId: string): Promise<IAccessGroup | null>;
|
|
7
9
|
getAccessGroupByZoneId(zoneId: string): Promise<IAccessGroup | null>;
|
|
8
10
|
getZone(zoneId: string): Promise<IZone | null>;
|
|
@@ -74,6 +74,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
74
74
|
exports.AdminService = void 0;
|
|
75
75
|
const typedi_1 = __importStar(require("typedi"));
|
|
76
76
|
const Admin_repository_1 = require("./Admin.repository");
|
|
77
|
+
const redis_utils_1 = require("../../utils/redis.utils");
|
|
77
78
|
let AdminService = (() => {
|
|
78
79
|
let _classDecorators = [(0, typedi_1.Service)()];
|
|
79
80
|
let _classDescriptor;
|
|
@@ -82,6 +83,7 @@ let AdminService = (() => {
|
|
|
82
83
|
var AdminService = _classThis = class {
|
|
83
84
|
constructor() {
|
|
84
85
|
this.adminRepository = typedi_1.default.get(Admin_repository_1.AdminRepository);
|
|
86
|
+
this.redisUtils = typedi_1.default.get(redis_utils_1.RedisUtils);
|
|
85
87
|
}
|
|
86
88
|
async getZonesByAccessGroupIds(accessGroupIds) {
|
|
87
89
|
try {
|
|
@@ -91,6 +93,14 @@ let AdminService = (() => {
|
|
|
91
93
|
console.log(error);
|
|
92
94
|
}
|
|
93
95
|
}
|
|
96
|
+
async getZonesByAccessGroups(accessGroupIds) {
|
|
97
|
+
try {
|
|
98
|
+
return await this.adminRepository.getZonesByAccessGroups(accessGroupIds);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.log(error);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
94
104
|
async getAccessGroup(accessGroupId) {
|
|
95
105
|
if (!accessGroupId) {
|
|
96
106
|
throw new Error("Access Group ID is required");
|
|
@@ -116,6 +126,10 @@ let AdminService = (() => {
|
|
|
116
126
|
if (!zoneId) {
|
|
117
127
|
throw new Error("Zone ID is required");
|
|
118
128
|
}
|
|
129
|
+
const cachedZone = await this.redisUtils.get(`zone:${zoneId}`);
|
|
130
|
+
if (cachedZone)
|
|
131
|
+
return JSON.parse(cachedZone);
|
|
132
|
+
// Do Not Cache Zone if not found in Redis Here! Its being cached in Smart-Cloud
|
|
119
133
|
const zone = await this.adminRepository.getZone(zoneId);
|
|
120
134
|
if (!zone)
|
|
121
135
|
return null;
|
|
@@ -82,6 +82,7 @@ const typedi_1 = __importStar(require("typedi"));
|
|
|
82
82
|
const IAuditProperties_1 = require("../../../../audit/IAuditProperties");
|
|
83
83
|
const constants_1 = require("../../../../constants");
|
|
84
84
|
const audit_1 = require("../../../../audit");
|
|
85
|
+
const issue_types_1 = require("../../../../issues/issue.types");
|
|
85
86
|
let LocalDeviceService = (() => {
|
|
86
87
|
let _classDecorators = [(0, typedi_1.Service)()];
|
|
87
88
|
let _classDescriptor;
|
|
@@ -361,7 +362,7 @@ let LocalDeviceService = (() => {
|
|
|
361
362
|
// Raise alert
|
|
362
363
|
await this.alertService.raiseDeviceBatteryAlert(device, batteryLevel, propertyThreshold, source);
|
|
363
364
|
// Raise issue when the level is below threshold
|
|
364
|
-
await this.issueService.createDeviceBatteryIssue(device, batteryLevel, propertyThreshold, source);
|
|
365
|
+
await this.issueService.createDeviceBatteryIssue(device, batteryLevel, propertyThreshold, issue_types_1.IssuePriority.CRITICAL, source);
|
|
365
366
|
}
|
|
366
367
|
}
|
|
367
368
|
}
|