@oneuptime/common 7.0.3526 → 7.0.3538

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 (67) hide show
  1. package/Models/DatabaseModels/AlertFeed.ts +12 -4
  2. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +2 -0
  3. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +59 -2
  4. package/Models/DatabaseModels/UserNotificationRule.ts +50 -0
  5. package/Models/DatabaseModels/UserOnCallLog.ts +48 -1
  6. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +49 -2
  7. package/Server/API/UserOnCallLogTimelineAPI.ts +32 -8
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1737141420441-MigrationName.ts +131 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  10. package/Server/Services/AlertInternalNoteService.ts +73 -0
  11. package/Server/Services/AlertOwnerTeamService.ts +112 -0
  12. package/Server/Services/AlertOwnerUserService.ts +114 -0
  13. package/Server/Services/AlertService.ts +121 -0
  14. package/Server/Services/AlertStateTimelineService.ts +52 -0
  15. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +32 -14
  16. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +86 -27
  17. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +30 -12
  18. package/Server/Services/UserNotificationRuleService.ts +450 -67
  19. package/Server/Services/UserOnCallLogService.ts +61 -18
  20. package/Server/Services/UserOnCallLogTimelineService.ts +25 -11
  21. package/Types/Email/EmailTemplateType.ts +1 -0
  22. package/Types/NotificationRule/NotificationRuleType.ts +1 -1
  23. package/build/dist/Models/DatabaseModels/AlertFeed.js +12 -4
  24. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  25. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +2 -0
  26. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  27. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +60 -2
  28. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
  29. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +49 -0
  30. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  31. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +48 -1
  32. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  33. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +50 -2
  34. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  35. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +10 -2
  36. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
  37. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1737141420441-MigrationName.js +50 -0
  38. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1737141420441-MigrationName.js.map +1 -0
  39. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  40. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  41. package/build/dist/Server/Services/AlertInternalNoteService.js +56 -0
  42. package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -1
  43. package/build/dist/Server/Services/AlertOwnerTeamService.js +86 -0
  44. package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -1
  45. package/build/dist/Server/Services/AlertOwnerUserService.js +89 -0
  46. package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -1
  47. package/build/dist/Server/Services/AlertService.js +107 -3
  48. package/build/dist/Server/Services/AlertService.js.map +1 -1
  49. package/build/dist/Server/Services/AlertStateTimelineService.js +44 -1
  50. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  51. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +18 -8
  52. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  53. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +70 -24
  54. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  55. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +26 -11
  56. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  57. package/build/dist/Server/Services/UserNotificationRuleService.js +334 -67
  58. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  59. package/build/dist/Server/Services/UserOnCallLogService.js +66 -27
  60. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  61. package/build/dist/Server/Services/UserOnCallLogTimelineService.js +16 -5
  62. package/build/dist/Server/Services/UserOnCallLogTimelineService.js.map +1 -1
  63. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  64. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  65. package/build/dist/Types/NotificationRule/NotificationRuleType.js +1 -1
  66. package/build/dist/Types/NotificationRule/NotificationRuleType.js.map +1 -1
  67. package/package.json +2 -2
@@ -25,13 +25,15 @@ import UserEmail from "Common/Models/DatabaseModels/UserEmail";
25
25
  import Model from "Common/Models/DatabaseModels/UserNotificationRule";
26
26
  import UserOnCallLog from "Common/Models/DatabaseModels/UserOnCallLog";
27
27
  import UserOnCallLogTimeline from "Common/Models/DatabaseModels/UserOnCallLogTimeline";
28
+ import AlertService from "./AlertService";
29
+ import AlertSeverityService from "./AlertSeverityService";
28
30
  export class Service extends DatabaseService {
29
31
  constructor() {
30
32
  super(Model);
31
33
  }
32
34
  async executeNotificationRuleItem(userNotificationRuleId, options) {
33
35
  // get user notification log and see if this rule has already been executed. If so then skip.
34
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
36
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
35
37
  const userOnCallLog = await UserOnCallLogService.findOneById({
36
38
  id: options.userNotificationLogId,
37
39
  props: {
@@ -114,12 +116,16 @@ export class Service extends DatabaseService {
114
116
  if (options.triggeredByIncidentId) {
115
117
  logTimelineItem.triggeredByIncidentId = options.triggeredByIncidentId;
116
118
  }
119
+ if (options.triggeredByAlertId) {
120
+ logTimelineItem.triggeredByAlertId = options.triggeredByAlertId;
121
+ }
117
122
  if (options.onCallDutyPolicyExecutionLogTimelineId) {
118
123
  logTimelineItem.onCallDutyPolicyExecutionLogTimelineId =
119
124
  options.onCallDutyPolicyExecutionLogTimelineId;
120
125
  }
121
126
  // add status and status message and save.
122
127
  let incident = null;
128
+ let alert = null;
123
129
  if (options.userNotificationEventType ===
124
130
  UserNotificationEventType.IncidentCreated &&
125
131
  options.triggeredByIncidentId) {
@@ -146,18 +152,75 @@ export class Service extends DatabaseService {
146
152
  },
147
153
  });
148
154
  }
149
- if (!incident) {
150
- throw new BadDataException("Incident not found.");
155
+ if (options.userNotificationEventType ===
156
+ UserNotificationEventType.AlertCreated &&
157
+ options.triggeredByAlertId) {
158
+ alert = await AlertService.findOneById({
159
+ id: options.triggeredByAlertId,
160
+ props: {
161
+ isRoot: true,
162
+ },
163
+ select: {
164
+ _id: true,
165
+ title: true,
166
+ description: true,
167
+ projectId: true,
168
+ project: {
169
+ name: true,
170
+ },
171
+ currentAlertState: {
172
+ name: true,
173
+ },
174
+ alertSeverity: {
175
+ name: true,
176
+ },
177
+ },
178
+ });
179
+ }
180
+ if (!incident && !alert) {
181
+ throw new BadDataException("Incident or Alert not found.");
151
182
  }
152
183
  if (((_a = notificationRuleItem.userEmail) === null || _a === void 0 ? void 0 : _a.email) &&
153
184
  ((_b = notificationRuleItem.userEmail) === null || _b === void 0 ? void 0 : _b.isVerified)) {
154
- // send email.
185
+ // send email for alert.
186
+ if (options.userNotificationEventType ===
187
+ UserNotificationEventType.AlertCreated &&
188
+ alert) {
189
+ // create an error log.
190
+ logTimelineItem.status = UserNotificationStatus.Sending;
191
+ logTimelineItem.statusMessage = `Sending email to ${(_c = notificationRuleItem.userEmail) === null || _c === void 0 ? void 0 : _c.email.toString()}`;
192
+ logTimelineItem.userEmailId = notificationRuleItem.userEmail.id;
193
+ const updatedLog = await UserOnCallLogTimelineService.create({
194
+ data: logTimelineItem,
195
+ props: {
196
+ isRoot: true,
197
+ },
198
+ });
199
+ const emailMessage = await this.generateEmailTemplateForAlertCreated((_d = notificationRuleItem.userEmail) === null || _d === void 0 ? void 0 : _d.email, alert, updatedLog.id);
200
+ // send email.
201
+ MailService.sendMail(emailMessage, {
202
+ userOnCallLogTimelineId: updatedLog.id,
203
+ projectId: options.projectId,
204
+ }).catch(async (err) => {
205
+ await UserOnCallLogTimelineService.updateOneById({
206
+ id: updatedLog.id,
207
+ data: {
208
+ status: UserNotificationStatus.Error,
209
+ statusMessage: err.message || "Error sending email.",
210
+ },
211
+ props: {
212
+ isRoot: true,
213
+ },
214
+ });
215
+ });
216
+ }
217
+ // send email for incident
155
218
  if (options.userNotificationEventType ===
156
219
  UserNotificationEventType.IncidentCreated &&
157
220
  incident) {
158
221
  // create an error log.
159
222
  logTimelineItem.status = UserNotificationStatus.Sending;
160
- logTimelineItem.statusMessage = `Sending email to ${(_c = notificationRuleItem.userEmail) === null || _c === void 0 ? void 0 : _c.email.toString()}`;
223
+ logTimelineItem.statusMessage = `Sending email to ${(_e = notificationRuleItem.userEmail) === null || _e === void 0 ? void 0 : _e.email.toString()}`;
161
224
  logTimelineItem.userEmailId = notificationRuleItem.userEmail.id;
162
225
  const updatedLog = await UserOnCallLogTimelineService.create({
163
226
  data: logTimelineItem,
@@ -165,7 +228,7 @@ export class Service extends DatabaseService {
165
228
  isRoot: true,
166
229
  },
167
230
  });
168
- const emailMessage = await this.generateEmailTemplateForIncidentCreated((_d = notificationRuleItem.userEmail) === null || _d === void 0 ? void 0 : _d.email, incident, updatedLog.id);
231
+ const emailMessage = await this.generateEmailTemplateForIncidentCreated((_f = notificationRuleItem.userEmail) === null || _f === void 0 ? void 0 : _f.email, incident, updatedLog.id);
169
232
  // send email.
170
233
  MailService.sendMail(emailMessage, {
171
234
  userOnCallLogTimelineId: updatedLog.id,
@@ -185,11 +248,11 @@ export class Service extends DatabaseService {
185
248
  }
186
249
  }
187
250
  // if you have an email but is not verified, then create a log.
188
- if (((_e = notificationRuleItem.userEmail) === null || _e === void 0 ? void 0 : _e.email) &&
189
- !((_f = notificationRuleItem.userEmail) === null || _f === void 0 ? void 0 : _f.isVerified)) {
251
+ if (((_g = notificationRuleItem.userEmail) === null || _g === void 0 ? void 0 : _g.email) &&
252
+ !((_h = notificationRuleItem.userEmail) === null || _h === void 0 ? void 0 : _h.isVerified)) {
190
253
  // create an error log.
191
254
  logTimelineItem.status = UserNotificationStatus.Error;
192
- logTimelineItem.statusMessage = `Email notification not sent because email ${(_g = notificationRuleItem.userEmail) === null || _g === void 0 ? void 0 : _g.email.toString()} is not verified.`;
255
+ logTimelineItem.statusMessage = `Email notification not sent because email ${(_j = notificationRuleItem.userEmail) === null || _j === void 0 ? void 0 : _j.email.toString()} is not verified.`;
193
256
  await UserOnCallLogTimelineService.create({
194
257
  data: logTimelineItem,
195
258
  props: {
@@ -198,15 +261,47 @@ export class Service extends DatabaseService {
198
261
  });
199
262
  }
200
263
  // send sms.
201
- if (((_h = notificationRuleItem.userSms) === null || _h === void 0 ? void 0 : _h.phone) &&
202
- ((_j = notificationRuleItem.userSms) === null || _j === void 0 ? void 0 : _j.isVerified)) {
203
- // send sms.
264
+ if (((_k = notificationRuleItem.userSms) === null || _k === void 0 ? void 0 : _k.phone) &&
265
+ ((_l = notificationRuleItem.userSms) === null || _l === void 0 ? void 0 : _l.isVerified)) {
266
+ //send sms for alert
267
+ if (options.userNotificationEventType ===
268
+ UserNotificationEventType.AlertCreated &&
269
+ alert) {
270
+ // create an error log.
271
+ logTimelineItem.status = UserNotificationStatus.Sending;
272
+ logTimelineItem.statusMessage = `Sending SMS to ${(_m = notificationRuleItem.userSms) === null || _m === void 0 ? void 0 : _m.phone.toString()}.`;
273
+ logTimelineItem.userSmsId = notificationRuleItem.userSms.id;
274
+ const updatedLog = await UserOnCallLogTimelineService.create({
275
+ data: logTimelineItem,
276
+ props: {
277
+ isRoot: true,
278
+ },
279
+ });
280
+ const smsMessage = await this.generateSmsTemplateForAlertCreated(notificationRuleItem.userSms.phone, alert, updatedLog.id);
281
+ // send email.
282
+ SmsService.sendSms(smsMessage, {
283
+ projectId: alert.projectId,
284
+ userOnCallLogTimelineId: updatedLog.id,
285
+ }).catch(async (err) => {
286
+ await UserOnCallLogTimelineService.updateOneById({
287
+ id: updatedLog.id,
288
+ data: {
289
+ status: UserNotificationStatus.Error,
290
+ statusMessage: err.message || "Error sending SMS.",
291
+ },
292
+ props: {
293
+ isRoot: true,
294
+ },
295
+ });
296
+ });
297
+ }
298
+ // send sms for incident
204
299
  if (options.userNotificationEventType ===
205
300
  UserNotificationEventType.IncidentCreated &&
206
301
  incident) {
207
302
  // create an error log.
208
303
  logTimelineItem.status = UserNotificationStatus.Sending;
209
- logTimelineItem.statusMessage = `Sending SMS to ${(_k = notificationRuleItem.userSms) === null || _k === void 0 ? void 0 : _k.phone.toString()}.`;
304
+ logTimelineItem.statusMessage = `Sending SMS to ${(_o = notificationRuleItem.userSms) === null || _o === void 0 ? void 0 : _o.phone.toString()}.`;
210
305
  logTimelineItem.userSmsId = notificationRuleItem.userSms.id;
211
306
  const updatedLog = await UserOnCallLogTimelineService.create({
212
307
  data: logTimelineItem,
@@ -233,11 +328,11 @@ export class Service extends DatabaseService {
233
328
  });
234
329
  }
235
330
  }
236
- if (((_l = notificationRuleItem.userSms) === null || _l === void 0 ? void 0 : _l.phone) &&
237
- !((_m = notificationRuleItem.userSms) === null || _m === void 0 ? void 0 : _m.isVerified)) {
331
+ if (((_p = notificationRuleItem.userSms) === null || _p === void 0 ? void 0 : _p.phone) &&
332
+ !((_q = notificationRuleItem.userSms) === null || _q === void 0 ? void 0 : _q.isVerified)) {
238
333
  // create a log.
239
334
  logTimelineItem.status = UserNotificationStatus.Error;
240
- logTimelineItem.statusMessage = `SMS not sent because phone ${(_o = notificationRuleItem.userSms) === null || _o === void 0 ? void 0 : _o.phone.toString()} is not verified.`;
335
+ logTimelineItem.statusMessage = `SMS not sent because phone ${(_r = notificationRuleItem.userSms) === null || _r === void 0 ? void 0 : _r.phone.toString()} is not verified.`;
241
336
  await UserOnCallLogTimelineService.create({
242
337
  data: logTimelineItem,
243
338
  props: {
@@ -246,41 +341,77 @@ export class Service extends DatabaseService {
246
341
  });
247
342
  }
248
343
  // send call.
249
- if (((_p = notificationRuleItem.userCall) === null || _p === void 0 ? void 0 : _p.phone) &&
250
- ((_q = notificationRuleItem.userCall) === null || _q === void 0 ? void 0 : _q.isVerified)) {
251
- // send call.
252
- logTimelineItem.status = UserNotificationStatus.Sending;
253
- logTimelineItem.statusMessage = `Making a call to ${(_r = notificationRuleItem.userCall) === null || _r === void 0 ? void 0 : _r.phone.toString()}.`;
254
- logTimelineItem.userCallId = notificationRuleItem.userCall.id;
255
- const updatedLog = await UserOnCallLogTimelineService.create({
256
- data: logTimelineItem,
257
- props: {
258
- isRoot: true,
259
- },
260
- });
261
- const callRequest = await this.generateCallTemplateForIncidentCreated((_s = notificationRuleItem.userCall) === null || _s === void 0 ? void 0 : _s.phone, incident, updatedLog.id);
262
- // send email.
263
- CallService.makeCall(callRequest, {
264
- projectId: incident.projectId,
265
- userOnCallLogTimelineId: updatedLog.id,
266
- }).catch(async (err) => {
267
- await UserOnCallLogTimelineService.updateOneById({
268
- id: updatedLog.id,
269
- data: {
270
- status: UserNotificationStatus.Error,
271
- statusMessage: err.message || "Error making call.",
344
+ if (((_s = notificationRuleItem.userCall) === null || _s === void 0 ? void 0 : _s.phone) &&
345
+ ((_t = notificationRuleItem.userCall) === null || _t === void 0 ? void 0 : _t.isVerified)) {
346
+ // send call for alert
347
+ if (options.userNotificationEventType ===
348
+ UserNotificationEventType.AlertCreated &&
349
+ alert) {
350
+ // create an error log.
351
+ logTimelineItem.status = UserNotificationStatus.Sending;
352
+ logTimelineItem.statusMessage = `Making a call to ${(_u = notificationRuleItem.userCall) === null || _u === void 0 ? void 0 : _u.phone.toString()}.`;
353
+ logTimelineItem.userCallId = notificationRuleItem.userCall.id;
354
+ const updatedLog = await UserOnCallLogTimelineService.create({
355
+ data: logTimelineItem,
356
+ props: {
357
+ isRoot: true,
272
358
  },
359
+ });
360
+ const callRequest = await this.generateCallTemplateForAlertCreated((_v = notificationRuleItem.userCall) === null || _v === void 0 ? void 0 : _v.phone, alert, updatedLog.id);
361
+ // send email.
362
+ CallService.makeCall(callRequest, {
363
+ projectId: alert.projectId,
364
+ userOnCallLogTimelineId: updatedLog.id,
365
+ }).catch(async (err) => {
366
+ await UserOnCallLogTimelineService.updateOneById({
367
+ id: updatedLog.id,
368
+ data: {
369
+ status: UserNotificationStatus.Error,
370
+ statusMessage: err.message || "Error making call.",
371
+ },
372
+ props: {
373
+ isRoot: true,
374
+ },
375
+ });
376
+ });
377
+ }
378
+ if (options.userNotificationEventType ===
379
+ UserNotificationEventType.IncidentCreated &&
380
+ incident) {
381
+ // send call for incident
382
+ logTimelineItem.status = UserNotificationStatus.Sending;
383
+ logTimelineItem.statusMessage = `Making a call to ${(_w = notificationRuleItem.userCall) === null || _w === void 0 ? void 0 : _w.phone.toString()}.`;
384
+ logTimelineItem.userCallId = notificationRuleItem.userCall.id;
385
+ const updatedLog = await UserOnCallLogTimelineService.create({
386
+ data: logTimelineItem,
273
387
  props: {
274
388
  isRoot: true,
275
389
  },
276
390
  });
277
- });
391
+ const callRequest = await this.generateCallTemplateForIncidentCreated((_x = notificationRuleItem.userCall) === null || _x === void 0 ? void 0 : _x.phone, incident, updatedLog.id);
392
+ // send email.
393
+ CallService.makeCall(callRequest, {
394
+ projectId: incident.projectId,
395
+ userOnCallLogTimelineId: updatedLog.id,
396
+ }).catch(async (err) => {
397
+ await UserOnCallLogTimelineService.updateOneById({
398
+ id: updatedLog.id,
399
+ data: {
400
+ status: UserNotificationStatus.Error,
401
+ statusMessage: err.message || "Error making call.",
402
+ },
403
+ props: {
404
+ isRoot: true,
405
+ },
406
+ });
407
+ });
408
+ }
278
409
  }
279
- if (((_t = notificationRuleItem.userCall) === null || _t === void 0 ? void 0 : _t.phone) &&
280
- !((_u = notificationRuleItem.userCall) === null || _u === void 0 ? void 0 : _u.isVerified)) {
410
+ if (((_y = notificationRuleItem.userCall) === null || _y === void 0 ? void 0 : _y.phone) &&
411
+ !((_z = notificationRuleItem.userCall) === null || _z === void 0 ? void 0 : _z.isVerified)) {
281
412
  // create a log.
282
413
  logTimelineItem.status = UserNotificationStatus.Error;
283
- logTimelineItem.statusMessage = `Call not sent because phone ${(_v = notificationRuleItem.userCall) === null || _v === void 0 ? void 0 : _v.phone.toString()} is not verified.`;
414
+ logTimelineItem.statusMessage = `Call not sent because phone ${(_0 = notificationRuleItem.userCall) === null || _0 === void 0 ? void 0 : _0.phone.toString()} is not verified.`;
284
415
  await UserOnCallLogTimelineService.create({
285
416
  data: logTimelineItem,
286
417
  props: {
@@ -289,6 +420,42 @@ export class Service extends DatabaseService {
289
420
  });
290
421
  }
291
422
  }
423
+ async generateCallTemplateForAlertCreated(to, alert, userOnCallLogTimelineId) {
424
+ const host = await DatabaseConfig.getHost();
425
+ const httpProtocol = await DatabaseConfig.getHttpProtocol();
426
+ const callRequest = {
427
+ to: to,
428
+ data: [
429
+ {
430
+ sayMessage: "This is a call from OneUptime",
431
+ },
432
+ {
433
+ sayMessage: "A new alert has been created",
434
+ },
435
+ {
436
+ sayMessage: alert.title,
437
+ },
438
+ {
439
+ introMessage: "To acknowledge this alert press 1",
440
+ numDigits: 1,
441
+ timeoutInSeconds: 10,
442
+ noInputMessage: "You have not entered any input. Good bye",
443
+ onInputCallRequest: {
444
+ "1": {
445
+ sayMessage: "You have acknowledged this alert. Good bye",
446
+ },
447
+ default: {
448
+ sayMessage: "Invalid input. Good bye",
449
+ },
450
+ },
451
+ responseUrl: new URL(httpProtocol, host, new Route(AppApiRoute.toString())
452
+ .addRoute(new UserOnCallLogTimeline().crudApiPath)
453
+ .addRoute("/call/gather-input/" + userOnCallLogTimelineId.toString())),
454
+ },
455
+ ],
456
+ };
457
+ return callRequest;
458
+ }
292
459
  async generateCallTemplateForIncidentCreated(to, incident, userOnCallLogTimelineId) {
293
460
  const host = await DatabaseConfig.getHost();
294
461
  const httpProtocol = await DatabaseConfig.getHttpProtocol();
@@ -325,6 +492,19 @@ export class Service extends DatabaseService {
325
492
  };
326
493
  return callRequest;
327
494
  }
495
+ async generateSmsTemplateForAlertCreated(to, alert, userOnCallLogTimelineId) {
496
+ const host = await DatabaseConfig.getHost();
497
+ const httpProtocol = await DatabaseConfig.getHttpProtocol();
498
+ const shortUrl = await ShortLinkService.saveShortLinkFor(new URL(httpProtocol, host, new Route(AppApiRoute.toString())
499
+ .addRoute(new UserOnCallLogTimeline().crudApiPath)
500
+ .addRoute("/acknowledge/" + userOnCallLogTimelineId.toString())));
501
+ const url = await ShortLinkService.getShortenedUrl(shortUrl);
502
+ const sms = {
503
+ to,
504
+ message: `This is a message from OneUptime. A new alert has been created. ${alert.title}. To acknowledge this alert, please click on the following link ${url.toString()}`,
505
+ };
506
+ return sms;
507
+ }
328
508
  async generateSmsTemplateForIncidentCreated(to, incident, userOnCallLogTimelineId) {
329
509
  const host = await DatabaseConfig.getHost();
330
510
  const httpProtocol = await DatabaseConfig.getHttpProtocol();
@@ -338,6 +518,28 @@ export class Service extends DatabaseService {
338
518
  };
339
519
  return sms;
340
520
  }
521
+ async generateEmailTemplateForAlertCreated(to, alert, userOnCallLogTimelineId) {
522
+ const host = await DatabaseConfig.getHost();
523
+ const httpProtocol = await DatabaseConfig.getHttpProtocol();
524
+ const vars = {
525
+ alertTitle: alert.title,
526
+ projectName: alert.project.name,
527
+ currentState: alert.currentAlertState.name,
528
+ alertDescription: await Markdown.convertToHTML(alert.description || "", MarkdownContentType.Email),
529
+ alertSeverity: alert.alertSeverity.name,
530
+ alertViewLink: (await AlertService.getAlertLinkInDashboard(alert.projectId, alert.id)).toString(),
531
+ acknowledgeAlertLink: new URL(httpProtocol, host, new Route(AppApiRoute.toString())
532
+ .addRoute(new UserOnCallLogTimeline().crudApiPath)
533
+ .addRoute("/acknowledge/" + userOnCallLogTimelineId.toString())).toString(),
534
+ };
535
+ const emailMessage = {
536
+ toEmail: to,
537
+ templateType: EmailTemplateType.AcknowledgeAlert,
538
+ vars: vars,
539
+ subject: "ACTION REQUIRED: Alert created - " + alert.title,
540
+ };
541
+ return emailMessage;
542
+ }
341
543
  async generateEmailTemplateForIncidentCreated(to, incident, userOnCallLogTimelineId) {
342
544
  const host = await DatabaseConfig.getHost();
343
545
  const httpProtocol = await DatabaseConfig.getHttpProtocol();
@@ -369,6 +571,9 @@ export class Service extends DatabaseService {
369
571
  if (options.triggeredByIncidentId) {
370
572
  userOnCallLog.triggeredByIncidentId = options.triggeredByIncidentId;
371
573
  }
574
+ if (options.triggeredByAlertId) {
575
+ userOnCallLog.triggeredByAlertId = options.triggeredByAlertId;
576
+ }
372
577
  userOnCallLog.userNotificationEventType = options.userNotificationEventType;
373
578
  if (options.onCallPolicyExecutionLogId) {
374
579
  userOnCallLog.onCallDutyPolicyExecutionLogId =
@@ -414,7 +619,8 @@ export class Service extends DatabaseService {
414
619
  carryForward: null,
415
620
  };
416
621
  }
417
- async addDefaultNotificationRuleForUser(projectId, userId, email) {
622
+ async addDefaultIncidentNotificationRuleForUser(data) {
623
+ const { projectId, userId, userEmail } = data;
418
624
  const incidentSeverities = await IncidentSeverityService.findBy({
419
625
  query: {
420
626
  projectId,
@@ -428,40 +634,64 @@ export class Service extends DatabaseService {
428
634
  _id: true,
429
635
  },
430
636
  });
431
- //check userEmail
432
- let userEmail = await UserEmailService.findOneBy({
637
+ // create for incident severities.
638
+ for (const incidentSeverity of incidentSeverities) {
639
+ //check if this rule already exists.
640
+ const existingRule = await this.findOneBy({
641
+ query: {
642
+ projectId,
643
+ userId,
644
+ userEmailId: userEmail.id,
645
+ incidentSeverityId: incidentSeverity.id,
646
+ ruleType: NotificationRuleType.ON_CALL_EXECUTED,
647
+ },
648
+ props: {
649
+ isRoot: true,
650
+ },
651
+ });
652
+ if (existingRule) {
653
+ continue; // skip this rule.
654
+ }
655
+ const notificationRule = new Model();
656
+ notificationRule.projectId = projectId;
657
+ notificationRule.userId = userId;
658
+ notificationRule.userEmailId = userEmail.id;
659
+ notificationRule.incidentSeverityId = incidentSeverity.id;
660
+ notificationRule.notifyAfterMinutes = 0;
661
+ notificationRule.ruleType = NotificationRuleType.ON_CALL_EXECUTED;
662
+ await this.create({
663
+ data: notificationRule,
664
+ props: {
665
+ isRoot: true,
666
+ },
667
+ });
668
+ }
669
+ }
670
+ async addDefaultAlertNotificationRulesForUser(data) {
671
+ const { projectId, userId, userEmail } = data;
672
+ const alertSeverities = await AlertSeverityService.findBy({
433
673
  query: {
434
674
  projectId,
435
- userId,
436
- email,
437
675
  },
438
676
  props: {
439
677
  isRoot: true,
440
678
  },
679
+ limit: LIMIT_PER_PROJECT,
680
+ skip: 0,
681
+ select: {
682
+ _id: true,
683
+ },
441
684
  });
442
- if (!userEmail) {
443
- userEmail = new UserEmail();
444
- userEmail.projectId = projectId;
445
- userEmail.userId = userId;
446
- userEmail.email = email;
447
- userEmail.isVerified = true;
448
- userEmail = await UserEmailService.create({
449
- data: userEmail,
450
- props: {
451
- isRoot: true,
452
- },
453
- });
454
- }
455
- // create for incident severities.
456
- for (const incidentSeverity of incidentSeverities) {
685
+ // create for Alert severities.
686
+ for (const alertSeverity of alertSeverities) {
457
687
  //check if this rule already exists.
458
688
  const existingRule = await this.findOneBy({
459
689
  query: {
460
690
  projectId,
461
691
  userId,
462
692
  userEmailId: userEmail.id,
463
- incidentSeverityId: incidentSeverity.id,
464
- ruleType: NotificationRuleType.ON_CALL_INCIDENT_CREATED,
693
+ alertSeverityId: alertSeverity.id,
694
+ ruleType: NotificationRuleType.ON_CALL_EXECUTED,
465
695
  },
466
696
  props: {
467
697
  isRoot: true,
@@ -474,9 +704,9 @@ export class Service extends DatabaseService {
474
704
  notificationRule.projectId = projectId;
475
705
  notificationRule.userId = userId;
476
706
  notificationRule.userEmailId = userEmail.id;
477
- notificationRule.incidentSeverityId = incidentSeverity.id;
707
+ notificationRule.alertSeverityId = alertSeverity.id;
478
708
  notificationRule.notifyAfterMinutes = 0;
479
- notificationRule.ruleType = NotificationRuleType.ON_CALL_INCIDENT_CREATED;
709
+ notificationRule.ruleType = NotificationRuleType.ON_CALL_EXECUTED;
480
710
  await this.create({
481
711
  data: notificationRule,
482
712
  props: {
@@ -484,6 +714,43 @@ export class Service extends DatabaseService {
484
714
  },
485
715
  });
486
716
  }
717
+ }
718
+ async addDefaultNotificationRuleForUser(projectId, userId, email) {
719
+ let userEmail = await UserEmailService.findOneBy({
720
+ query: {
721
+ projectId,
722
+ userId,
723
+ email,
724
+ },
725
+ props: {
726
+ isRoot: true,
727
+ },
728
+ });
729
+ if (!userEmail) {
730
+ userEmail = new UserEmail();
731
+ userEmail.projectId = projectId;
732
+ userEmail.userId = userId;
733
+ userEmail.email = email;
734
+ userEmail.isVerified = true;
735
+ userEmail = await UserEmailService.create({
736
+ data: userEmail,
737
+ props: {
738
+ isRoot: true,
739
+ },
740
+ });
741
+ }
742
+ // add default incident rules for user
743
+ await this.addDefaultIncidentNotificationRuleForUser({
744
+ projectId,
745
+ userId,
746
+ userEmail,
747
+ });
748
+ // add default alert rules for user, just like the incident
749
+ await this.addDefaultAlertNotificationRulesForUser({
750
+ projectId,
751
+ userId,
752
+ userEmail,
753
+ });
487
754
  //check if this rule already exists.
488
755
  const existingRuleOnCall = await this.findOneBy({
489
756
  query: {
@@ -1 +1 @@
1
- {"version":3,"file":"UserNotificationRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/UserNotificationRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAG/C,OAAO,QAAQ,EAAE,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,GAAG,MAAM,qBAAqB,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,oBAAoB,MAAM,mDAAmD,CAAC;AAIrF,OAAO,yBAAyB,MAAM,wDAAwD,CAAC;AAC/F,OAAO,+BAA+B,MAAM,8DAA8D,CAAC;AAC3G,OAAO,sBAAsB,MAAM,qDAAqD,CAAC;AAIzF,OAAO,SAAS,MAAM,wCAAwC,CAAC;AAC/D,OAAO,KAAK,MAAM,mDAAmD,CAAC;AACtE,OAAO,aAAa,MAAM,4CAA4C,CAAC;AACvE,OAAO,qBAAqB,MAAM,oDAAoD,CAAC;AAEvF,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,2BAA2B,CACtC,sBAAgC,EAChC,OAUC;QAED,6FAA6F;;QAE7F,MAAM,aAAa,GACjB,MAAM,oBAAoB,CAAC,WAAW,CAAC;YACrC,EAAE,EAAE,OAAO,CAAC,qBAAqB;YACjC,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;gBACT,yBAAyB,EAAE,IAAI;aAChC;SACF,CAAC,CAAC;QAEL,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QACjE,CAAC;QAED,IACE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,QAAQ,CACjE,sBAAsB,CAAC,QAAQ,EAAE,CAClC,EACD,CAAC;YACD,oBAAoB;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC7C,aAAa,CAAC,yBAAyB,GAAG,EAAE,CAAC;QAC/C,CAAC;QAED,aAAa,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACxE,aAAa,CAAC,cAAc,EAAE,CAAC;QAEjC,MAAM,oBAAoB,CAAC,aAAa,CAAC;YACvC,EAAE,EAAE,aAAa,CAAC,EAAG;YACrB,IAAI,EAAE;gBACJ,yBAAyB,oBACpB,aAAa,CAAC,yBAAyB,CAC3C;aACK;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,oBAAoB,GAAiB,MAAM,IAAI,CAAC,WAAW,CAAC;YAChE,EAAE,EAAE,sBAAuB;YAC3B,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;gBACT,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACR,KAAK,EAAE,IAAI;oBACX,UAAU,EAAE,IAAI;iBACjB;gBACD,OAAO,EAAE;oBACP,KAAK,EAAE,IAAI;oBACX,UAAU,EAAE,IAAI;iBACjB;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE,IAAI;oBACX,UAAU,EAAE,IAAI;iBACjB;aACF;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,gBAAgB,CAAC,mCAAmC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,eAAe,GAA0B,IAAI,qBAAqB,EAAE,CAAC;QAC3E,eAAe,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAC9C,eAAe,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACtE,eAAe,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QAChE,eAAe,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACtE,eAAe,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAO,CAAC;QACtD,eAAe,CAAC,yBAAyB;YACvC,OAAO,CAAC,yBAAyB,CAAC;QAEpC,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAChC,eAAe,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACpE,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,eAAe,CAAC,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;QAC9D,CAAC;QAED,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;YACzC,eAAe,CAAC,gCAAgC;gBAC9C,OAAO,CAAC,4BAA4B,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;YACvC,eAAe,CAAC,8BAA8B;gBAC5C,OAAO,CAAC,0BAA0B,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAClC,eAAe,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACxE,CAAC;QAED,IAAI,OAAO,CAAC,sCAAsC,EAAE,CAAC;YACnD,eAAe,CAAC,sCAAsC;gBACpD,OAAO,CAAC,sCAAsC,CAAC;QACnD,CAAC;QAED,0CAA0C;QAE1C,IAAI,QAAQ,GAAoB,IAAI,CAAC;QAErC,IACE,OAAO,CAAC,yBAAyB;YAC/B,yBAAyB,CAAC,eAAe;YAC3C,OAAO,CAAC,qBAAqB,EAC7B,CAAC;YACD,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC;gBAC3C,EAAE,EAAE,OAAO,CAAC,qBAAsB;gBAClC,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;gBACD,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,IAAI;oBACX,WAAW,EAAE,IAAI;oBACjB,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE;wBACP,IAAI,EAAE,IAAI;qBACX;oBACD,oBAAoB,EAAE;wBACpB,IAAI,EAAE,IAAI;qBACX;oBACD,gBAAgB,EAAE;wBAChB,IAAI,EAAE,IAAI;qBACX;oBACD,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QACpD,CAAC;QAED,IACE,CAAA,MAAA,oBAAoB,CAAC,SAAS,0CAAE,KAAK;aACrC,MAAA,oBAAoB,CAAC,SAAS,0CAAE,UAAU,CAAA,EAC1C,CAAC;YACD,cAAc;YACd,IACE,OAAO,CAAC,yBAAyB;gBAC/B,yBAAyB,CAAC,eAAe;gBAC3C,QAAQ,EACR,CAAC;gBACD,uBAAuB;gBACvB,eAAe,CAAC,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC;gBACxD,eAAe,CAAC,aAAa,GAAG,oBAAoB,MAAA,oBAAoB,CAAC,SAAS,0CAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACvG,eAAe,CAAC,WAAW,GAAG,oBAAoB,CAAC,SAAS,CAAC,EAAG,CAAC;gBAEjE,MAAM,UAAU,GACd,MAAM,4BAA4B,CAAC,MAAM,CAAC;oBACxC,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,uCAAuC,CAChD,MAAA,oBAAoB,CAAC,SAAS,0CAAE,KAAK,EACrC,QAAQ,EACR,UAAU,CAAC,EAAG,CACf,CAAC;gBAEJ,cAAc;gBAEd,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE;oBACjC,uBAAuB,EAAE,UAAU,CAAC,EAAG;oBACvC,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAU,EAAE,EAAE;oBAC5B,MAAM,4BAA4B,CAAC,aAAa,CAAC;wBAC/C,EAAE,EAAE,UAAU,CAAC,EAAG;wBAClB,IAAI,EAAE;4BACJ,MAAM,EAAE,sBAAsB,CAAC,KAAK;4BACpC,aAAa,EAAE,GAAG,CAAC,OAAO,IAAI,sBAAsB;yBACrD;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IACE,CAAA,MAAA,oBAAoB,CAAC,SAAS,0CAAE,KAAK;YACrC,CAAC,CAAA,MAAA,oBAAoB,CAAC,SAAS,0CAAE,UAAU,CAAA,EAC3C,CAAC;YACD,uBAAuB;YACvB,eAAe,CAAC,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;YACtD,eAAe,CAAC,aAAa,GAAG,6CAA6C,MAAA,oBAAoB,CAAC,SAAS,0CAAE,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAEjJ,MAAM,4BAA4B,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAED,YAAY;QACZ,IACE,CAAA,MAAA,oBAAoB,CAAC,OAAO,0CAAE,KAAK;aACnC,MAAA,oBAAoB,CAAC,OAAO,0CAAE,UAAU,CAAA,EACxC,CAAC;YACD,YAAY;YACZ,IACE,OAAO,CAAC,yBAAyB;gBAC/B,yBAAyB,CAAC,eAAe;gBAC3C,QAAQ,EACR,CAAC;gBACD,uBAAuB;gBACvB,eAAe,CAAC,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC;gBACxD,eAAe,CAAC,aAAa,GAAG,kBAAkB,MAAA,oBAAoB,CAAC,OAAO,0CAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;gBACpG,eAAe,CAAC,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAAG,CAAC;gBAE7D,MAAM,UAAU,GACd,MAAM,4BAA4B,CAAC,MAAM,CAAC;oBACxC,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,MAAM,UAAU,GACd,MAAM,IAAI,CAAC,qCAAqC,CAC9C,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAClC,QAAQ,EACR,UAAU,CAAC,EAAG,CACf,CAAC;gBAEJ,cAAc;gBAEd,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,uBAAuB,EAAE,UAAU,CAAC,EAAG;iBACxC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAU,EAAE,EAAE;oBAC5B,MAAM,4BAA4B,CAAC,aAAa,CAAC;wBAC/C,EAAE,EAAE,UAAU,CAAC,EAAG;wBAClB,IAAI,EAAE;4BACJ,MAAM,EAAE,sBAAsB,CAAC,KAAK;4BACpC,aAAa,EAAE,GAAG,CAAC,OAAO,IAAI,oBAAoB;yBACnD;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IACE,CAAA,MAAA,oBAAoB,CAAC,OAAO,0CAAE,KAAK;YACnC,CAAC,CAAA,MAAA,oBAAoB,CAAC,OAAO,0CAAE,UAAU,CAAA,EACzC,CAAC;YACD,gBAAgB;YAChB,eAAe,CAAC,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;YACtD,eAAe,CAAC,aAAa,GAAG,8BAA8B,MAAA,oBAAoB,CAAC,OAAO,0CAAE,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAEhI,MAAM,4BAA4B,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAED,aAAa;QACb,IACE,CAAA,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,KAAK;aACpC,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,UAAU,CAAA,EACzC,CAAC;YACD,aAAa;YACb,eAAe,CAAC,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC;YACxD,eAAe,CAAC,aAAa,GAAG,oBAAoB,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;YACvG,eAAe,CAAC,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,EAAG,CAAC;YAE/D,MAAM,UAAU,GACd,MAAM,4BAA4B,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;YAEL,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,sCAAsC,CAC/C,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,KAAK,EACpC,QAAQ,EACR,UAAU,CAAC,EAAG,CACf,CAAC;YAEJ,cAAc;YAEd,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAChC,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,uBAAuB,EAAE,UAAU,CAAC,EAAG;aACxC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAU,EAAE,EAAE;gBAC5B,MAAM,4BAA4B,CAAC,aAAa,CAAC;oBAC/C,EAAE,EAAE,UAAU,CAAC,EAAG;oBAClB,IAAI,EAAE;wBACJ,MAAM,EAAE,sBAAsB,CAAC,KAAK;wBACpC,aAAa,EAAE,GAAG,CAAC,OAAO,IAAI,oBAAoB;qBACnD;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IACE,CAAA,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,KAAK;YACpC,CAAC,CAAA,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,UAAU,CAAA,EAC1C,CAAC;YACD,gBAAgB;YAChB,eAAe,CAAC,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;YACtD,eAAe,CAAC,aAAa,GAAG,+BAA+B,MAAA,oBAAoB,CAAC,QAAQ,0CAAE,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAElI,MAAM,4BAA4B,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,sCAAsC,CACjD,EAAS,EACT,QAAkB,EAClB,uBAAiC;QAEjC,MAAM,IAAI,GAAa,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;QAEtD,MAAM,YAAY,GAAa,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;QAEtE,MAAM,WAAW,GAAgB;YAC/B,EAAE,EAAE,EAAE;YACN,IAAI,EAAE;gBACJ;oBACE,UAAU,EAAE,+BAA+B;iBAC5C;gBACD;oBACE,UAAU,EAAE,iCAAiC;iBAC9C;gBACD;oBACE,UAAU,EAAE,QAAQ,CAAC,KAAM;iBAC5B;gBACD;oBACE,YAAY,EAAE,sCAAsC;oBACpD,SAAS,EAAE,CAAC;oBACZ,gBAAgB,EAAE,EAAE;oBACpB,cAAc,EAAE,0CAA0C;oBAC1D,kBAAkB,EAAE;wBAClB,GAAG,EAAE;4BACH,UAAU,EAAE,+CAA+C;yBAC5D;wBACD,OAAO,EAAE;4BACP,UAAU,EAAE,yBAAyB;yBACtC;qBACF;oBACD,WAAW,EAAE,IAAI,GAAG,CAClB,YAAY,EACZ,IAAI,EACJ,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;yBAC9B,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,WAAY,CAAC;yBAClD,QAAQ,CACP,qBAAqB,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAC3D,CACJ;iBACF;aACF;SACF,CAAC;QAEF,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,qCAAqC,CAChD,EAAS,EACT,QAAkB,EAClB,uBAAiC;QAEjC,MAAM,IAAI,GAAa,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,YAAY,GAAa,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;QAEtE,MAAM,QAAQ,GAAc,MAAM,gBAAgB,CAAC,gBAAgB,CACjE,IAAI,GAAG,CACL,YAAY,EACZ,IAAI,EACJ,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;aAC9B,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,WAAY,CAAC;aAClD,QAAQ,CAAC,eAAe,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAClE,CACF,CAAC;QACF,MAAM,GAAG,GAAQ,MAAM,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAElE,MAAM,GAAG,GAAQ;YACf,EAAE;YACF,OAAO,EAAE,sEACP,QAAQ,CAAC,KACX,sEAAsE,GAAG,CAAC,QAAQ,EAAE,EAAE;SACvF,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,uCAAuC,CAClD,EAAS,EACT,QAAkB,EAClB,uBAAiC;QAEjC,MAAM,IAAI,GAAa,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,YAAY,GAAa,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;QAEtE,MAAM,IAAI,GAAuB;YAC/B,aAAa,EAAE,QAAQ,CAAC,KAAM;YAC9B,WAAW,EAAE,QAAQ,CAAC,OAAQ,CAAC,IAAK;YACpC,YAAY,EAAE,QAAQ,CAAC,oBAAqB,CAAC,IAAK;YAClD,mBAAmB,EAAE,MAAM,QAAQ,CAAC,aAAa,CAC/C,QAAQ,CAAC,WAAY,IAAI,EAAE,EAC3B,mBAAmB,CAAC,KAAK,CAC1B;YACD,gBAAgB,EAAE,QAAQ,CAAC,gBAAiB,CAAC,IAAK;YAClD,SAAS,EACP,QAAQ,CAAC,SAAS,IAAI,4CAA4C;YACpE,gBAAgB,EAAE,CAChB,MAAM,eAAe,CAAC,0BAA0B,CAC9C,QAAQ,CAAC,SAAU,EACnB,QAAQ,CAAC,EAAG,CACb,CACF,CAAC,QAAQ,EAAE;YACZ,uBAAuB,EAAE,IAAI,GAAG,CAC9B,YAAY,EACZ,IAAI,EACJ,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;iBAC9B,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,WAAY,CAAC;iBAClD,QAAQ,CAAC,eAAe,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAClE,CAAC,QAAQ,EAAE;SACb,CAAC;QAEF,MAAM,YAAY,GAAiB;YACjC,OAAO,EAAE,EAAG;YACZ,YAAY,EAAE,iBAAiB,CAAC,mBAAmB;YACnD,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,sCAAsC,GAAG,QAAQ,CAAC,KAAM;SAClE,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,mCAAmC,CAC9C,MAAgB,EAChB,OAUC;QAED,6BAA6B;QAC7B,MAAM,aAAa,GAAkB,IAAI,aAAa,EAAE,CAAC;QAEzD,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAE5C,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAClC,aAAa,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACtE,CAAC;QAED,aAAa,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QAE5E,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;YACvC,aAAa,CAAC,8BAA8B;gBAC1C,OAAO,CAAC,0BAA0B,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,aAAa,CAAC,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,CAAC,sCAAsC,EAAE,CAAC;YACnD,aAAa,CAAC,sCAAsC;gBAClD,OAAO,CAAC,sCAAsC,CAAC;QACnD,CAAC;QAED,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;YACzC,aAAa,CAAC,gCAAgC;gBAC5C,OAAO,CAAC,4BAA4B,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAChC,aAAa,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QAClE,CAAC;QAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,aAAa,CAAC,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAChE,CAAC;QAED,aAAa,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC;QACjE,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC;QAE1C,MAAM,oBAAoB,CAAC,MAAM,CAAC;YAChC,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAEkB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IACE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;YACvB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS;YACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;YACtB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS;YACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAC1B,CAAC;YACD,MAAM,IAAI,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO;YACL,QAAQ;YACR,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,iCAAiC,CAC5C,SAAmB,EACnB,MAAgB,EAChB,KAAY;QAEZ,MAAM,kBAAkB,GACtB,MAAM,uBAAuB,CAAC,MAAM,CAAC;YACnC,KAAK,EAAE;gBACL,SAAS;aACV;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;SACF,CAAC,CAAC;QAEL,iBAAiB;QAEjB,IAAI,SAAS,GAAqB,MAAM,gBAAgB,CAAC,SAAS,CAAC;YACjE,KAAK,EAAE;gBACL,SAAS;gBACT,MAAM;gBACN,KAAK;aACN;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;YAChC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;YAC1B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YACxB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;YAE5B,SAAS,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,gBAAgB,IAAI,kBAAkB,EAAE,CAAC;YAClD,oCAAoC;YACpC,MAAM,YAAY,GAAiB,MAAM,IAAI,CAAC,SAAS,CAAC;gBACtD,KAAK,EAAE;oBACL,SAAS;oBACT,MAAM;oBACN,WAAW,EAAE,SAAS,CAAC,EAAG;oBAC1B,kBAAkB,EAAE,gBAAgB,CAAC,EAAG;oBACxC,QAAQ,EAAE,oBAAoB,CAAC,wBAAwB;iBACxD;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;YAEH,IAAI,YAAY,EAAE,CAAC;gBACjB,SAAS,CAAC,kBAAkB;YAC9B,CAAC;YAED,MAAM,gBAAgB,GAAU,IAAI,KAAK,EAAE,CAAC;YAE5C,gBAAgB,CAAC,SAAS,GAAG,SAAS,CAAC;YACvC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;YACjC,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAC,EAAG,CAAC;YAC7C,gBAAgB,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,EAAG,CAAC;YAC3D,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,CAAC;YACxC,gBAAgB,CAAC,QAAQ,GAAG,oBAAoB,CAAC,wBAAwB,CAAC;YAE1E,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,MAAM,kBAAkB,GAAiB,MAAM,IAAI,CAAC,SAAS,CAAC;YAC5D,KAAK,EAAE;gBACL,SAAS;gBACT,MAAM;gBACN,WAAW,EAAE,SAAS,CAAC,EAAG;gBAC1B,QAAQ,EAAE,oBAAoB,CAAC,sBAAsB;aACtD;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,mBAAmB;YACnB,MAAM,UAAU,GAAU,IAAI,KAAK,EAAE,CAAC;YAEtC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;YACjC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;YAC3B,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,EAAG,CAAC;YACvC,UAAU,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAClC,UAAU,CAAC,QAAQ,GAAG,oBAAoB,CAAC,sBAAsB,CAAC;YAElE,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,MAAM,mBAAmB,GAAiB,MAAM,IAAI,CAAC,SAAS,CAAC;YAC7D,KAAK,EAAE;gBACL,SAAS;gBACT,MAAM;gBACN,WAAW,EAAE,SAAS,CAAC,EAAG;gBAC1B,QAAQ,EAAE,oBAAoB,CAAC,uBAAuB;aACvD;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,mBAAmB;YACnB,MAAM,WAAW,GAAU,IAAI,KAAK,EAAE,CAAC;YAEvC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;YAClC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;YAC5B,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC,EAAG,CAAC;YACxC,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC;YACnC,WAAW,CAAC,QAAQ,GAAG,oBAAoB,CAAC,uBAAuB,CAAC;YAEpE,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AACD,eAAe,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"UserNotificationRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/UserNotificationRuleService.ts"],"names":[],"mappings":"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"}