dt-common-device 4.0.7 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alerts/Alert.service.d.ts +1 -1
- package/dist/audit/AuditUtils.d.ts +26 -2
- package/dist/audit/AuditUtils.js +255 -32
- package/dist/audit/IAuditProperties.d.ts +32 -0
- package/dist/audit/IAuditProperties.js +13 -0
- package/dist/audit/PushAudit.d.ts +5 -0
- package/dist/audit/PushAudit.js +16 -0
- package/dist/audit/index.d.ts +2 -0
- package/dist/audit/index.js +18 -0
- package/dist/config/config.d.ts +10 -3
- package/dist/config/config.js +120 -47
- package/dist/config/config.types.d.ts +1 -8
- package/dist/config/constants.d.ts +49 -0
- package/dist/config/constants.js +64 -0
- package/dist/db/db.d.ts +2 -0
- package/dist/db/db.js +23 -1
- package/dist/entities/accessGroup/AccessGroup.repository.d.ts +5 -0
- package/dist/entities/accessGroup/AccessGroup.repository.js +72 -0
- package/dist/entities/accessGroup/AccessGroup.service.d.ts +5 -0
- package/dist/{device/local/repository/Connection.repository.js → entities/accessGroup/AccessGroup.service.js} +50 -37
- package/dist/entities/accessGroup/IAccessGroup.d.ts +14 -0
- package/dist/entities/accessGroup/index.d.ts +2 -0
- package/dist/entities/accessGroup/index.js +18 -0
- package/dist/{admin → entities/admin}/Admin.repository.js +4 -4
- package/dist/{connection → entities/connection}/Connection.repository.js +1 -1
- package/dist/{device → entities/device}/local/repository/Device.repository.d.ts +1 -0
- package/dist/{device → entities/device}/local/repository/Device.repository.js +20 -3
- package/dist/{device → entities/device}/local/repository/Hub.repository.js +3 -3
- package/dist/{device → entities/device}/local/repository/Schedule.repository.js +2 -2
- package/dist/{device → entities/device}/local/services/Device.service.d.ts +10 -9
- package/dist/{device → entities/device}/local/services/Device.service.js +10 -4
- package/dist/entities/guest/Guest.repository.d.ts +6 -0
- package/dist/entities/guest/Guest.repository.js +74 -0
- package/dist/entities/guest/Guest.service.d.ts +6 -0
- package/dist/entities/guest/Guest.service.js +104 -0
- package/dist/entities/guest/IGuest.d.ts +12 -0
- package/dist/entities/guest/index.d.ts +2 -0
- package/dist/entities/guest/index.js +18 -0
- package/dist/{property → entities/property}/Property.repository.js +1 -1
- package/dist/entities/schedules/ISchedule.d.ts +14 -0
- package/dist/entities/schedules/Schedule.repository.d.ts +6 -0
- package/dist/entities/schedules/Schedule.repository.js +74 -0
- package/dist/entities/schedules/Schedule.service.d.ts +6 -0
- package/dist/entities/schedules/Schedule.service.js +104 -0
- package/dist/entities/schedules/index.d.ts +2 -0
- package/dist/entities/schedules/index.js +18 -0
- package/dist/{user → entities/user}/User.repository.js +2 -2
- package/dist/{user → entities/user}/User.service.js +3 -0
- package/dist/entities/zone/IZone.d.ts +10 -0
- package/dist/entities/zone/Zone.repository.d.ts +6 -0
- package/dist/{device/local/repository/Property.repository.js → entities/zone/Zone.repository.js} +14 -32
- package/dist/entities/zone/Zone.service.d.ts +6 -0
- package/dist/entities/zone/Zone.service.js +104 -0
- package/dist/entities/zone/index.d.ts +2 -0
- package/dist/entities/zone/index.js +18 -0
- package/dist/events/BaseEventHandler.d.ts +3 -3
- package/dist/events/BaseEventHandler.js +1 -1
- package/dist/events/DeviceEventHandler.d.ts +1 -1
- package/dist/events/DeviceEventHandler.js +4 -3
- package/dist/events/EventHandler.d.ts +10 -9
- package/dist/events/EventHandler.js +50 -9
- package/dist/events/InternalEventSubscription.js +1 -1
- package/dist/index.d.ts +9 -8
- package/dist/index.js +10 -8
- package/dist/issues/Issue.service.d.ts +1 -1
- package/dist/microservice/MicroServiceFactory.d.ts +1 -1
- package/dist/microservice/MicroServiceFactory.js +1 -1
- package/dist/utils/http.utils.d.ts +1 -2
- package/dist/utils/http.utils.js +5 -27
- package/package.json +1 -1
- package/dist/audit/AuditProperties.d.ts +0 -16
- package/dist/device/cloud/entities/CloudConnection.d.ts +0 -6
- package/dist/device/cloud/entities/CloudConnection.js +0 -6
- package/dist/device/cloud/interfaces/ICloudConnection.d.ts +0 -5
- package/dist/device/cloud/interfaces/IConnectionService.d.ts +0 -7
- package/dist/device/cloud/interfaces/IDeviceService.d.ts +0 -8
- package/dist/device/cloud/interfaces/IHubService.d.ts +0 -5
- package/dist/device/cloud/interfaces/IHubService.js +0 -2
- 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/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/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 -75
- package/dist/device/local/events/Events.js +0 -78
- 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/interfaces/IConnection.d.ts +0 -26
- package/dist/device/local/interfaces/IConnection.js +0 -14
- package/dist/device/local/interfaces/IHub.d.ts +0 -46
- package/dist/device/local/interfaces/IHub.js +0 -2
- 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/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/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/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/property/IProperty.d.ts +0 -29
- package/dist/property/IProperty.js +0 -2
- 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
- /package/dist/{audit/AuditProperties.js → entities/accessGroup/IAccessGroup.js} +0 -0
- /package/dist/{admin → entities/admin}/Admin.repository.d.ts +0 -0
- /package/dist/{admin → entities/admin}/Admin.service.d.ts +0 -0
- /package/dist/{admin → entities/admin}/Admin.service.js +0 -0
- /package/dist/{admin → entities/admin}/index.d.ts +0 -0
- /package/dist/{admin → entities/admin}/index.js +0 -0
- /package/dist/{connection → entities/connection}/Connection.repository.d.ts +0 -0
- /package/dist/{connection → entities/connection}/Connection.service.d.ts +0 -0
- /package/dist/{connection → entities/connection}/Connection.service.js +0 -0
- /package/dist/{connection → entities/connection}/IConnection.d.ts +0 -0
- /package/dist/{connection → entities/connection}/IConnection.js +0 -0
- /package/dist/{connection → entities/connection}/index.d.ts +0 -0
- /package/dist/{connection → entities/connection}/index.js +0 -0
- /package/dist/{device → entities/device}/cloud/entities/CloudDevice.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/entities/CloudDevice.js +0 -0
- /package/dist/{device → entities/device}/cloud/entities/CloudDeviceService.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/entities/CloudDeviceService.js +0 -0
- /package/dist/{device → entities/device}/cloud/entities/DeviceFactory.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/entities/DeviceFactory.js +0 -0
- /package/dist/{device → entities/device}/cloud/entities/index.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/entities/index.js +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/ICloudDevice.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/ICloudDevice.js +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/ICloudDeviceService.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/ICloudDeviceService.js +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/IDeviceFactory.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/IDeviceFactory.js +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/IRawDataTransformer.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/IRawDataTransformer.js +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/IRawDevice.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/IRawDevice.js +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/index.d.ts +0 -0
- /package/dist/{device → entities/device}/cloud/interfaces/index.js +0 -0
- /package/dist/{device → entities/device}/local/interfaces/IDevice.d.ts +0 -0
- /package/dist/{device → entities/device}/local/interfaces/IDevice.js +0 -0
- /package/dist/{device → entities/device}/local/interfaces/IDtDevice.d.ts +0 -0
- /package/dist/{device → entities/device}/local/interfaces/IDtDevice.js +0 -0
- /package/dist/{device → entities/device}/local/interfaces/ISchedule.d.ts +0 -0
- /package/dist/{device → entities/device}/local/interfaces/ISchedule.js +0 -0
- /package/dist/{device → entities/device}/local/interfaces/index.d.ts +0 -0
- /package/dist/{device → entities/device}/local/interfaces/index.js +0 -0
- /package/dist/{device → entities/device}/local/repository/Hub.repository.d.ts +0 -0
- /package/dist/{device → entities/device}/local/repository/Schedule.repository.d.ts +0 -0
- /package/dist/{device → entities/device}/local/services/Hub.service.d.ts +0 -0
- /package/dist/{device → entities/device}/local/services/Hub.service.js +0 -0
- /package/dist/{device → entities/device}/local/services/Schedule.service.d.ts +0 -0
- /package/dist/{device → entities/device}/local/services/Schedule.service.js +0 -0
- /package/dist/{device → entities/device}/local/services/index.d.ts +0 -0
- /package/dist/{device → entities/device}/local/services/index.js +0 -0
- /package/dist/{device/cloud/interfaces/ICloudConnection.js → entities/guest/IGuest.js} +0 -0
- /package/dist/{pms → entities/pms}/IPms.d.ts +0 -0
- /package/dist/{pms → entities/pms}/IPms.js +0 -0
- /package/dist/{pms → entities/pms}/index.d.ts +0 -0
- /package/dist/{pms → entities/pms}/index.js +0 -0
- /package/dist/{device/local/interfaces → entities/property}/IProperty.d.ts +0 -0
- /package/dist/{device/local/interfaces → entities/property}/IProperty.js +0 -0
- /package/dist/{property → entities/property}/Property.repository.d.ts +0 -0
- /package/dist/{property → entities/property}/Property.service.d.ts +0 -0
- /package/dist/{property → entities/property}/Property.service.js +0 -0
- /package/dist/{property → entities/property}/index.d.ts +0 -0
- /package/dist/{property → entities/property}/index.js +0 -0
- /package/dist/{device/cloud/interfaces/IConnectionService.js → entities/schedules/ISchedule.js} +0 -0
- /package/dist/{user → entities/user}/IUser.d.ts +0 -0
- /package/dist/{user → entities/user}/IUser.js +0 -0
- /package/dist/{user → entities/user}/User.repository.d.ts +0 -0
- /package/dist/{user → entities/user}/User.service.d.ts +0 -0
- /package/dist/{device/cloud/interfaces/IDeviceService.js → entities/zone/IZone.js} +0 -0
|
@@ -1,475 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
-
var _, done = false;
|
|
8
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
-
var context = {};
|
|
10
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
-
if (kind === "accessor") {
|
|
15
|
-
if (result === void 0) continue;
|
|
16
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
-
}
|
|
21
|
-
else if (_ = accept(result)) {
|
|
22
|
-
if (kind === "field") initializers.unshift(_);
|
|
23
|
-
else descriptor[key] = _;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
-
done = true;
|
|
28
|
-
};
|
|
29
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
-
var useValue = arguments.length > 2;
|
|
31
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
-
}
|
|
34
|
-
return useValue ? value : void 0;
|
|
35
|
-
};
|
|
36
|
-
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
37
|
-
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
38
|
-
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
39
|
-
};
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.AlertService = void 0;
|
|
42
|
-
const typedi_1 = require("typedi");
|
|
43
|
-
const Alert_model_1 = require("../models/Alert.model");
|
|
44
|
-
const alert_types_1 = require("../../../types/alert.types");
|
|
45
|
-
const AlertBuilder_1 = require("../entities/AlertBuilder");
|
|
46
|
-
let AlertService = (() => {
|
|
47
|
-
let _classDecorators = [(0, typedi_1.Service)()];
|
|
48
|
-
let _classDescriptor;
|
|
49
|
-
let _classExtraInitializers = [];
|
|
50
|
-
let _classThis;
|
|
51
|
-
var AlertService = _classThis = class {
|
|
52
|
-
constructor(alertRepository) {
|
|
53
|
-
this.alertRepository = alertRepository;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Create a readiness alert using AlertBuilder
|
|
57
|
-
*/
|
|
58
|
-
async raiseReadinessAlert(propertyId, title, description, entityId, entityType, createdBy) {
|
|
59
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createReadinessAlert()
|
|
60
|
-
.setPropertyId(propertyId)
|
|
61
|
-
.setTitle(title)
|
|
62
|
-
.setDescription(description);
|
|
63
|
-
if (entityId)
|
|
64
|
-
alertBuilder.setEntityId(entityId);
|
|
65
|
-
if (entityType)
|
|
66
|
-
alertBuilder.setEntityType(entityType);
|
|
67
|
-
if (createdBy)
|
|
68
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
69
|
-
return await this.createAlert(alertBuilder);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Create an operations alert using AlertBuilder
|
|
73
|
-
*/
|
|
74
|
-
async raiseOperationsAlert(propertyId, title, description, entityId, entityType, createdBy) {
|
|
75
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createOperationsAlert()
|
|
76
|
-
.setPropertyId(propertyId)
|
|
77
|
-
.setTitle(title)
|
|
78
|
-
.setDescription(description);
|
|
79
|
-
if (entityId)
|
|
80
|
-
alertBuilder.setEntityId(entityId);
|
|
81
|
-
if (entityType)
|
|
82
|
-
alertBuilder.setEntityType(entityType);
|
|
83
|
-
if (createdBy)
|
|
84
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
85
|
-
return await this.createAlert(alertBuilder);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Create a security alert using AlertBuilder
|
|
89
|
-
*/
|
|
90
|
-
async raiseSecurityAlert(propertyId, title, description, entityId, entityType, createdBy) {
|
|
91
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createSecurityAlert()
|
|
92
|
-
.setPropertyId(propertyId)
|
|
93
|
-
.setTitle(title)
|
|
94
|
-
.setDescription(description);
|
|
95
|
-
if (entityId)
|
|
96
|
-
alertBuilder.setEntityId(entityId);
|
|
97
|
-
if (entityType)
|
|
98
|
-
alertBuilder.setEntityType(entityType);
|
|
99
|
-
if (createdBy)
|
|
100
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
101
|
-
return await this.createAlert(alertBuilder);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Create an energy alert using AlertBuilder
|
|
105
|
-
*/
|
|
106
|
-
async raiseEnergyAlert(propertyId, title, description, entityId, entityType, createdBy) {
|
|
107
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createEnergyAlert()
|
|
108
|
-
.setPropertyId(propertyId)
|
|
109
|
-
.setTitle(title)
|
|
110
|
-
.setDescription(description);
|
|
111
|
-
if (entityId)
|
|
112
|
-
alertBuilder.setEntityId(entityId);
|
|
113
|
-
if (entityType)
|
|
114
|
-
alertBuilder.setEntityType(entityType);
|
|
115
|
-
if (createdBy)
|
|
116
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
117
|
-
return await this.createAlert(alertBuilder);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Create a device-specific alert using AlertBuilder
|
|
121
|
-
*/
|
|
122
|
-
async raiseDeviceAlert(deviceId, propertyId, title, description, category, severity, createdBy) {
|
|
123
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createDeviceAlert(deviceId, propertyId)
|
|
124
|
-
.setTitle(title)
|
|
125
|
-
.setDescription(description);
|
|
126
|
-
if (category)
|
|
127
|
-
alertBuilder.setCategory(category);
|
|
128
|
-
if (severity)
|
|
129
|
-
alertBuilder.setSeverity(severity);
|
|
130
|
-
if (createdBy)
|
|
131
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
132
|
-
return await this.createAlert(alertBuilder);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Create a hub-specific alert using AlertBuilder
|
|
136
|
-
*/
|
|
137
|
-
async raiseHubAlert(hubId, propertyId, title, description, category, severity, createdBy) {
|
|
138
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createHubAlert(hubId, propertyId)
|
|
139
|
-
.setTitle(title)
|
|
140
|
-
.setDescription(description);
|
|
141
|
-
if (category)
|
|
142
|
-
alertBuilder.setCategory(category);
|
|
143
|
-
if (severity)
|
|
144
|
-
alertBuilder.setSeverity(severity);
|
|
145
|
-
if (createdBy)
|
|
146
|
-
alertBuilder.setCreatedBy(createdBy);
|
|
147
|
-
return await this.createAlert(alertBuilder);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Create a new alert with business logic validation
|
|
151
|
-
* Accepts either a CreateAlertData object or an AlertBuilder instance
|
|
152
|
-
*/
|
|
153
|
-
async createAlert(alertData) {
|
|
154
|
-
let processedAlertData;
|
|
155
|
-
// Handle AlertBuilder instance
|
|
156
|
-
if (alertData instanceof AlertBuilder_1.AlertBuilder) {
|
|
157
|
-
processedAlertData = alertData.build();
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
processedAlertData = alertData;
|
|
161
|
-
}
|
|
162
|
-
// Business logic: Validate alert data
|
|
163
|
-
this.validateAlertData(processedAlertData);
|
|
164
|
-
// Business logic: Set default severity if not provided
|
|
165
|
-
if (!processedAlertData.severity) {
|
|
166
|
-
processedAlertData.severity = this.determineDefaultSeverity(processedAlertData.category);
|
|
167
|
-
}
|
|
168
|
-
// Business logic: Validate snooze date is in the future
|
|
169
|
-
if (processedAlertData.snoozeUntil && processedAlertData.snoozeUntil <= new Date()) {
|
|
170
|
-
throw new Error("Snooze date must be in the future");
|
|
171
|
-
}
|
|
172
|
-
return await this.alertRepository.create(processedAlertData);
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Get alert by ID with business logic
|
|
176
|
-
*/
|
|
177
|
-
async getAlertById(id, includeDeleted = false) {
|
|
178
|
-
if (!id) {
|
|
179
|
-
throw new Error("Alert ID is required");
|
|
180
|
-
}
|
|
181
|
-
const alert = await this.alertRepository.findById(id, includeDeleted);
|
|
182
|
-
// Business logic: Check if alert is snoozed and expired
|
|
183
|
-
if (alert?.snoozeUntil && alert.snoozeUntil <= new Date()) {
|
|
184
|
-
console.warn(`Alert ${id} snooze has expired`);
|
|
185
|
-
}
|
|
186
|
-
return alert;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Get all alerts with business logic filtering
|
|
190
|
-
*/
|
|
191
|
-
async getAlerts(filters = {}) {
|
|
192
|
-
// Business logic: Validate filters
|
|
193
|
-
this.validateFilters(filters);
|
|
194
|
-
// Business logic: Apply business rules to filters
|
|
195
|
-
const enhancedFilters = this.applyBusinessRules(filters);
|
|
196
|
-
return await this.alertRepository.findAll(enhancedFilters);
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Update an alert with business logic validation
|
|
200
|
-
*/
|
|
201
|
-
async updateAlert(id, updateData) {
|
|
202
|
-
if (!id) {
|
|
203
|
-
throw new Error("Alert ID is required");
|
|
204
|
-
}
|
|
205
|
-
// Business logic: Validate update data
|
|
206
|
-
this.validateUpdateData(updateData);
|
|
207
|
-
// Business logic: Check if alert exists and is not deleted
|
|
208
|
-
const existingAlert = await this.alertRepository.findById(id);
|
|
209
|
-
if (!existingAlert) {
|
|
210
|
-
throw new Error("Alert not found");
|
|
211
|
-
}
|
|
212
|
-
// Business logic: Handle snooze validation
|
|
213
|
-
if (updateData.snoozeUntil) {
|
|
214
|
-
this.validateSnoozeDate(updateData.snoozeUntil);
|
|
215
|
-
}
|
|
216
|
-
return await this.alertRepository.update(id, updateData);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Soft delete an alert with business logic
|
|
220
|
-
*/
|
|
221
|
-
async deleteAlert(id, deletedBy) {
|
|
222
|
-
if (!id || !deletedBy) {
|
|
223
|
-
throw new Error("Alert ID and deleted by user are required");
|
|
224
|
-
}
|
|
225
|
-
// Business logic: Check if alert can be deleted
|
|
226
|
-
const alert = await this.alertRepository.findById(id);
|
|
227
|
-
if (!alert) {
|
|
228
|
-
throw new Error("Alert not found");
|
|
229
|
-
}
|
|
230
|
-
// Business logic: Prevent deletion of critical alerts (optional rule)
|
|
231
|
-
if (alert.severity === alert_types_1.AlertSeverity.CRITICAL) {
|
|
232
|
-
throw new Error("Cannot delete critical alerts");
|
|
233
|
-
}
|
|
234
|
-
return await this.alertRepository.softDelete(id, deletedBy);
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Mark alert as read with business logic
|
|
238
|
-
*/
|
|
239
|
-
async markAsRead(id, updatedBy) {
|
|
240
|
-
if (!id || !updatedBy) {
|
|
241
|
-
throw new Error("Alert ID and updated by user are required");
|
|
242
|
-
}
|
|
243
|
-
const alertModel = await Alert_model_1.AlertModel.findById(id);
|
|
244
|
-
if (!alertModel)
|
|
245
|
-
return null;
|
|
246
|
-
alertModel.markAsRead(updatedBy);
|
|
247
|
-
return await alertModel.save();
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Mark alert as unread with business logic
|
|
251
|
-
*/
|
|
252
|
-
async markAsUnread(id, updatedBy) {
|
|
253
|
-
if (!id || !updatedBy) {
|
|
254
|
-
throw new Error("Alert ID and updated by user are required");
|
|
255
|
-
}
|
|
256
|
-
const alertModel = await Alert_model_1.AlertModel.findById(id);
|
|
257
|
-
if (!alertModel)
|
|
258
|
-
return null;
|
|
259
|
-
alertModel.markAsUnread(updatedBy);
|
|
260
|
-
return await alertModel.save();
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Activate an alert with business logic
|
|
264
|
-
*/
|
|
265
|
-
async activateAlert(id, updatedBy) {
|
|
266
|
-
if (!id || !updatedBy) {
|
|
267
|
-
throw new Error("Alert ID and updated by user are required");
|
|
268
|
-
}
|
|
269
|
-
const alertModel = await Alert_model_1.AlertModel.findById(id);
|
|
270
|
-
if (!alertModel)
|
|
271
|
-
return null;
|
|
272
|
-
alertModel.activate(updatedBy);
|
|
273
|
-
return await alertModel.save();
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Deactivate an alert with business logic
|
|
277
|
-
*/
|
|
278
|
-
async deactivateAlert(id, updatedBy) {
|
|
279
|
-
if (!id || !updatedBy) {
|
|
280
|
-
throw new Error("Alert ID and updated by user are required");
|
|
281
|
-
}
|
|
282
|
-
const alertModel = await Alert_model_1.AlertModel.findById(id);
|
|
283
|
-
if (!alertModel)
|
|
284
|
-
return null;
|
|
285
|
-
alertModel.deactivate(updatedBy);
|
|
286
|
-
return await alertModel.save();
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Snooze an alert with business logic
|
|
290
|
-
*/
|
|
291
|
-
async snoozeAlert(id, until, updatedBy) {
|
|
292
|
-
if (!id || !until || !updatedBy) {
|
|
293
|
-
throw new Error("Alert ID, snooze date, and updated by user are required");
|
|
294
|
-
}
|
|
295
|
-
// Business logic: Validate snooze date
|
|
296
|
-
this.validateSnoozeDate(until);
|
|
297
|
-
const alertModel = await Alert_model_1.AlertModel.findById(id);
|
|
298
|
-
if (!alertModel)
|
|
299
|
-
return null;
|
|
300
|
-
alertModel.snooze(until, updatedBy);
|
|
301
|
-
return await alertModel.save();
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Unsnooze an alert with business logic
|
|
305
|
-
*/
|
|
306
|
-
async unsnoozeAlert(id, updatedBy) {
|
|
307
|
-
if (!id || !updatedBy) {
|
|
308
|
-
throw new Error("Alert ID and updated by user are required");
|
|
309
|
-
}
|
|
310
|
-
const alertModel = await Alert_model_1.AlertModel.findById(id);
|
|
311
|
-
if (!alertModel)
|
|
312
|
-
return null;
|
|
313
|
-
alertModel.unsnooze(updatedBy);
|
|
314
|
-
return await alertModel.save();
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Get alerts by property with business logic
|
|
318
|
-
*/
|
|
319
|
-
async getAlertsByProperty(propertyId, includeDeleted = false) {
|
|
320
|
-
if (!propertyId) {
|
|
321
|
-
throw new Error("Property ID is required");
|
|
322
|
-
}
|
|
323
|
-
return await this.alertRepository.findByProperty(propertyId, includeDeleted);
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Get alerts by entity with business logic
|
|
327
|
-
*/
|
|
328
|
-
async getAlertsByEntity(entityId, entityType, includeDeleted = false) {
|
|
329
|
-
if (!entityId || !entityType) {
|
|
330
|
-
throw new Error("Entity ID and entity type are required");
|
|
331
|
-
}
|
|
332
|
-
return await this.alertRepository.findByEntity(entityId, entityType, includeDeleted);
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Get alerts by category with business logic
|
|
336
|
-
*/
|
|
337
|
-
async getAlertsByCategory(category, includeDeleted = false) {
|
|
338
|
-
if (!category) {
|
|
339
|
-
throw new Error("Alert category is required");
|
|
340
|
-
}
|
|
341
|
-
return await this.alertRepository.findByCategory(category, includeDeleted);
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Get alerts by severity with business logic
|
|
345
|
-
*/
|
|
346
|
-
async getAlertsBySeverity(severity, includeDeleted = false) {
|
|
347
|
-
if (!severity) {
|
|
348
|
-
throw new Error("Alert severity is required");
|
|
349
|
-
}
|
|
350
|
-
return await this.alertRepository.findBySeverity(severity, includeDeleted);
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Get active alerts with business logic
|
|
354
|
-
*/
|
|
355
|
-
async getActiveAlerts(includeDeleted = false) {
|
|
356
|
-
const activeAlerts = await this.alertRepository.findActive(includeDeleted);
|
|
357
|
-
// Business logic: Log active alerts for monitoring
|
|
358
|
-
if (activeAlerts.length > 0) {
|
|
359
|
-
console.log(`Found ${activeAlerts.length} active alerts`);
|
|
360
|
-
}
|
|
361
|
-
return activeAlerts;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Get unread alerts with business logic
|
|
365
|
-
*/
|
|
366
|
-
async getUnreadAlerts(includeDeleted = false) {
|
|
367
|
-
const unreadAlerts = await this.alertRepository.findUnread(includeDeleted);
|
|
368
|
-
// Business logic: Log unread alerts for monitoring
|
|
369
|
-
if (unreadAlerts.length > 0) {
|
|
370
|
-
console.warn(`Found ${unreadAlerts.length} unread alerts`);
|
|
371
|
-
}
|
|
372
|
-
return unreadAlerts;
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Get snoozed alerts with business logic
|
|
376
|
-
*/
|
|
377
|
-
async getSnoozedAlerts(includeDeleted = false) {
|
|
378
|
-
return await this.alertRepository.findSnoozed(includeDeleted);
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Get expired snooze alerts with business logic
|
|
382
|
-
*/
|
|
383
|
-
async getExpiredSnoozeAlerts(includeDeleted = false) {
|
|
384
|
-
const expiredAlerts = await this.alertRepository.findExpiredSnooze(includeDeleted);
|
|
385
|
-
// Business logic: Log expired snooze alerts
|
|
386
|
-
if (expiredAlerts.length > 0) {
|
|
387
|
-
console.warn(`Found ${expiredAlerts.length} alerts with expired snooze`);
|
|
388
|
-
}
|
|
389
|
-
return expiredAlerts;
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Get alert statistics with business logic
|
|
393
|
-
*/
|
|
394
|
-
async getAlertStatistics(propertyId) {
|
|
395
|
-
const stats = await this.alertRepository.getStatistics(propertyId);
|
|
396
|
-
// Business logic: Add alerts for critical metrics
|
|
397
|
-
if (stats.unread > 0) {
|
|
398
|
-
console.warn(`Alert: ${stats.unread} unread alerts require attention`);
|
|
399
|
-
}
|
|
400
|
-
if (stats.bySeverity[alert_types_1.AlertSeverity.CRITICAL] > 0) {
|
|
401
|
-
console.error(`Alert: ${stats.bySeverity[alert_types_1.AlertSeverity.CRITICAL]} critical alerts require immediate attention`);
|
|
402
|
-
}
|
|
403
|
-
if (stats.bySeverity[alert_types_1.AlertSeverity.HIGH] > 0) {
|
|
404
|
-
console.warn(`Alert: ${stats.bySeverity[alert_types_1.AlertSeverity.HIGH]} high severity alerts require attention`);
|
|
405
|
-
}
|
|
406
|
-
return stats;
|
|
407
|
-
}
|
|
408
|
-
// Private business logic methods
|
|
409
|
-
validateAlertData(data) {
|
|
410
|
-
if (!data.title || data.title.trim().length < 3) {
|
|
411
|
-
throw new Error("Alert title must be at least 3 characters long");
|
|
412
|
-
}
|
|
413
|
-
if (!data.description || data.description.trim().length < 5) {
|
|
414
|
-
throw new Error("Alert description must be at least 5 characters long");
|
|
415
|
-
}
|
|
416
|
-
if (!data.propertyId) {
|
|
417
|
-
throw new Error("Property ID is required");
|
|
418
|
-
}
|
|
419
|
-
if (!data.entityType) {
|
|
420
|
-
throw new Error("Entity type is required");
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
validateFilters(filters) {
|
|
424
|
-
if (filters.limit && (filters.limit < 1 || filters.limit > 100)) {
|
|
425
|
-
throw new Error("Limit must be between 1 and 100");
|
|
426
|
-
}
|
|
427
|
-
if (filters.skip && filters.skip < 0) {
|
|
428
|
-
throw new Error("Skip must be non-negative");
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
validateUpdateData(data) {
|
|
432
|
-
if (data.title && data.title.trim().length < 3) {
|
|
433
|
-
throw new Error("Alert title must be at least 3 characters long");
|
|
434
|
-
}
|
|
435
|
-
if (data.description && data.description.trim().length < 5) {
|
|
436
|
-
throw new Error("Alert description must be at least 5 characters long");
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
validateSnoozeDate(snoozeUntil) {
|
|
440
|
-
if (snoozeUntil <= new Date()) {
|
|
441
|
-
throw new Error("Snooze date must be in the future");
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
determineDefaultSeverity(category) {
|
|
445
|
-
// Business logic: Determine default severity based on category
|
|
446
|
-
const categorySeverities = {
|
|
447
|
-
[alert_types_1.AlertCategory.READINESS]: alert_types_1.AlertSeverity.MEDIUM,
|
|
448
|
-
[alert_types_1.AlertCategory.OPERATIONS]: alert_types_1.AlertSeverity.HIGH,
|
|
449
|
-
[alert_types_1.AlertCategory.SECURITY]: alert_types_1.AlertSeverity.CRITICAL,
|
|
450
|
-
[alert_types_1.AlertCategory.ENERGY]: alert_types_1.AlertSeverity.LOW,
|
|
451
|
-
[alert_types_1.AlertCategory.OTHER]: alert_types_1.AlertSeverity.MEDIUM,
|
|
452
|
-
};
|
|
453
|
-
return categorySeverities[category] || alert_types_1.AlertSeverity.MEDIUM;
|
|
454
|
-
}
|
|
455
|
-
applyBusinessRules(filters) {
|
|
456
|
-
// Business logic: Apply additional filters based on business rules
|
|
457
|
-
const enhancedFilters = { ...filters };
|
|
458
|
-
// Example: Always exclude deleted alerts unless explicitly requested
|
|
459
|
-
if (!enhancedFilters.includeDeleted) {
|
|
460
|
-
enhancedFilters.includeDeleted = false;
|
|
461
|
-
}
|
|
462
|
-
return enhancedFilters;
|
|
463
|
-
}
|
|
464
|
-
};
|
|
465
|
-
__setFunctionName(_classThis, "AlertService");
|
|
466
|
-
(() => {
|
|
467
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
468
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
469
|
-
AlertService = _classThis = _classDescriptor.value;
|
|
470
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
471
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
472
|
-
})();
|
|
473
|
-
return AlertService = _classThis;
|
|
474
|
-
})();
|
|
475
|
-
exports.AlertService = AlertService;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { AlertService } from "./Alert.service";
|
|
2
|
-
/**
|
|
3
|
-
* Example usage of the updated AlertService with AlertBuilder integration
|
|
4
|
-
* This file demonstrates various ways to use the AlertService with the new AlertBuilder
|
|
5
|
-
*/
|
|
6
|
-
export declare class AlertServiceExample {
|
|
7
|
-
private readonly alertService;
|
|
8
|
-
constructor(alertService: AlertService);
|
|
9
|
-
/**
|
|
10
|
-
* Example 1: Using the updated createAlert method with AlertBuilder
|
|
11
|
-
*/
|
|
12
|
-
createAlertWithBuilder(): Promise<import("../../../types/alert.types").AlertDocument>;
|
|
13
|
-
/**
|
|
14
|
-
* Example 2: Using convenience methods for specific alert types
|
|
15
|
-
*/
|
|
16
|
-
createSpecificAlerts(): Promise<{
|
|
17
|
-
readinessAlert: import("../../../types/alert.types").AlertDocument;
|
|
18
|
-
operationsAlert: import("../../../types/alert.types").AlertDocument;
|
|
19
|
-
securityAlert: import("../../../types/alert.types").AlertDocument;
|
|
20
|
-
energyAlert: import("../../../types/alert.types").AlertDocument;
|
|
21
|
-
}>;
|
|
22
|
-
/**
|
|
23
|
-
* Example 3: Using device-specific alert methods
|
|
24
|
-
*/
|
|
25
|
-
createDeviceAlerts(): Promise<{
|
|
26
|
-
deviceAlert1: import("../../../types/alert.types").AlertDocument;
|
|
27
|
-
deviceAlert2: import("../../../types/alert.types").AlertDocument;
|
|
28
|
-
}>;
|
|
29
|
-
/**
|
|
30
|
-
* Example 4: Using hub-specific alert methods
|
|
31
|
-
*/
|
|
32
|
-
createHubAlerts(): Promise<{
|
|
33
|
-
hubAlert1: import("../../../types/alert.types").AlertDocument;
|
|
34
|
-
hubAlert2: import("../../../types/alert.types").AlertDocument;
|
|
35
|
-
}>;
|
|
36
|
-
/**
|
|
37
|
-
* Example 5: Using static factory methods with AlertBuilder
|
|
38
|
-
*/
|
|
39
|
-
createAlertsWithStaticMethods(): Promise<{
|
|
40
|
-
alert1: import("../../../types/alert.types").AlertDocument;
|
|
41
|
-
alert2: import("../../../types/alert.types").AlertDocument;
|
|
42
|
-
}>;
|
|
43
|
-
/**
|
|
44
|
-
* Example 6: Creating multiple alerts efficiently
|
|
45
|
-
*/
|
|
46
|
-
createMultipleAlerts(): Promise<import("../../../types/alert.types").AlertDocument[]>;
|
|
47
|
-
/**
|
|
48
|
-
* Example 7: Creating alerts with snooze functionality
|
|
49
|
-
*/
|
|
50
|
-
createSnoozedAlert(): Promise<import("../../../types/alert.types").AlertDocument>;
|
|
51
|
-
/**
|
|
52
|
-
* Example 8: Backward compatibility - still works with CreateAlertData
|
|
53
|
-
*/
|
|
54
|
-
createAlertWithLegacyData(): Promise<import("../../../types/alert.types").AlertDocument>;
|
|
55
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlertServiceExample = void 0;
|
|
4
|
-
const AlertBuilder_1 = require("../entities/AlertBuilder");
|
|
5
|
-
const alert_types_1 = require("../../../types/alert.types");
|
|
6
|
-
/**
|
|
7
|
-
* Example usage of the updated AlertService with AlertBuilder integration
|
|
8
|
-
* This file demonstrates various ways to use the AlertService with the new AlertBuilder
|
|
9
|
-
*/
|
|
10
|
-
class AlertServiceExample {
|
|
11
|
-
constructor(alertService) {
|
|
12
|
-
this.alertService = alertService;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Example 1: Using the updated createAlert method with AlertBuilder
|
|
16
|
-
*/
|
|
17
|
-
async createAlertWithBuilder() {
|
|
18
|
-
const alertBuilder = new AlertBuilder_1.AlertBuilder()
|
|
19
|
-
.setCategory(alert_types_1.AlertCategory.OPERATIONS)
|
|
20
|
-
.setPropertyId("prop123")
|
|
21
|
-
.setTitle("Device Offline")
|
|
22
|
-
.setDescription("Device has been offline for more than 5 minutes")
|
|
23
|
-
.setEntityId("device456")
|
|
24
|
-
.setEntityType(alert_types_1.EntityType.DEVICE)
|
|
25
|
-
.setSeverity(alert_types_1.AlertSeverity.HIGH)
|
|
26
|
-
.setCreatedBy("user789");
|
|
27
|
-
// Pass the AlertBuilder directly to createAlert
|
|
28
|
-
const alert = await this.alertService.createAlert(alertBuilder);
|
|
29
|
-
return alert;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Example 2: Using convenience methods for specific alert types
|
|
33
|
-
*/
|
|
34
|
-
async createSpecificAlerts() {
|
|
35
|
-
// Create a readiness alert
|
|
36
|
-
const readinessAlert = await this.alertService.raiseReadinessAlert("prop123", "System Maintenance Required", "System maintenance is scheduled for tonight", "system456", alert_types_1.EntityType.PROPERTY, "admin");
|
|
37
|
-
// Create an operations alert
|
|
38
|
-
const operationsAlert = await this.alertService.raiseOperationsAlert("prop123", "Device Temperature High", "Device temperature exceeds normal operating range", "device789", alert_types_1.EntityType.DEVICE, "monitor");
|
|
39
|
-
// Create a security alert
|
|
40
|
-
const securityAlert = await this.alertService.raiseSecurityAlert("prop123", "Unauthorized Access Attempt", "Multiple failed login attempts detected", "user123", alert_types_1.EntityType.USER, "security-system");
|
|
41
|
-
// Create an energy alert
|
|
42
|
-
const energyAlert = await this.alertService.raiseEnergyAlert("prop123", "High Energy Consumption", "Energy usage is 20% above normal levels", "zone456", alert_types_1.EntityType.COLLECTION, "energy-monitor");
|
|
43
|
-
return { readinessAlert, operationsAlert, securityAlert, energyAlert };
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Example 3: Using device-specific alert methods
|
|
47
|
-
*/
|
|
48
|
-
async createDeviceAlerts() {
|
|
49
|
-
// Create a device alert with default category and severity
|
|
50
|
-
const deviceAlert1 = await this.alertService.raiseDeviceAlert("device123", "prop456", "Device Battery Low", "Device battery level is below 20%", undefined, // Use default category
|
|
51
|
-
undefined, // Use default severity
|
|
52
|
-
"system");
|
|
53
|
-
// Create a device alert with custom category and severity
|
|
54
|
-
const deviceAlert2 = await this.alertService.raiseDeviceAlert("device789", "prop456", "Device Firmware Update Available", "New firmware version is available for installation", alert_types_1.AlertCategory.READINESS, alert_types_1.AlertSeverity.MEDIUM, "firmware-manager");
|
|
55
|
-
return { deviceAlert1, deviceAlert2 };
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Example 4: Using hub-specific alert methods
|
|
59
|
-
*/
|
|
60
|
-
async createHubAlerts() {
|
|
61
|
-
// Create a hub alert with default settings
|
|
62
|
-
const hubAlert1 = await this.alertService.raiseHubAlert("hub123", "prop456", "Hub Connection Lost", "Hub has lost connection to the network", undefined, // Use default category
|
|
63
|
-
undefined, // Use default severity
|
|
64
|
-
"network-monitor");
|
|
65
|
-
// Create a hub alert with custom settings
|
|
66
|
-
const hubAlert2 = await this.alertService.raiseHubAlert("hub789", "prop456", "Hub Maintenance Required", "Hub requires scheduled maintenance", alert_types_1.AlertCategory.READINESS, alert_types_1.AlertSeverity.LOW, "maintenance-system");
|
|
67
|
-
return { hubAlert1, hubAlert2 };
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Example 5: Using static factory methods with AlertBuilder
|
|
71
|
-
*/
|
|
72
|
-
async createAlertsWithStaticMethods() {
|
|
73
|
-
// Create a device alert using static factory method
|
|
74
|
-
const deviceAlert = AlertBuilder_1.AlertBuilder.createDeviceAlert("device123", "prop456")
|
|
75
|
-
.setCategory(alert_types_1.AlertCategory.OPERATIONS)
|
|
76
|
-
.setTitle("Device Offline")
|
|
77
|
-
.setDescription("Device has been offline for more than 5 minutes")
|
|
78
|
-
.setSeverity(alert_types_1.AlertSeverity.HIGH)
|
|
79
|
-
.setCreatedBy("monitor");
|
|
80
|
-
const alert1 = await this.alertService.createAlert(deviceAlert);
|
|
81
|
-
// Create a hub alert using static factory method
|
|
82
|
-
const hubAlert = AlertBuilder_1.AlertBuilder.createHubAlert("hub789", "prop202")
|
|
83
|
-
.setCategory(alert_types_1.AlertCategory.SECURITY)
|
|
84
|
-
.setTitle("Hub Security Breach")
|
|
85
|
-
.setDescription("Unauthorized access attempt detected on hub")
|
|
86
|
-
.setSeverity(alert_types_1.AlertSeverity.CRITICAL)
|
|
87
|
-
.setCreatedBy("security-system");
|
|
88
|
-
const alert2 = await this.alertService.createAlert(hubAlert);
|
|
89
|
-
return { alert1, alert2 };
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Example 6: Creating multiple alerts efficiently
|
|
93
|
-
*/
|
|
94
|
-
async createMultipleAlerts() {
|
|
95
|
-
const alerts = [];
|
|
96
|
-
// Create multiple device alerts efficiently
|
|
97
|
-
const deviceIds = ["device1", "device2", "device3"];
|
|
98
|
-
const propertyId = "prop123";
|
|
99
|
-
for (const deviceId of deviceIds) {
|
|
100
|
-
const alertBuilder = AlertBuilder_1.AlertBuilder.createDeviceAlert(deviceId, propertyId)
|
|
101
|
-
.setCategory(alert_types_1.AlertCategory.OPERATIONS)
|
|
102
|
-
.setTitle(`Device ${deviceId} Status`)
|
|
103
|
-
.setDescription(`Status check for device ${deviceId}`)
|
|
104
|
-
.setSeverity(alert_types_1.AlertSeverity.MEDIUM)
|
|
105
|
-
.setCreatedBy("batch-processor");
|
|
106
|
-
const alert = await this.alertService.createAlert(alertBuilder);
|
|
107
|
-
alerts.push(alert);
|
|
108
|
-
}
|
|
109
|
-
return alerts;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Example 7: Creating alerts with snooze functionality
|
|
113
|
-
*/
|
|
114
|
-
async createSnoozedAlert() {
|
|
115
|
-
const snoozeUntil = new Date();
|
|
116
|
-
snoozeUntil.setHours(snoozeUntil.getHours() + 2); // Snooze for 2 hours
|
|
117
|
-
const alertBuilder = new AlertBuilder_1.AlertBuilder()
|
|
118
|
-
.setCategory(alert_types_1.AlertCategory.OTHER)
|
|
119
|
-
.setPropertyId("prop303")
|
|
120
|
-
.setTitle("Scheduled Maintenance")
|
|
121
|
-
.setDescription("System maintenance scheduled for tonight")
|
|
122
|
-
.setEntityType(alert_types_1.EntityType.PROPERTY)
|
|
123
|
-
.setSeverity(alert_types_1.AlertSeverity.INFO)
|
|
124
|
-
.setCreatedBy("admin")
|
|
125
|
-
.setSnoozeUntil(snoozeUntil);
|
|
126
|
-
const alert = await this.alertService.createAlert(alertBuilder);
|
|
127
|
-
return alert;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Example 8: Backward compatibility - still works with CreateAlertData
|
|
131
|
-
*/
|
|
132
|
-
async createAlertWithLegacyData() {
|
|
133
|
-
const alertData = {
|
|
134
|
-
category: alert_types_1.AlertCategory.OPERATIONS,
|
|
135
|
-
propertyId: "prop123",
|
|
136
|
-
title: "Legacy Alert",
|
|
137
|
-
description: "This alert was created using the old CreateAlertData format",
|
|
138
|
-
entityId: "device456",
|
|
139
|
-
entityType: alert_types_1.EntityType.DEVICE,
|
|
140
|
-
severity: alert_types_1.AlertSeverity.MEDIUM,
|
|
141
|
-
createdBy: "legacy-system"
|
|
142
|
-
};
|
|
143
|
-
// This still works with the updated createAlert method
|
|
144
|
-
const alert = await this.alertService.createAlert(alertData);
|
|
145
|
-
return alert;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
exports.AlertServiceExample = AlertServiceExample;
|