dt-common-device 3.0.9 → 3.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/config/config.d.ts +1 -2
  2. package/dist/config/config.js +4 -5
  3. package/dist/device/cloud/interface.d.ts +101 -0
  4. package/dist/device/cloud/interface.js +3 -0
  5. package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +7 -0
  6. package/dist/device/cloud/interfaces/IDeviceConnectionService.js +3 -0
  7. package/dist/device/cloud/interfaces/IDevicesService.d.ts +9 -0
  8. package/dist/device/cloud/services/Device.service.d.ts +39 -0
  9. package/dist/device/cloud/services/Device.service.js +9 -0
  10. package/dist/device/cloud/services/DeviceCloudService.d.ts +42 -0
  11. package/dist/device/cloud/services/DeviceCloudService.js +59 -0
  12. package/dist/device/cloud/services/DeviceHub.service.d.ts +3 -0
  13. package/dist/device/cloud/services/DeviceHub.service.js +6 -0
  14. package/dist/device/cloud/services/Hub.service.d.ts +25 -0
  15. package/dist/device/cloud/services/Hub.service.js +9 -0
  16. package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +38 -0
  17. package/dist/device/cloud/services/SmartThingsDeviceService.js +52 -0
  18. package/dist/device/index.d.ts +4 -0
  19. package/dist/device/index.js +20 -0
  20. package/dist/device/local/events/EventHandler.js +6 -6
  21. package/dist/device/local/events/Events.d.ts +12 -33
  22. package/dist/device/local/events/Events.js +12 -33
  23. package/dist/device/local/interface.d.ts +0 -0
  24. package/dist/device/local/interface.js +1 -0
  25. package/dist/device/local/interfaces/IDevice.d.ts +1 -0
  26. package/dist/device/local/repository/Schedule.repository.d.ts +0 -1
  27. package/dist/device/local/repository/Schedule.repository.js +6 -6
  28. package/dist/device/local/services/DeviceHub.service.d.ts +11 -0
  29. package/dist/device/local/services/DeviceHub.service.js +40 -0
  30. package/dist/queue/entities/HybridHttpQueue.d.ts +4 -14
  31. package/dist/queue/entities/HybridHttpQueue.js +31 -119
  32. package/dist/queue/interfaces/IHybridHttpQueue.d.ts +2 -12
  33. package/dist/queue/interfaces/IJobResult.d.ts +1 -8
  34. package/dist/queue/interfaces/index.d.ts +0 -1
  35. package/dist/queue/interfaces/index.js +0 -1
  36. package/dist/queue/services/QueueService.d.ts +2 -12
  37. package/dist/queue/types/queue.types.d.ts +10 -29
  38. package/dist/queue/utils/jobUtils.d.ts +0 -3
  39. package/dist/queue/utils/jobUtils.js +0 -48
  40. package/dist/queue/utils/queueUtils.d.ts +7 -0
  41. package/dist/queue/utils/queueUtils.js +113 -4
  42. package/package.json +6 -1
  43. package/.eslintrc.js +0 -44
  44. package/dist/audit/AuditProperties.d.ts +0 -16
  45. package/dist/audit/AuditUtils.d.ts +0 -2
  46. package/dist/audit/AuditUtils.js +0 -36
  47. package/src/alerts/Alert.model.ts +0 -289
  48. package/src/alerts/Alert.repository.ts +0 -487
  49. package/src/alerts/Alert.service.ts +0 -711
  50. package/src/alerts/AlertBuilder.example.ts +0 -126
  51. package/src/alerts/AlertBuilder.ts +0 -208
  52. package/src/alerts/AlertService.example.ts +0 -232
  53. package/src/alerts/alert.types.ts +0 -64
  54. package/src/alerts/index.ts +0 -3
  55. package/src/audit/AuditProperties.ts +0 -16
  56. package/src/audit/AuditUtils.ts +0 -38
  57. package/src/config/config.ts +0 -202
  58. package/src/config/config.types.ts +0 -21
  59. package/src/connection/Connection.repository.ts +0 -52
  60. package/src/connection/Connection.service.ts +0 -39
  61. package/src/connection/IConnection.ts +0 -27
  62. package/src/connection/index.ts +0 -3
  63. package/src/constants/ConnectionProviders.ts +0 -11
  64. package/src/constants/Event.ts +0 -89
  65. package/src/constants/Service.ts +0 -17
  66. package/src/constants/index.ts +0 -3
  67. package/src/db/db.ts +0 -24
  68. package/src/db/index.ts +0 -2
  69. package/src/db/redis.ts +0 -20
  70. package/src/device/cloud/entities/CloudDevice.ts +0 -40
  71. package/src/device/cloud/entities/CloudDeviceService.ts +0 -8
  72. package/src/device/cloud/entities/DeviceFactory.ts +0 -27
  73. package/src/device/cloud/entities/index.ts +0 -3
  74. package/src/device/cloud/interfaces/ICloudDevice.ts +0 -14
  75. package/src/device/cloud/interfaces/ICloudDeviceService.ts +0 -6
  76. package/src/device/cloud/interfaces/IDeviceFactory.ts +0 -5
  77. package/src/device/cloud/interfaces/IRawDataTransformer.ts +0 -5
  78. package/src/device/cloud/interfaces/IRawDevice.ts +0 -19
  79. package/src/device/cloud/interfaces/index.ts +0 -5
  80. package/src/device/local/interfaces/IDevice.ts +0 -61
  81. package/src/device/local/interfaces/IDtDevice.ts +0 -16
  82. package/src/device/local/interfaces/ISchedule.ts +0 -40
  83. package/src/device/local/interfaces/index.ts +0 -3
  84. package/src/device/local/repository/Device.repository.ts +0 -368
  85. package/src/device/local/repository/Hub.repository.ts +0 -107
  86. package/src/device/local/repository/Schedule.repository.ts +0 -72
  87. package/src/device/local/services/Device.service.ts +0 -436
  88. package/src/device/local/services/Hub.service.ts +0 -57
  89. package/src/device/local/services/Schedule.service.ts +0 -26
  90. package/src/device/local/services/index.ts +0 -3
  91. package/src/docs/Alert.model.md +0 -319
  92. package/src/docs/Alerts&IssuesModel.md +0 -312
  93. package/src/docs/Issue.model.md +0 -386
  94. package/src/docs/SECURITY.md +0 -67
  95. package/src/docs/TROUBLESHOOTING.md +0 -184
  96. package/src/events/BaseEventHandler.ts +0 -145
  97. package/src/events/BaseEventTransformer.ts +0 -97
  98. package/src/events/DeviceEventHandler.ts +0 -213
  99. package/src/events/DeviceEventTransformerFactory.ts +0 -77
  100. package/src/events/EventHandler.ts +0 -124
  101. package/src/events/EventHandlerOrchestrator.ts +0 -119
  102. package/src/events/EventProcessingService.ts +0 -248
  103. package/src/events/InternalEventSubscription.ts +0 -194
  104. package/src/events/index.ts +0 -9
  105. package/src/events/interfaces/DeviceEvent.ts +0 -56
  106. package/src/events/interfaces/IEventHandler.ts +0 -28
  107. package/src/events/interfaces/IEventTransformer.ts +0 -8
  108. package/src/events/interfaces/IInternalEvent.ts +0 -33
  109. package/src/events/interfaces/index.ts +0 -4
  110. package/src/index.ts +0 -43
  111. package/src/issues/Issue.model.ts +0 -350
  112. package/src/issues/Issue.repository.ts +0 -517
  113. package/src/issues/Issue.service.ts +0 -932
  114. package/src/issues/IssueBuilder.example.ts +0 -210
  115. package/src/issues/IssueBuilder.ts +0 -263
  116. package/src/issues/IssueService.example.ts +0 -310
  117. package/src/issues/index.ts +0 -2
  118. package/src/issues/issue.types.ts +0 -98
  119. package/src/property/IProperty.ts +0 -30
  120. package/src/property/Property.repository.ts +0 -53
  121. package/src/property/Property.service.ts +0 -38
  122. package/src/property/index.ts +0 -2
  123. package/src/queue/entities/HybridHttpQueue.ts +0 -274
  124. package/src/queue/entities/index.ts +0 -1
  125. package/src/queue/index.ts +0 -6
  126. package/src/queue/interfaces/IHttpRequestJob.ts +0 -10
  127. package/src/queue/interfaces/IHybridHttpQueue.ts +0 -25
  128. package/src/queue/interfaces/IJobResult.ts +0 -15
  129. package/src/queue/interfaces/IRateLimitConfig.ts +0 -5
  130. package/src/queue/interfaces/index.ts +0 -4
  131. package/src/queue/services/QueueService.ts +0 -40
  132. package/src/queue/services/index.ts +0 -1
  133. package/src/queue/types/http.types.ts +0 -23
  134. package/src/queue/types/index.ts +0 -2
  135. package/src/queue/types/queue.types.ts +0 -21
  136. package/src/queue/utils/index.ts +0 -3
  137. package/src/queue/utils/jobUtils.ts +0 -79
  138. package/src/queue/utils/queueUtils.ts +0 -84
  139. package/src/queue/utils/rateLimit.utils.ts +0 -131
  140. package/src/utils/http.utils.ts +0 -143
  141. package/src/utils/index.ts +0 -2
  142. package/src/utils/redis.utils.ts +0 -74
  143. package/tsconfig.json +0 -20
  144. /package/dist/{audit/AuditProperties.js → device/cloud/interfaces/IDevicesService.js} +0 -0
@@ -1,210 +0,0 @@
1
- import { IssueBuilder } from "./IssueBuilder";
2
- import { IssuesCategory, IssuePriority, EntityType } from "./issue.types";
3
-
4
- /**
5
- * Example usage of IssueBuilder
6
- * This file demonstrates various ways to use the IssueBuilder pattern
7
- */
8
-
9
- // Example 1: Basic issue creation
10
- export function createBasicIssue() {
11
- const issueData = new IssueBuilder()
12
- .setCategory(IssuesCategory.OPERATIONS)
13
- .setPropertyId("prop123")
14
- .setTitle("Device Maintenance Required")
15
- .setDescription("Device requires scheduled maintenance")
16
- .setEntityId("device456")
17
- .setEntityType(EntityType.DEVICE)
18
- .setPriority(IssuePriority.HIGH)
19
- .setAssignedTo("tech789")
20
- .setCreatedBy("user123")
21
- .setDueDate(new Date("2024-01-15"))
22
- .build();
23
-
24
- return issueData;
25
- }
26
-
27
- // Example 2: Using static factory methods
28
- export function createDeviceIssue() {
29
- const issueData = IssueBuilder.createDeviceIssue("device123", "prop456")
30
- .setCategory(IssuesCategory.READINESS)
31
- .setTitle("Device Firmware Update")
32
- .setDescription("Device firmware update is available")
33
- .setPriority(IssuePriority.MEDIUM)
34
- .setAssignedTo("admin")
35
- .setCreatedBy("system")
36
- .setDueDate(new Date("2024-01-20"))
37
- .build();
38
-
39
- return issueData;
40
- }
41
-
42
- // Example 3: Using predefined issue types
43
- export function createSecurityIssue() {
44
- const issueData = IssueBuilder.createSecurityIssue()
45
- .setPropertyId("prop789")
46
- .setTitle("Security Breach Detected")
47
- .setDescription("Unauthorized access attempt detected")
48
- .setEntityId("user123")
49
- .setEntityType(EntityType.USER)
50
- .setAssignedTo("security-team")
51
- .setCreatedBy("security-system")
52
- .setDueDate(new Date("2024-01-10"))
53
- .build();
54
-
55
- return issueData;
56
- }
57
-
58
- // Example 4: Creating energy issue
59
- export function createEnergyIssue() {
60
- const issueData = IssueBuilder.createEnergyIssue()
61
- .setPropertyId("prop101")
62
- .setTitle("High Energy Consumption")
63
- .setDescription("Energy usage is 20% above normal levels")
64
- .setEntityId("zone456")
65
- .setEntityType(EntityType.COLLECTION)
66
- .setAssignedTo("energy-manager")
67
- .setCreatedBy("energy-monitor")
68
- .setDueDate(new Date("2024-01-25"))
69
- .build();
70
-
71
- return issueData;
72
- }
73
-
74
- // Example 5: Creating hub issue
75
- export function createHubIssue() {
76
- const issueData = IssueBuilder.createHubIssue("hub789", "prop202")
77
- .setCategory(IssuesCategory.OPERATIONS)
78
- .setTitle("Hub Connection Lost")
79
- .setDescription("Hub has lost connection to the network")
80
- .setPriority(IssuePriority.CRITICAL)
81
- .setAssignedTo("network-admin")
82
- .setCreatedBy("network-monitor")
83
- .setDueDate(new Date("2024-01-05"))
84
- .build();
85
-
86
- return issueData;
87
- }
88
-
89
- // Example 6: Creating user-specific issue
90
- export function createUserIssue() {
91
- const issueData = IssueBuilder.createUserIssue("user456", "prop303")
92
- .setCategory(IssuesCategory.SECURITY)
93
- .setTitle("User Access Review Required")
94
- .setDescription("User access permissions need review")
95
- .setPriority(IssuePriority.MEDIUM)
96
- .setAssignedTo("hr-admin")
97
- .setCreatedBy("access-control")
98
- .setDueDate(new Date("2024-01-30"))
99
- .build();
100
-
101
- return issueData;
102
- }
103
-
104
- // Example 7: Creating property-specific issue
105
- export function createPropertyIssue() {
106
- const issueData = IssueBuilder.createPropertyIssue("prop404")
107
- .setCategory(IssuesCategory.READINESS)
108
- .setTitle("Property Maintenance Schedule")
109
- .setDescription("Annual property maintenance is due")
110
- .setPriority(IssuePriority.LOW)
111
- .setAssignedTo("property-manager")
112
- .setCreatedBy("maintenance-system")
113
- .setDueDate(new Date("2024-02-15"))
114
- .build();
115
-
116
- return issueData;
117
- }
118
-
119
- // Example 8: Creating maintenance issue
120
- export function createMaintenanceIssue() {
121
- const issueData = IssueBuilder.createMaintenanceIssue("prop505", "device789", EntityType.DEVICE)
122
- .setTitle("Scheduled Device Maintenance")
123
- .setDescription("Regular maintenance is scheduled for this device")
124
- .setAssignedTo("technician")
125
- .setCreatedBy("maintenance-scheduler")
126
- .setDueDate(new Date("2024-01-12"))
127
- .build();
128
-
129
- return issueData;
130
- }
131
-
132
- // Example 9: Creating urgent issue
133
- export function createUrgentIssue() {
134
- const issueData = IssueBuilder.createUrgentIssue("prop606", "hub123", EntityType.HUB)
135
- .setTitle("Critical Hub Failure")
136
- .setDescription("Hub is experiencing critical failures")
137
- .setAssignedTo("emergency-tech")
138
- .setCreatedBy("monitoring-system")
139
- .setDueDate(new Date("2024-01-03"))
140
- .build();
141
-
142
- return issueData;
143
- }
144
-
145
- // Example 10: Reusing builder instance
146
- export function createMultipleIssues() {
147
- const builder = new IssueBuilder()
148
- .setPropertyId("prop707")
149
- .setCreatedBy("batch-processor");
150
-
151
- const issue1 = builder
152
- .setCategory(IssuesCategory.OPERATIONS)
153
- .setTitle("Device Temperature High")
154
- .setDescription("Device temperature exceeds normal operating range")
155
- .setEntityId("device789")
156
- .setEntityType(EntityType.DEVICE)
157
- .setPriority(IssuePriority.HIGH)
158
- .setAssignedTo("tech-support")
159
- .build();
160
-
161
- const issue2 = builder
162
- .reset()
163
- .setPropertyId("prop707")
164
- .setCategory(IssuesCategory.ENERGY)
165
- .setTitle("Low Battery Warning")
166
- .setDescription("Device battery level is below 20%")
167
- .setEntityId("device789")
168
- .setEntityType(EntityType.DEVICE)
169
- .setPriority(IssuePriority.MEDIUM)
170
- .setAssignedTo("maintenance-team")
171
- .setCreatedBy("batch-processor")
172
- .build();
173
-
174
- return [issue1, issue2];
175
- }
176
-
177
- // Example 11: Creating issue with due date calculation
178
- export function createIssueWithDueDate() {
179
- const dueDate = new Date();
180
- dueDate.setDate(dueDate.getDate() + 7); // Due in 7 days
181
-
182
- const issueData = new IssueBuilder()
183
- .setCategory(IssuesCategory.READINESS)
184
- .setPropertyId("prop808")
185
- .setTitle("System Update Required")
186
- .setDescription("System requires critical security update")
187
- .setEntityType(EntityType.PROPERTY)
188
- .setPriority(IssuePriority.HIGH)
189
- .setAssignedTo("system-admin")
190
- .setCreatedBy("update-manager")
191
- .setDueDate(dueDate)
192
- .build();
193
-
194
- return issueData;
195
- }
196
-
197
- // Example 12: Creating issue without assignment
198
- export function createUnassignedIssue() {
199
- const issueData = new IssueBuilder()
200
- .setCategory(IssuesCategory.OTHER)
201
- .setPropertyId("prop909")
202
- .setTitle("General Inquiry")
203
- .setDescription("General inquiry about system functionality")
204
- .setEntityType(EntityType.PROPERTY)
205
- .setPriority(IssuePriority.LOW)
206
- .setCreatedBy("user-inquiry")
207
- .build();
208
-
209
- return issueData;
210
- }
@@ -1,263 +0,0 @@
1
- import {
2
- CreateIssueData,
3
- IssuesCategory,
4
- IssuePriority,
5
- EntityType,
6
- } from "./issue.types";
7
-
8
- /**
9
- * IssueBuilder - A builder pattern implementation for constructing CreateIssueData objects
10
- *
11
- * This builder provides a fluent interface for creating issue data with proper validation
12
- * and default values. It follows the Builder pattern which is a standard design pattern
13
- * in TypeScript for constructing complex objects.
14
- *
15
- * Usage example:
16
- * const issueData = new IssueBuilder()
17
- * .setCategory(IssuesCategory.OPERATIONS)
18
- * .setPropertyId("prop123")
19
- * .setTitle("Device Maintenance Required")
20
- * .setDescription("Device requires scheduled maintenance")
21
- * .setEntityId("device456")
22
- * .setEntityType(EntityType.DEVICE)
23
- * .setPriority(IssuePriority.HIGH)
24
- * .setAssignedTo("tech789")
25
- * .setCreatedBy("user123")
26
- * .setDueDate(new Date("2024-01-15"))
27
- * .build();
28
- */
29
- export class IssueBuilder {
30
- private data: Partial<CreateIssueData> = {};
31
-
32
- /**
33
- * Sets the issue category
34
- */
35
- setCategory(category: IssuesCategory): IssueBuilder {
36
- this.data.category = category;
37
- return this;
38
- }
39
-
40
- /**
41
- * Sets the property ID
42
- */
43
- setPropertyId(propertyId: string): IssueBuilder {
44
- if (!propertyId || propertyId.trim() === "") {
45
- throw new Error("Property ID is required and cannot be empty");
46
- }
47
- this.data.propertyId = propertyId;
48
- return this;
49
- }
50
-
51
- /**
52
- * Sets the issue title
53
- */
54
- setTitle(title: string): IssueBuilder {
55
- if (!title || title.trim() === "") {
56
- throw new Error("Title is required and cannot be empty");
57
- }
58
- this.data.title = title.trim();
59
- return this;
60
- }
61
-
62
- /**
63
- * Sets the issue description
64
- */
65
- setDescription(description: string): IssueBuilder {
66
- if (!description || description.trim() === "") {
67
- throw new Error("Description is required and cannot be empty");
68
- }
69
- this.data.description = description.trim();
70
- return this;
71
- }
72
-
73
- /**
74
- * Sets the entity ID (optional)
75
- */
76
- setEntityId(entityId?: string): IssueBuilder {
77
- if (entityId !== undefined) {
78
- this.data.entityId = entityId.trim() || undefined;
79
- }
80
- return this;
81
- }
82
-
83
- /**
84
- * Sets the entity type
85
- */
86
- setEntityType(entityType: EntityType): IssueBuilder {
87
- this.data.entityType = entityType;
88
- return this;
89
- }
90
-
91
- /**
92
- * Sets the issue priority (optional, defaults to MEDIUM)
93
- */
94
- setPriority(priority?: IssuePriority): IssueBuilder {
95
- if (priority !== undefined) {
96
- this.data.priority = priority;
97
- }
98
- return this;
99
- }
100
-
101
- /**
102
- * Sets the user assigned to the issue (optional)
103
- */
104
- setAssignedTo(assignedTo?: string): IssueBuilder {
105
- if (assignedTo !== undefined) {
106
- this.data.assignedTo = assignedTo.trim() || undefined;
107
- }
108
- return this;
109
- }
110
-
111
- /**
112
- * Sets the user who created the issue (required)
113
- */
114
- setCreatedBy(createdBy: string): IssueBuilder {
115
- if (!createdBy || createdBy.trim() === "") {
116
- throw new Error("Created by user is required and cannot be empty");
117
- }
118
- this.data.createdBy = createdBy.trim();
119
- return this;
120
- }
121
-
122
- /**
123
- * Sets the due date (optional)
124
- */
125
- setDueDate(dueDate?: Date): IssueBuilder {
126
- if (dueDate !== undefined) {
127
- this.data.dueDate = dueDate;
128
- }
129
- return this;
130
- }
131
-
132
- /**
133
- * Validates that all required fields are present
134
- */
135
- private validate(): void {
136
- const requiredFields = ["category", "propertyId", "title", "description", "entityType", "createdBy"];
137
- const missingFields = requiredFields.filter(field => !this.data[field as keyof CreateIssueData]);
138
-
139
- if (missingFields.length > 0) {
140
- throw new Error(`Missing required fields: ${missingFields.join(", ")}`);
141
- }
142
- }
143
-
144
- /**
145
- * Builds and returns the CreateIssueData object
146
- * @throws Error if required fields are missing
147
- */
148
- build(): CreateIssueData {
149
- this.validate();
150
-
151
- // Set default priority if not provided
152
- if (!this.data.priority) {
153
- this.data.priority = IssuePriority.MEDIUM;
154
- }
155
-
156
- return this.data as CreateIssueData;
157
- }
158
-
159
- /**
160
- * Resets the builder to its initial state
161
- */
162
- reset(): IssueBuilder {
163
- this.data = {};
164
- return this;
165
- }
166
-
167
- /**
168
- * Creates a new builder instance with predefined values for common issue types
169
- */
170
- static createReadinessIssue(): IssueBuilder {
171
- return new IssueBuilder()
172
- .setCategory(IssuesCategory.READINESS)
173
- .setPriority(IssuePriority.MEDIUM);
174
- }
175
-
176
- static createOperationsIssue(): IssueBuilder {
177
- return new IssueBuilder()
178
- .setCategory(IssuesCategory.OPERATIONS)
179
- .setPriority(IssuePriority.HIGH);
180
- }
181
-
182
- static createSecurityIssue(): IssueBuilder {
183
- return new IssueBuilder()
184
- .setCategory(IssuesCategory.SECURITY)
185
- .setPriority(IssuePriority.CRITICAL);
186
- }
187
-
188
- static createEnergyIssue(): IssueBuilder {
189
- return new IssueBuilder()
190
- .setCategory(IssuesCategory.ENERGY)
191
- .setPriority(IssuePriority.LOW);
192
- }
193
-
194
- /**
195
- * Creates a device-specific issue builder
196
- */
197
- static createDeviceIssue(deviceId: string, propertyId: string): IssueBuilder {
198
- return new IssueBuilder()
199
- .setEntityType(EntityType.DEVICE)
200
- .setEntityId(deviceId)
201
- .setPropertyId(propertyId);
202
- }
203
-
204
- /**
205
- * Creates a hub-specific issue builder
206
- */
207
- static createHubIssue(hubId: string, propertyId: string): IssueBuilder {
208
- return new IssueBuilder()
209
- .setEntityType(EntityType.HUB)
210
- .setEntityId(hubId)
211
- .setPropertyId(propertyId);
212
- }
213
-
214
- /**
215
- * Creates a user-specific issue builder
216
- */
217
- static createUserIssue(userId: string, propertyId: string): IssueBuilder {
218
- return new IssueBuilder()
219
- .setEntityType(EntityType.USER)
220
- .setEntityId(userId)
221
- .setPropertyId(propertyId);
222
- }
223
-
224
- /**
225
- * Creates a property-specific issue builder
226
- */
227
- static createPropertyIssue(propertyId: string): IssueBuilder {
228
- return new IssueBuilder()
229
- .setEntityType(EntityType.PROPERTY)
230
- .setEntityId(propertyId)
231
- .setPropertyId(propertyId);
232
- }
233
-
234
- /**
235
- * Creates a maintenance issue builder
236
- */
237
- static createMaintenanceIssue(propertyId: string, entityId?: string, entityType?: EntityType): IssueBuilder {
238
- const builder = new IssueBuilder()
239
- .setCategory(IssuesCategory.READINESS)
240
- .setPropertyId(propertyId)
241
- .setPriority(IssuePriority.MEDIUM);
242
-
243
- if (entityId) builder.setEntityId(entityId);
244
- if (entityType) builder.setEntityType(entityType);
245
-
246
- return builder;
247
- }
248
-
249
- /**
250
- * Creates an urgent issue builder
251
- */
252
- static createUrgentIssue(propertyId: string, entityId?: string, entityType?: EntityType): IssueBuilder {
253
- const builder = new IssueBuilder()
254
- .setCategory(IssuesCategory.OPERATIONS)
255
- .setPropertyId(propertyId)
256
- .setPriority(IssuePriority.URGENT);
257
-
258
- if (entityId) builder.setEntityId(entityId);
259
- if (entityType) builder.setEntityType(entityType);
260
-
261
- return builder;
262
- }
263
- }