dt-common-device 4.0.8 → 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/{device/local/repository/Connection.repository.js → entities/accessGroup/AccessGroup.repository.js} +15 -35
- package/dist/entities/accessGroup/AccessGroup.service.d.ts +5 -0
- package/dist/entities/accessGroup/AccessGroup.service.js +105 -0
- 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.js +3 -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 +9 -9
- package/dist/{device → entities/device}/local/services/Device.service.js +4 -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/entities/user/IUser.d.ts +15 -0
- package/dist/entities/user/User.repository.d.ts +5 -0
- package/dist/entities/user/User.repository.js +68 -0
- package/dist/entities/user/User.service.d.ts +6 -0
- package/dist/entities/user/User.service.js +103 -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 -28
- 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/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/IConnectionService.d.ts +0 -7
- package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +0 -7
- package/dist/device/cloud/interfaces/IDeviceConnectionService.js +0 -3
- package/dist/device/cloud/interfaces/IDeviceService.d.ts +0 -8
- package/dist/device/cloud/interfaces/IDevicesService.d.ts +0 -9
- 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/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/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/DeviceHub.service.d.ts +0 -11
- package/dist/device/local/services/DeviceHub.service.js +0 -40
- 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/Device.repository.d.ts +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/{device/cloud/interfaces/IDeviceService.js → entities/user/IUser.js} +0 -0
- /package/dist/{device/cloud/interfaces/IDevicesService.js → entities/zone/IZone.js} +0 -0
|
@@ -1,401 +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.IssueRepository = void 0;
|
|
42
|
-
const typedi_1 = require("typedi");
|
|
43
|
-
const Issue_model_1 = require("../models/Issue.model");
|
|
44
|
-
const issue_types_1 = require("../../../types/issue.types");
|
|
45
|
-
let IssueRepository = (() => {
|
|
46
|
-
let _classDecorators = [(0, typedi_1.Service)()];
|
|
47
|
-
let _classDescriptor;
|
|
48
|
-
let _classExtraInitializers = [];
|
|
49
|
-
let _classThis;
|
|
50
|
-
var IssueRepository = _classThis = class {
|
|
51
|
-
/**
|
|
52
|
-
* Create a new issue
|
|
53
|
-
*/
|
|
54
|
-
async create(issueData) {
|
|
55
|
-
try {
|
|
56
|
-
const issue = new Issue_model_1.IssueModel({
|
|
57
|
-
...issueData,
|
|
58
|
-
status: issue_types_1.IssueStatus.PENDING,
|
|
59
|
-
priority: issueData.priority || issue_types_1.IssuePriority.MEDIUM,
|
|
60
|
-
isDeleted: false,
|
|
61
|
-
});
|
|
62
|
-
return await issue.save();
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
throw new Error(`Failed to create issue: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Find issue by ID
|
|
70
|
-
*/
|
|
71
|
-
async findById(id, includeDeleted = false) {
|
|
72
|
-
try {
|
|
73
|
-
const query = { _id: id };
|
|
74
|
-
if (!includeDeleted) {
|
|
75
|
-
query.isDeleted = false;
|
|
76
|
-
}
|
|
77
|
-
return await Issue_model_1.IssueModel.findOne(query);
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
throw new Error(`Failed to find issue by ID: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Find all issues with filters
|
|
85
|
-
*/
|
|
86
|
-
async findAll(filters = {}) {
|
|
87
|
-
try {
|
|
88
|
-
const query = {};
|
|
89
|
-
if (filters.propertyId)
|
|
90
|
-
query.propertyId = filters.propertyId;
|
|
91
|
-
if (filters.assignedTo)
|
|
92
|
-
query.assignedTo = filters.assignedTo;
|
|
93
|
-
if (filters.status)
|
|
94
|
-
query.status = filters.status;
|
|
95
|
-
if (filters.priority)
|
|
96
|
-
query.priority = filters.priority;
|
|
97
|
-
if (filters.category)
|
|
98
|
-
query.category = filters.category;
|
|
99
|
-
if (filters.entityType)
|
|
100
|
-
query.entityType = filters.entityType;
|
|
101
|
-
if (filters.entityId)
|
|
102
|
-
query.entityId = filters.entityId;
|
|
103
|
-
if (!filters.includeDeleted)
|
|
104
|
-
query.isDeleted = false;
|
|
105
|
-
const queryBuilder = Issue_model_1.IssueModel.find(query);
|
|
106
|
-
if (filters.sort) {
|
|
107
|
-
queryBuilder.sort(filters.sort);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
queryBuilder.sort({ createdAt: -1 });
|
|
111
|
-
}
|
|
112
|
-
if (filters.skip)
|
|
113
|
-
queryBuilder.skip(filters.skip);
|
|
114
|
-
if (filters.limit)
|
|
115
|
-
queryBuilder.limit(filters.limit);
|
|
116
|
-
return await queryBuilder.exec();
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
throw new Error(`Failed to find issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Update an issue
|
|
124
|
-
*/
|
|
125
|
-
async update(id, updateData) {
|
|
126
|
-
try {
|
|
127
|
-
return await Issue_model_1.IssueModel.findByIdAndUpdate(id, { ...updateData, updatedAt: new Date() }, { new: true, runValidators: true });
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
throw new Error(`Failed to update issue: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Soft delete an issue
|
|
135
|
-
*/
|
|
136
|
-
async softDelete(id, deletedBy) {
|
|
137
|
-
try {
|
|
138
|
-
const result = await Issue_model_1.IssueModel.findByIdAndUpdate(id, {
|
|
139
|
-
isDeleted: true,
|
|
140
|
-
updatedBy: deletedBy,
|
|
141
|
-
updatedAt: new Date(),
|
|
142
|
-
});
|
|
143
|
-
return !!result;
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
throw new Error(`Failed to soft delete issue: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Permanently delete an issue
|
|
151
|
-
*/
|
|
152
|
-
async hardDelete(id) {
|
|
153
|
-
try {
|
|
154
|
-
const result = await Issue_model_1.IssueModel.findByIdAndDelete(id);
|
|
155
|
-
return !!result;
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
throw new Error(`Failed to permanently delete issue: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Count issues with filters
|
|
163
|
-
*/
|
|
164
|
-
async count(filters = {}) {
|
|
165
|
-
try {
|
|
166
|
-
const query = {};
|
|
167
|
-
if (filters.propertyId)
|
|
168
|
-
query.propertyId = filters.propertyId;
|
|
169
|
-
if (filters.assignedTo)
|
|
170
|
-
query.assignedTo = filters.assignedTo;
|
|
171
|
-
if (filters.status)
|
|
172
|
-
query.status = filters.status;
|
|
173
|
-
if (filters.priority)
|
|
174
|
-
query.priority = filters.priority;
|
|
175
|
-
if (filters.category)
|
|
176
|
-
query.category = filters.category;
|
|
177
|
-
if (filters.entityType)
|
|
178
|
-
query.entityType = filters.entityType;
|
|
179
|
-
if (filters.entityId)
|
|
180
|
-
query.entityId = filters.entityId;
|
|
181
|
-
if (!filters.includeDeleted)
|
|
182
|
-
query.isDeleted = false;
|
|
183
|
-
return await Issue_model_1.IssueModel.countDocuments(query);
|
|
184
|
-
}
|
|
185
|
-
catch (error) {
|
|
186
|
-
throw new Error(`Failed to count issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Find issues by property
|
|
191
|
-
*/
|
|
192
|
-
async findByProperty(propertyId, includeDeleted = false) {
|
|
193
|
-
try {
|
|
194
|
-
return await Issue_model_1.IssueModel.findByProperty(propertyId, includeDeleted);
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
throw new Error(`Failed to find issues by property: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Find issues by assignee
|
|
202
|
-
*/
|
|
203
|
-
async findByAssignee(assignedTo, includeDeleted = false) {
|
|
204
|
-
try {
|
|
205
|
-
return await Issue_model_1.IssueModel.findByAssignee(assignedTo, includeDeleted);
|
|
206
|
-
}
|
|
207
|
-
catch (error) {
|
|
208
|
-
throw new Error(`Failed to find issues by assignee: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Find issues by entity
|
|
213
|
-
*/
|
|
214
|
-
async findByEntity(entityId, entityType, includeDeleted = false) {
|
|
215
|
-
try {
|
|
216
|
-
return await Issue_model_1.IssueModel.findByEntity(entityId, entityType, includeDeleted);
|
|
217
|
-
}
|
|
218
|
-
catch (error) {
|
|
219
|
-
throw new Error(`Failed to find issues by entity: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Find issues by status
|
|
224
|
-
*/
|
|
225
|
-
async findByStatus(status, includeDeleted = false) {
|
|
226
|
-
try {
|
|
227
|
-
return await Issue_model_1.IssueModel.findByStatus(status, includeDeleted);
|
|
228
|
-
}
|
|
229
|
-
catch (error) {
|
|
230
|
-
throw new Error(`Failed to find issues by status: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Find issues by priority
|
|
235
|
-
*/
|
|
236
|
-
async findByPriority(priority, includeDeleted = false) {
|
|
237
|
-
try {
|
|
238
|
-
return await Issue_model_1.IssueModel.findByPriority(priority, includeDeleted);
|
|
239
|
-
}
|
|
240
|
-
catch (error) {
|
|
241
|
-
throw new Error(`Failed to find issues by priority: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Find overdue issues
|
|
246
|
-
*/
|
|
247
|
-
async findOverdue(includeDeleted = false) {
|
|
248
|
-
try {
|
|
249
|
-
return await Issue_model_1.IssueModel.findOverdue(includeDeleted);
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
throw new Error(`Failed to find overdue issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Find upcoming issues
|
|
257
|
-
*/
|
|
258
|
-
async findUpcoming(days = 7, includeDeleted = false) {
|
|
259
|
-
try {
|
|
260
|
-
return await Issue_model_1.IssueModel.findUpcoming(days, includeDeleted);
|
|
261
|
-
}
|
|
262
|
-
catch (error) {
|
|
263
|
-
throw new Error(`Failed to find upcoming issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Search issues by text
|
|
268
|
-
*/
|
|
269
|
-
async search(searchTerm, filters = {}) {
|
|
270
|
-
try {
|
|
271
|
-
const query = {
|
|
272
|
-
$or: [
|
|
273
|
-
{ title: { $regex: searchTerm, $options: "i" } },
|
|
274
|
-
{ description: { $regex: searchTerm, $options: "i" } },
|
|
275
|
-
],
|
|
276
|
-
};
|
|
277
|
-
if (filters.propertyId)
|
|
278
|
-
query.propertyId = filters.propertyId;
|
|
279
|
-
if (!filters.includeDeleted)
|
|
280
|
-
query.isDeleted = false;
|
|
281
|
-
const queryBuilder = Issue_model_1.IssueModel.find(query).sort({ createdAt: -1 });
|
|
282
|
-
if (filters.skip)
|
|
283
|
-
queryBuilder.skip(filters.skip);
|
|
284
|
-
if (filters.limit)
|
|
285
|
-
queryBuilder.limit(filters.limit);
|
|
286
|
-
return await queryBuilder.exec();
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
throw new Error(`Failed to search issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Get issue statistics
|
|
294
|
-
*/
|
|
295
|
-
async getStatistics(propertyId) {
|
|
296
|
-
try {
|
|
297
|
-
const query = { isDeleted: false };
|
|
298
|
-
if (propertyId)
|
|
299
|
-
query.propertyId = propertyId;
|
|
300
|
-
const [total, pending, inProgress, resolved, closed, overdue, priorityStats, categoryStats,] = await Promise.all([
|
|
301
|
-
Issue_model_1.IssueModel.countDocuments(query),
|
|
302
|
-
Issue_model_1.IssueModel.countDocuments({ ...query, status: issue_types_1.IssueStatus.PENDING }),
|
|
303
|
-
Issue_model_1.IssueModel.countDocuments({
|
|
304
|
-
...query,
|
|
305
|
-
status: issue_types_1.IssueStatus.IN_PROGRESS,
|
|
306
|
-
}),
|
|
307
|
-
Issue_model_1.IssueModel.countDocuments({ ...query, status: issue_types_1.IssueStatus.RESOLVED }),
|
|
308
|
-
Issue_model_1.IssueModel.countDocuments({ ...query, status: issue_types_1.IssueStatus.CLOSED }),
|
|
309
|
-
Issue_model_1.IssueModel.countDocuments({
|
|
310
|
-
...query,
|
|
311
|
-
dueDate: { $lt: new Date() },
|
|
312
|
-
status: {
|
|
313
|
-
$nin: [
|
|
314
|
-
issue_types_1.IssueStatus.RESOLVED,
|
|
315
|
-
issue_types_1.IssueStatus.CLOSED,
|
|
316
|
-
issue_types_1.IssueStatus.CANCELLED,
|
|
317
|
-
],
|
|
318
|
-
},
|
|
319
|
-
}),
|
|
320
|
-
Issue_model_1.IssueModel.aggregate([
|
|
321
|
-
{ $match: query },
|
|
322
|
-
{ $group: { _id: "$priority", count: { $sum: 1 } } },
|
|
323
|
-
]),
|
|
324
|
-
Issue_model_1.IssueModel.aggregate([
|
|
325
|
-
{ $match: query },
|
|
326
|
-
{ $group: { _id: "$category", count: { $sum: 1 } } },
|
|
327
|
-
]),
|
|
328
|
-
]);
|
|
329
|
-
const byPriority = Object.values(issue_types_1.IssuePriority).reduce((acc, priority) => {
|
|
330
|
-
acc[priority] = 0;
|
|
331
|
-
return acc;
|
|
332
|
-
}, {});
|
|
333
|
-
const byCategory = Object.values(issue_types_1.IssuesCategory).reduce((acc, category) => {
|
|
334
|
-
acc[category] = 0;
|
|
335
|
-
return acc;
|
|
336
|
-
}, {});
|
|
337
|
-
priorityStats.forEach((stat) => {
|
|
338
|
-
if (stat._id in byPriority) {
|
|
339
|
-
byPriority[stat._id] = stat.count;
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
categoryStats.forEach((stat) => {
|
|
343
|
-
if (stat._id in byCategory) {
|
|
344
|
-
byCategory[stat._id] = stat.count;
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
return {
|
|
348
|
-
total,
|
|
349
|
-
pending,
|
|
350
|
-
inProgress,
|
|
351
|
-
resolved,
|
|
352
|
-
closed,
|
|
353
|
-
overdue,
|
|
354
|
-
byPriority,
|
|
355
|
-
byCategory,
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
catch (error) {
|
|
359
|
-
throw new Error(`Failed to get issue statistics: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Bulk update issues
|
|
364
|
-
*/
|
|
365
|
-
async bulkUpdate(ids, updateData) {
|
|
366
|
-
try {
|
|
367
|
-
const result = await Issue_model_1.IssueModel.updateMany({ _id: { $in: ids } }, { ...updateData, updatedAt: new Date() });
|
|
368
|
-
return result.modifiedCount;
|
|
369
|
-
}
|
|
370
|
-
catch (error) {
|
|
371
|
-
throw new Error(`Failed to bulk update issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Bulk soft delete issues
|
|
376
|
-
*/
|
|
377
|
-
async bulkSoftDelete(ids, deletedBy) {
|
|
378
|
-
try {
|
|
379
|
-
const result = await Issue_model_1.IssueModel.updateMany({ _id: { $in: ids } }, {
|
|
380
|
-
isDeleted: true,
|
|
381
|
-
updatedBy: deletedBy,
|
|
382
|
-
updatedAt: new Date(),
|
|
383
|
-
});
|
|
384
|
-
return result.modifiedCount;
|
|
385
|
-
}
|
|
386
|
-
catch (error) {
|
|
387
|
-
throw new Error(`Failed to bulk soft delete issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
__setFunctionName(_classThis, "IssueRepository");
|
|
392
|
-
(() => {
|
|
393
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
394
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
395
|
-
IssueRepository = _classThis = _classDescriptor.value;
|
|
396
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
397
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
398
|
-
})();
|
|
399
|
-
return IssueRepository = _classThis;
|
|
400
|
-
})();
|
|
401
|
-
exports.IssueRepository = IssueRepository;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IProperty, IPropertySettings } from "../interfaces/IProperty";
|
|
2
|
-
export declare class PropertyRepository {
|
|
3
|
-
private readonly postgres;
|
|
4
|
-
constructor();
|
|
5
|
-
getPropertyPreferences(propertyId: string): Promise<IPropertySettings | null>;
|
|
6
|
-
getProperty(propertyId: string): Promise<IProperty | null>;
|
|
7
|
-
getAllProperties(): Promise<any[]>;
|
|
8
|
-
}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { AlertRepository } from "../repository/Alert.repository";
|
|
2
|
-
import { IAlertDocument } from "../models/Alert.model";
|
|
3
|
-
import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, EntityType } from "../../../types/alert.types";
|
|
4
|
-
import { AlertBuilder } from "../entities/AlertBuilder";
|
|
5
|
-
export declare class AlertService {
|
|
6
|
-
private readonly alertRepository;
|
|
7
|
-
constructor(alertRepository: AlertRepository);
|
|
8
|
-
/**
|
|
9
|
-
* Create a readiness alert using AlertBuilder
|
|
10
|
-
*/
|
|
11
|
-
raiseReadinessAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
12
|
-
/**
|
|
13
|
-
* Create an operations alert using AlertBuilder
|
|
14
|
-
*/
|
|
15
|
-
raiseOperationsAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
16
|
-
/**
|
|
17
|
-
* Create a security alert using AlertBuilder
|
|
18
|
-
*/
|
|
19
|
-
raiseSecurityAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
20
|
-
/**
|
|
21
|
-
* Create an energy alert using AlertBuilder
|
|
22
|
-
*/
|
|
23
|
-
raiseEnergyAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
24
|
-
/**
|
|
25
|
-
* Create a device-specific alert using AlertBuilder
|
|
26
|
-
*/
|
|
27
|
-
raiseDeviceAlert(deviceId: string, propertyId: string, title: string, description: string, category?: AlertCategory, severity?: AlertSeverity, createdBy?: string): Promise<IAlertDocument>;
|
|
28
|
-
/**
|
|
29
|
-
* Create a hub-specific alert using AlertBuilder
|
|
30
|
-
*/
|
|
31
|
-
raiseHubAlert(hubId: string, propertyId: string, title: string, description: string, category?: AlertCategory, severity?: AlertSeverity, createdBy?: string): Promise<IAlertDocument>;
|
|
32
|
-
/**
|
|
33
|
-
* Create a new alert with business logic validation
|
|
34
|
-
* Accepts either a CreateAlertData object or an AlertBuilder instance
|
|
35
|
-
*/
|
|
36
|
-
createAlert(alertData: CreateAlertData | AlertBuilder): Promise<IAlertDocument>;
|
|
37
|
-
/**
|
|
38
|
-
* Get alert by ID with business logic
|
|
39
|
-
*/
|
|
40
|
-
getAlertById(id: string, includeDeleted?: boolean): Promise<IAlertDocument | null>;
|
|
41
|
-
/**
|
|
42
|
-
* Get all alerts with business logic filtering
|
|
43
|
-
*/
|
|
44
|
-
getAlerts(filters?: {
|
|
45
|
-
propertyId?: string;
|
|
46
|
-
category?: AlertCategory;
|
|
47
|
-
severity?: AlertSeverity;
|
|
48
|
-
entityType?: EntityType;
|
|
49
|
-
entityId?: string;
|
|
50
|
-
isActive?: boolean;
|
|
51
|
-
isRead?: boolean;
|
|
52
|
-
includeDeleted?: boolean;
|
|
53
|
-
limit?: number;
|
|
54
|
-
skip?: number;
|
|
55
|
-
}): Promise<IAlertDocument[]>;
|
|
56
|
-
/**
|
|
57
|
-
* Update an alert with business logic validation
|
|
58
|
-
*/
|
|
59
|
-
updateAlert(id: string, updateData: UpdateAlertData): Promise<IAlertDocument | null>;
|
|
60
|
-
/**
|
|
61
|
-
* Soft delete an alert with business logic
|
|
62
|
-
*/
|
|
63
|
-
deleteAlert(id: string, deletedBy: string): Promise<boolean>;
|
|
64
|
-
/**
|
|
65
|
-
* Mark alert as read with business logic
|
|
66
|
-
*/
|
|
67
|
-
markAsRead(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
68
|
-
/**
|
|
69
|
-
* Mark alert as unread with business logic
|
|
70
|
-
*/
|
|
71
|
-
markAsUnread(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
72
|
-
/**
|
|
73
|
-
* Activate an alert with business logic
|
|
74
|
-
*/
|
|
75
|
-
activateAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
76
|
-
/**
|
|
77
|
-
* Deactivate an alert with business logic
|
|
78
|
-
*/
|
|
79
|
-
deactivateAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
80
|
-
/**
|
|
81
|
-
* Snooze an alert with business logic
|
|
82
|
-
*/
|
|
83
|
-
snoozeAlert(id: string, until: Date, updatedBy: string): Promise<IAlertDocument | null>;
|
|
84
|
-
/**
|
|
85
|
-
* Unsnooze an alert with business logic
|
|
86
|
-
*/
|
|
87
|
-
unsnoozeAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
88
|
-
/**
|
|
89
|
-
* Get alerts by property with business logic
|
|
90
|
-
*/
|
|
91
|
-
getAlertsByProperty(propertyId: string, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
92
|
-
/**
|
|
93
|
-
* Get alerts by entity with business logic
|
|
94
|
-
*/
|
|
95
|
-
getAlertsByEntity(entityId: string, entityType: EntityType, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
96
|
-
/**
|
|
97
|
-
* Get alerts by category with business logic
|
|
98
|
-
*/
|
|
99
|
-
getAlertsByCategory(category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
100
|
-
/**
|
|
101
|
-
* Get alerts by severity with business logic
|
|
102
|
-
*/
|
|
103
|
-
getAlertsBySeverity(severity: AlertSeverity, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
104
|
-
/**
|
|
105
|
-
* Get active alerts with business logic
|
|
106
|
-
*/
|
|
107
|
-
getActiveAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
108
|
-
/**
|
|
109
|
-
* Get unread alerts with business logic
|
|
110
|
-
*/
|
|
111
|
-
getUnreadAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
112
|
-
/**
|
|
113
|
-
* Get snoozed alerts with business logic
|
|
114
|
-
*/
|
|
115
|
-
getSnoozedAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
116
|
-
/**
|
|
117
|
-
* Get expired snooze alerts with business logic
|
|
118
|
-
*/
|
|
119
|
-
getExpiredSnoozeAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
120
|
-
/**
|
|
121
|
-
* Get alert statistics with business logic
|
|
122
|
-
*/
|
|
123
|
-
getAlertStatistics(propertyId?: string): Promise<{
|
|
124
|
-
total: number;
|
|
125
|
-
active: number;
|
|
126
|
-
unread: number;
|
|
127
|
-
snoozed: number;
|
|
128
|
-
bySeverity: Record<AlertSeverity, number>;
|
|
129
|
-
byCategory: Record<AlertCategory, number>;
|
|
130
|
-
}>;
|
|
131
|
-
private validateAlertData;
|
|
132
|
-
private validateFilters;
|
|
133
|
-
private validateUpdateData;
|
|
134
|
-
private validateSnoozeDate;
|
|
135
|
-
private determineDefaultSeverity;
|
|
136
|
-
private applyBusinessRules;
|
|
137
|
-
}
|