@oneuptime/common 7.0.3517 → 7.0.3526
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/Models/DatabaseModels/ScheduledMaintenanceFeed.ts +15 -7
- package/Server/API/BillingInvoiceAPI.ts +2 -32
- package/Server/Services/AlertFeedService.ts +44 -37
- package/Server/Services/BillingInvoiceService.ts +170 -0
- package/Server/Services/IncidentFeedService.ts +59 -54
- package/Server/Services/IncidentInternalNoteService.ts +46 -1
- package/Server/Services/IncidentPublicNoteService.ts +47 -2
- package/Server/Services/ScheduledMaintenanceFeedService.ts +51 -40
- package/Server/Services/ScheduledMaintenanceInternalNoteService.ts +75 -0
- package/Server/Services/ScheduledMaintenanceOwnerTeamService.ts +116 -0
- package/Server/Services/ScheduledMaintenanceOwnerUserService.ts +118 -0
- package/Server/Services/ScheduledMaintenancePublicNoteService.ts +74 -1
- package/Server/Services/ScheduledMaintenanceService.ts +68 -0
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +30 -0
- package/Server/Utils/Logger.ts +14 -0
- package/UI/Utils/Project.ts +25 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceFeed.js +15 -7
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceFeed.js.map +1 -1
- package/build/dist/Server/API/BillingInvoiceAPI.js +2 -19
- package/build/dist/Server/API/BillingInvoiceAPI.js.map +1 -1
- package/build/dist/Server/Services/AlertFeedService.js +43 -35
- package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
- package/build/dist/Server/Services/BillingInvoiceService.js +123 -0
- package/build/dist/Server/Services/BillingInvoiceService.js.map +1 -1
- package/build/dist/Server/Services/IncidentFeedService.js +45 -39
- package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
- package/build/dist/Server/Services/IncidentInternalNoteService.js +37 -0
- package/build/dist/Server/Services/IncidentInternalNoteService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js +38 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js +45 -37
- package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js +56 -0
- package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerTeamService.js +86 -0
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerUserService.js +89 -0
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +56 -0
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +57 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +24 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +11 -0
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/UI/Utils/Project.js +11 -0
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,7 +3,8 @@ import OneUptimeDate from "../../Types/Date";
|
|
|
3
3
|
import Model from "Common/Models/DatabaseModels/IncidentPublicNote";
|
|
4
4
|
import IncidentFeedService from "./IncidentFeedService";
|
|
5
5
|
import { IncidentFeedEventType } from "../../Models/DatabaseModels/IncidentFeed";
|
|
6
|
-
import { Indigo500 } from "../../Types/BrandColors";
|
|
6
|
+
import { Blue500, Indigo500 } from "../../Types/BrandColors";
|
|
7
|
+
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
7
8
|
export class Service extends DatabaseService {
|
|
8
9
|
constructor() {
|
|
9
10
|
super(Model);
|
|
@@ -33,6 +34,42 @@ ${createdItem.note}
|
|
|
33
34
|
});
|
|
34
35
|
return createdItem;
|
|
35
36
|
}
|
|
37
|
+
async onUpdateSuccess(onUpdate, _updatedItemIds) {
|
|
38
|
+
if (onUpdate.updateBy.data.note) {
|
|
39
|
+
const updatedItems = await this.findBy({
|
|
40
|
+
query: onUpdate.updateBy.query,
|
|
41
|
+
limit: LIMIT_PER_PROJECT,
|
|
42
|
+
skip: 0,
|
|
43
|
+
props: {
|
|
44
|
+
isRoot: true,
|
|
45
|
+
},
|
|
46
|
+
select: {
|
|
47
|
+
incidentId: true,
|
|
48
|
+
projectId: true,
|
|
49
|
+
note: true,
|
|
50
|
+
createdByUserId: true,
|
|
51
|
+
createdByUser: {
|
|
52
|
+
_id: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const userId = onUpdate.updateBy.props.userId;
|
|
57
|
+
for (const updatedItem of updatedItems) {
|
|
58
|
+
await IncidentFeedService.createIncidentFeed({
|
|
59
|
+
incidentId: updatedItem.incidentId,
|
|
60
|
+
projectId: updatedItem.projectId,
|
|
61
|
+
incidentFeedEventType: IncidentFeedEventType.PublicNote,
|
|
62
|
+
displayColor: Blue500,
|
|
63
|
+
userId: userId || undefined,
|
|
64
|
+
feedInfoInMarkdown: `**Updated Public Note**
|
|
65
|
+
|
|
66
|
+
${updatedItem.note}
|
|
67
|
+
`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return onUpdate;
|
|
72
|
+
}
|
|
36
73
|
}
|
|
37
74
|
export default new Service();
|
|
38
75
|
//# sourceMappingURL=IncidentPublicNoteService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncidentPublicNoteService.js","sourceRoot":"","sources":["../../../../Server/Services/IncidentPublicNoteService.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,iDAAiD,CAAC;AACpE,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"IncidentPublicNoteService.js","sourceRoot":"","sources":["../../../../Server/Services/IncidentPublicNoteService.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,iDAAiD,CAAC;AACpE,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEkB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAC1D,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,SAA0B,EAC1B,WAAkB;;QAElB,MAAM,MAAM,GACV,WAAW,CAAC,eAAe,KAAI,MAAA,WAAW,CAAC,aAAa,0CAAE,EAAE,CAAA,CAAC;QAE/D,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;YAC3C,UAAU,EAAE,WAAW,CAAC,UAAW;YACnC,SAAS,EAAE,WAAW,CAAC,SAAU;YACjC,qBAAqB,EAAE,qBAAqB,CAAC,UAAU;YACvD,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,kBAAkB,EAAE;;EAExB,WAAW,CAAC,IAAI;WACP;SACN,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,QAAyB,EACzB,eAAgC;QAEhC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,YAAY,GAAiB,MAAM,IAAI,CAAC,MAAM,CAAC;gBACnD,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAC9B,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;gBACD,MAAM,EAAE;oBACN,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,IAAI;oBACf,IAAI,EAAE,IAAI;oBACV,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE;wBACb,GAAG,EAAE,IAAI;qBACV;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GACV,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAEjC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;oBAC3C,UAAU,EAAE,WAAW,CAAC,UAAW;oBACnC,SAAS,EAAE,WAAW,CAAC,SAAU;oBACjC,qBAAqB,EAAE,qBAAqB,CAAC,UAAU;oBACvD,YAAY,EAAE,OAAO;oBACrB,MAAM,EAAE,MAAM,IAAI,SAAS;oBAE3B,kBAAkB,EAAE;;EAE5B,WAAW,CAAC,IAAI;aACL;iBACJ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { Blue500 } from "../../Types/BrandColors";
|
|
|
2
2
|
import OneUptimeDate from "../../Types/Date";
|
|
3
3
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
4
4
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
5
|
+
import logger from "../Utils/Logger";
|
|
5
6
|
import DatabaseService from "./DatabaseService";
|
|
6
7
|
import Model from "Common/Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
7
8
|
export class Service extends DatabaseService {
|
|
@@ -12,45 +13,52 @@ export class Service extends DatabaseService {
|
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
async createScheduledMaintenanceFeed(data) {
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
try {
|
|
17
|
+
if (!data.scheduledMaintenanceId) {
|
|
18
|
+
throw new BadDataException("Scheduled Maintenance ID is required");
|
|
19
|
+
}
|
|
20
|
+
if (!data.feedInfoInMarkdown) {
|
|
21
|
+
throw new BadDataException("Log in markdown is required");
|
|
22
|
+
}
|
|
23
|
+
if (!data.scheduledMaintenanceFeedEventType) {
|
|
24
|
+
throw new BadDataException("Scheduled Maintenance log event is required");
|
|
25
|
+
}
|
|
26
|
+
if (!data.projectId) {
|
|
27
|
+
throw new BadDataException("Project ID is required");
|
|
28
|
+
}
|
|
29
|
+
if (!data.displayColor) {
|
|
30
|
+
data.displayColor = Blue500;
|
|
31
|
+
}
|
|
32
|
+
const scheduledMaintenanceFeed = new Model();
|
|
33
|
+
scheduledMaintenanceFeed.displayColor = data.displayColor;
|
|
34
|
+
scheduledMaintenanceFeed.scheduledMaintenanceId =
|
|
35
|
+
data.scheduledMaintenanceId;
|
|
36
|
+
scheduledMaintenanceFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
|
|
37
|
+
scheduledMaintenanceFeed.scheduledMaintenanceFeedEventType =
|
|
38
|
+
data.scheduledMaintenanceFeedEventType;
|
|
39
|
+
scheduledMaintenanceFeed.projectId = data.projectId;
|
|
40
|
+
if (data.userId) {
|
|
41
|
+
scheduledMaintenanceFeed.userId = data.userId;
|
|
42
|
+
}
|
|
43
|
+
if (data.moreInformationInMarkdown) {
|
|
44
|
+
scheduledMaintenanceFeed.moreInformationInMarkdown =
|
|
45
|
+
data.moreInformationInMarkdown;
|
|
46
|
+
}
|
|
47
|
+
if (!data.postedAt) {
|
|
48
|
+
scheduledMaintenanceFeed.postedAt = OneUptimeDate.getCurrentDate();
|
|
49
|
+
}
|
|
50
|
+
await this.create({
|
|
51
|
+
data: scheduledMaintenanceFeed,
|
|
52
|
+
props: {
|
|
53
|
+
isRoot: true,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
17
56
|
}
|
|
18
|
-
|
|
19
|
-
|
|
57
|
+
catch (error) {
|
|
58
|
+
logger.error("ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed");
|
|
59
|
+
logger.error(error);
|
|
60
|
+
// we dont want to throw the error here, as this is not critical but we still log it.
|
|
20
61
|
}
|
|
21
|
-
if (!data.scheduledMaintenanceFeedEventType) {
|
|
22
|
-
throw new BadDataException("Scheduled Maintenance log event is required");
|
|
23
|
-
}
|
|
24
|
-
if (!data.projectId) {
|
|
25
|
-
throw new BadDataException("Project ID is required");
|
|
26
|
-
}
|
|
27
|
-
if (!data.displayColor) {
|
|
28
|
-
data.displayColor = Blue500;
|
|
29
|
-
}
|
|
30
|
-
const scheduledMaintenanceFeed = new Model();
|
|
31
|
-
scheduledMaintenanceFeed.displayColor = data.displayColor;
|
|
32
|
-
scheduledMaintenanceFeed.scheduledMaintenanceId =
|
|
33
|
-
data.scheduledMaintenanceId;
|
|
34
|
-
scheduledMaintenanceFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
|
|
35
|
-
scheduledMaintenanceFeed.scheduledMaintenanceFeedEventType =
|
|
36
|
-
data.scheduledMaintenanceFeedEventType;
|
|
37
|
-
scheduledMaintenanceFeed.projectId = data.projectId;
|
|
38
|
-
if (data.userId) {
|
|
39
|
-
scheduledMaintenanceFeed.userId = data.userId;
|
|
40
|
-
}
|
|
41
|
-
if (data.moreInformationInMarkdown) {
|
|
42
|
-
scheduledMaintenanceFeed.moreInformationInMarkdown =
|
|
43
|
-
data.moreInformationInMarkdown;
|
|
44
|
-
}
|
|
45
|
-
if (!data.postedAt) {
|
|
46
|
-
scheduledMaintenanceFeed.postedAt = OneUptimeDate.getCurrentDate();
|
|
47
|
-
}
|
|
48
|
-
return await this.create({
|
|
49
|
-
data: scheduledMaintenanceFeed,
|
|
50
|
-
props: {
|
|
51
|
-
isRoot: true,
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
64
|
export default new Service();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledMaintenanceFeedService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceFeedService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAEN,MAAM,uDAAuD,CAAC;AAE/D,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,8BAA8B,CAAC,IAS3C;QACC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ScheduledMaintenanceFeedService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceFeedService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAEN,MAAM,uDAAuD,CAAC;AAE/D,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,8BAA8B,CAAC,IAS3C;QACC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjC,MAAM,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,MAAM,IAAI,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC;gBAC5C,MAAM,IAAI,gBAAgB,CACxB,6CAA6C,CAC9C,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC9B,CAAC;YAED,MAAM,wBAAwB,GAAU,IAAI,KAAK,EAAE,CAAC;YAEpD,wBAAwB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC1D,wBAAwB,CAAC,sBAAsB;gBAC7C,IAAI,CAAC,sBAAsB,CAAC;YAC9B,wBAAwB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACtE,wBAAwB,CAAC,iCAAiC;gBACxD,IAAI,CAAC,iCAAiC,CAAC;YACzC,wBAAwB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEpD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAChD,CAAC;YAED,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACnC,wBAAwB,CAAC,yBAAyB;oBAChD,IAAI,CAAC,yBAAyB,CAAC;YACnC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,wBAAwB,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;YACrE,CAAC;YAED,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,gEAAgE,CACjE,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,qFAAqF;QACvF,CAAC;IACH,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -1,9 +1,65 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
2
|
import Model from "Common/Models/DatabaseModels/ScheduledMaintenanceInternalNote";
|
|
3
|
+
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
4
|
+
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
5
|
+
import { Blue500 } from "../../Types/BrandColors";
|
|
6
|
+
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
3
7
|
export class Service extends DatabaseService {
|
|
4
8
|
constructor() {
|
|
5
9
|
super(Model);
|
|
6
10
|
}
|
|
11
|
+
async onCreateSuccess(_onCreate, createdItem) {
|
|
12
|
+
var _a;
|
|
13
|
+
const userId = createdItem.createdByUserId || ((_a = createdItem.createdByUser) === null || _a === void 0 ? void 0 : _a.id);
|
|
14
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
15
|
+
scheduledMaintenanceId: createdItem.scheduledMaintenanceId,
|
|
16
|
+
projectId: createdItem.projectId,
|
|
17
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.PrivateNote,
|
|
18
|
+
displayColor: Blue500,
|
|
19
|
+
userId: userId || undefined,
|
|
20
|
+
feedInfoInMarkdown: `**Posted Internal / Private Note**
|
|
21
|
+
|
|
22
|
+
${createdItem.note}
|
|
23
|
+
`,
|
|
24
|
+
});
|
|
25
|
+
return createdItem;
|
|
26
|
+
}
|
|
27
|
+
async onUpdateSuccess(onUpdate, _updatedItemIds) {
|
|
28
|
+
if (onUpdate.updateBy.data.note) {
|
|
29
|
+
const updatedItems = await this.findBy({
|
|
30
|
+
query: onUpdate.updateBy.query,
|
|
31
|
+
limit: LIMIT_PER_PROJECT,
|
|
32
|
+
skip: 0,
|
|
33
|
+
props: {
|
|
34
|
+
isRoot: true,
|
|
35
|
+
},
|
|
36
|
+
select: {
|
|
37
|
+
scheduledMaintenanceId: true,
|
|
38
|
+
projectId: true,
|
|
39
|
+
note: true,
|
|
40
|
+
createdByUserId: true,
|
|
41
|
+
createdByUser: {
|
|
42
|
+
_id: true,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const userId = onUpdate.updateBy.props.userId;
|
|
47
|
+
for (const updatedItem of updatedItems) {
|
|
48
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
49
|
+
scheduledMaintenanceId: updatedItem.scheduledMaintenanceId,
|
|
50
|
+
projectId: updatedItem.projectId,
|
|
51
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.PrivateNote,
|
|
52
|
+
displayColor: Blue500,
|
|
53
|
+
userId: userId || undefined,
|
|
54
|
+
feedInfoInMarkdown: `**Updated Private Note**
|
|
55
|
+
|
|
56
|
+
${updatedItem.note}
|
|
57
|
+
`,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return onUpdate;
|
|
62
|
+
}
|
|
7
63
|
}
|
|
8
64
|
export default new Service();
|
|
9
65
|
//# sourceMappingURL=ScheduledMaintenanceInternalNoteService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledMaintenanceInternalNoteService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceInternalNoteService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScheduledMaintenanceInternalNoteService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceInternalNoteService.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,+DAA+D,CAAC;AAClF,OAAO,+BAA+B,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,iCAAiC,EAAE,MAAM,sDAAsD,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,SAA0B,EAC1B,WAAkB;;QAElB,MAAM,MAAM,GACV,WAAW,CAAC,eAAe,KAAI,MAAA,WAAW,CAAC,aAAa,0CAAE,EAAE,CAAA,CAAC;QAE/D,MAAM,+BAA+B,CAAC,8BAA8B,CAAC;YACnE,sBAAsB,EAAE,WAAW,CAAC,sBAAuB;YAC3D,SAAS,EAAE,WAAW,CAAC,SAAU;YACjC,iCAAiC,EAC/B,iCAAiC,CAAC,WAAW;YAC/C,YAAY,EAAE,OAAO;YACrB,MAAM,EAAE,MAAM,IAAI,SAAS;YAE3B,kBAAkB,EAAE;;EAExB,WAAW,CAAC,IAAI;aACL;SACR,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,QAAyB,EACzB,eAAgC;QAEhC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,YAAY,GAAiB,MAAM,IAAI,CAAC,MAAM,CAAC;gBACnD,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAC9B,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;gBACD,MAAM,EAAE;oBACN,sBAAsB,EAAE,IAAI;oBAC5B,SAAS,EAAE,IAAI;oBACf,IAAI,EAAE,IAAI;oBACV,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE;wBACb,GAAG,EAAE,IAAI;qBACV;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GACV,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAEjC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,+BAA+B,CAAC,8BAA8B,CAAC;oBACnE,sBAAsB,EAAE,WAAW,CAAC,sBAAuB;oBAC3D,SAAS,EAAE,WAAW,CAAC,SAAU;oBACjC,iCAAiC,EAC/B,iCAAiC,CAAC,WAAW;oBAC/C,YAAY,EAAE,OAAO;oBACrB,MAAM,EAAE,MAAM,IAAI,SAAS;oBAE3B,kBAAkB,EAAE;;EAE5B,WAAW,CAAC,IAAI;iBACD;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -1,9 +1,95 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
2
|
import Model from "Common/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam";
|
|
3
|
+
import TeamService from "./TeamService";
|
|
4
|
+
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
5
|
+
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
6
|
+
import { Gray500, Red500 } from "../../Types/BrandColors";
|
|
3
7
|
export class Service extends DatabaseService {
|
|
4
8
|
constructor() {
|
|
5
9
|
super(Model);
|
|
6
10
|
}
|
|
11
|
+
async onBeforeDelete(deleteBy) {
|
|
12
|
+
const itemsToDelete = await this.findBy({
|
|
13
|
+
query: deleteBy.query,
|
|
14
|
+
limit: deleteBy.limit,
|
|
15
|
+
skip: deleteBy.skip,
|
|
16
|
+
props: {
|
|
17
|
+
isRoot: true,
|
|
18
|
+
},
|
|
19
|
+
select: {
|
|
20
|
+
scheduledMaintenanceId: true,
|
|
21
|
+
projectId: true,
|
|
22
|
+
teamId: true,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
carryForward: {
|
|
27
|
+
itemsToDelete: itemsToDelete,
|
|
28
|
+
},
|
|
29
|
+
deleteBy: deleteBy,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async onDeleteSuccess(onDelete, _itemIdsBeforeDelete) {
|
|
33
|
+
var _a;
|
|
34
|
+
const deleteByUserId = ((_a = onDelete.deleteBy.deletedByUser) === null || _a === void 0 ? void 0 : _a.id) || onDelete.deleteBy.props.userId;
|
|
35
|
+
const itemsToDelete = onDelete.carryForward.itemsToDelete;
|
|
36
|
+
for (const item of itemsToDelete) {
|
|
37
|
+
const scheduledMaintenanceId = item.scheduledMaintenanceId;
|
|
38
|
+
const projectId = item.projectId;
|
|
39
|
+
const teamId = item.teamId;
|
|
40
|
+
if (scheduledMaintenanceId && teamId && projectId) {
|
|
41
|
+
const team = await TeamService.findOneById({
|
|
42
|
+
id: teamId,
|
|
43
|
+
select: {
|
|
44
|
+
name: true,
|
|
45
|
+
},
|
|
46
|
+
props: {
|
|
47
|
+
isRoot: true,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
if (team && team.name) {
|
|
51
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
52
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
53
|
+
projectId: projectId,
|
|
54
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.OwnerTeamRemoved,
|
|
55
|
+
displayColor: Red500,
|
|
56
|
+
feedInfoInMarkdown: `**Team ${team.name}** was removed from the scheduled maintenance as the owner.`,
|
|
57
|
+
userId: deleteByUserId || undefined,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return onDelete;
|
|
63
|
+
}
|
|
64
|
+
async onCreateSuccess(onCreate, createdItem) {
|
|
65
|
+
// add scheduledMaintenance feed.
|
|
66
|
+
const scheduledMaintenanceId = createdItem.scheduledMaintenanceId;
|
|
67
|
+
const projectId = createdItem.projectId;
|
|
68
|
+
const teamId = createdItem.teamId;
|
|
69
|
+
const createdByUserId = createdItem.createdByUserId || onCreate.createBy.props.userId;
|
|
70
|
+
if (scheduledMaintenanceId && teamId && projectId) {
|
|
71
|
+
const team = await TeamService.findOneById({
|
|
72
|
+
id: teamId,
|
|
73
|
+
select: {
|
|
74
|
+
name: true,
|
|
75
|
+
},
|
|
76
|
+
props: {
|
|
77
|
+
isRoot: true,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
if (team && team.name) {
|
|
81
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
82
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
83
|
+
projectId: projectId,
|
|
84
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.OwnerTeamAdded,
|
|
85
|
+
displayColor: Gray500,
|
|
86
|
+
feedInfoInMarkdown: `**Team ${team.name}** was added to the scheduled maintenance as the owner.`,
|
|
87
|
+
userId: createdByUserId || undefined,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return createdItem;
|
|
92
|
+
}
|
|
7
93
|
}
|
|
8
94
|
export default new Service();
|
|
9
95
|
//# sourceMappingURL=ScheduledMaintenanceOwnerTeamService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledMaintenanceOwnerTeamService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceOwnerTeamService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScheduledMaintenanceOwnerTeamService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceOwnerTeamService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,98 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
2
|
import Model from "Common/Models/DatabaseModels/ScheduledMaintenanceOwnerUser";
|
|
3
|
+
import UserService from "./UserService";
|
|
4
|
+
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
5
|
+
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
6
|
+
import { Gray500, Red500 } from "../../Types/BrandColors";
|
|
3
7
|
export class Service extends DatabaseService {
|
|
4
8
|
constructor() {
|
|
5
9
|
super(Model);
|
|
6
10
|
}
|
|
11
|
+
async onBeforeDelete(deleteBy) {
|
|
12
|
+
const itemsToDelete = await this.findBy({
|
|
13
|
+
query: deleteBy.query,
|
|
14
|
+
limit: deleteBy.limit,
|
|
15
|
+
skip: deleteBy.skip,
|
|
16
|
+
props: {
|
|
17
|
+
isRoot: true,
|
|
18
|
+
},
|
|
19
|
+
select: {
|
|
20
|
+
scheduledMaintenanceId: true,
|
|
21
|
+
projectId: true,
|
|
22
|
+
userId: true,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
carryForward: {
|
|
27
|
+
itemsToDelete: itemsToDelete,
|
|
28
|
+
},
|
|
29
|
+
deleteBy: deleteBy,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async onDeleteSuccess(onDelete, _itemIdsBeforeDelete) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const deleteByUserId = ((_a = onDelete.deleteBy.deletedByUser) === null || _a === void 0 ? void 0 : _a.id) || onDelete.deleteBy.props.userId;
|
|
35
|
+
const itemsToDelete = onDelete.carryForward.itemsToDelete;
|
|
36
|
+
for (const item of itemsToDelete) {
|
|
37
|
+
const scheduledMaintenanceId = item.scheduledMaintenanceId;
|
|
38
|
+
const projectId = item.projectId;
|
|
39
|
+
const userId = item.userId;
|
|
40
|
+
if (scheduledMaintenanceId && userId && projectId) {
|
|
41
|
+
const user = await UserService.findOneById({
|
|
42
|
+
id: userId,
|
|
43
|
+
select: {
|
|
44
|
+
name: true,
|
|
45
|
+
email: true,
|
|
46
|
+
},
|
|
47
|
+
props: {
|
|
48
|
+
isRoot: true,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
if (user && user.name) {
|
|
52
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
53
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
54
|
+
projectId: projectId,
|
|
55
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.OwnerUserRemoved,
|
|
56
|
+
displayColor: Red500,
|
|
57
|
+
feedInfoInMarkdown: `**${user.name.toString()}** (${(_b = user.email) === null || _b === void 0 ? void 0 : _b.toString()}) was removed from the scheduled maintenance as the owner.`,
|
|
58
|
+
userId: deleteByUserId || undefined,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return onDelete;
|
|
64
|
+
}
|
|
65
|
+
async onCreateSuccess(onCreate, createdItem) {
|
|
66
|
+
// add scheduledMaintenance feed.
|
|
67
|
+
var _a;
|
|
68
|
+
const scheduledMaintenanceId = createdItem.scheduledMaintenanceId;
|
|
69
|
+
const projectId = createdItem.projectId;
|
|
70
|
+
const userId = createdItem.userId;
|
|
71
|
+
const createdByUserId = createdItem.createdByUserId || onCreate.createBy.props.userId;
|
|
72
|
+
if (scheduledMaintenanceId && userId && projectId) {
|
|
73
|
+
const user = await UserService.findOneById({
|
|
74
|
+
id: userId,
|
|
75
|
+
select: {
|
|
76
|
+
name: true,
|
|
77
|
+
email: true,
|
|
78
|
+
},
|
|
79
|
+
props: {
|
|
80
|
+
isRoot: true,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
if (user && user.name) {
|
|
84
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
85
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
86
|
+
projectId: projectId,
|
|
87
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.OwnerUserAdded,
|
|
88
|
+
displayColor: Gray500,
|
|
89
|
+
feedInfoInMarkdown: `**${user.name.toString()}** (${(_a = user.email) === null || _a === void 0 ? void 0 : _a.toString()}) was added to the scheduled maintenance as the owner.`,
|
|
90
|
+
userId: createdByUserId || undefined,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return createdItem;
|
|
95
|
+
}
|
|
7
96
|
}
|
|
8
97
|
export default new Service();
|
|
9
98
|
//# sourceMappingURL=ScheduledMaintenanceOwnerUserService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledMaintenanceOwnerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceOwnerUserService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScheduledMaintenanceOwnerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenanceOwnerUserService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
2
|
import OneUptimeDate from "../../Types/Date";
|
|
3
3
|
import Model from "Common/Models/DatabaseModels/ScheduledMaintenancePublicNote";
|
|
4
|
+
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
5
|
+
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
6
|
+
import { Blue500, Indigo500 } from "../../Types/BrandColors";
|
|
7
|
+
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
4
8
|
export class Service extends DatabaseService {
|
|
5
9
|
constructor() {
|
|
6
10
|
super(Model);
|
|
@@ -14,6 +18,58 @@ export class Service extends DatabaseService {
|
|
|
14
18
|
carryForward: null,
|
|
15
19
|
};
|
|
16
20
|
}
|
|
21
|
+
async onCreateSuccess(_onCreate, createdItem) {
|
|
22
|
+
var _a;
|
|
23
|
+
const userId = createdItem.createdByUserId || ((_a = createdItem.createdByUser) === null || _a === void 0 ? void 0 : _a.id);
|
|
24
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
25
|
+
scheduledMaintenanceId: createdItem.scheduledMaintenanceId,
|
|
26
|
+
projectId: createdItem.projectId,
|
|
27
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.PublicNote,
|
|
28
|
+
displayColor: Indigo500,
|
|
29
|
+
userId: userId || undefined,
|
|
30
|
+
feedInfoInMarkdown: `**Posted public note for this scheduled maintenance on status page**
|
|
31
|
+
|
|
32
|
+
${createdItem.note}
|
|
33
|
+
`,
|
|
34
|
+
});
|
|
35
|
+
return createdItem;
|
|
36
|
+
}
|
|
37
|
+
async onUpdateSuccess(onUpdate, _updatedItemIds) {
|
|
38
|
+
if (onUpdate.updateBy.data.note) {
|
|
39
|
+
const updatedItems = await this.findBy({
|
|
40
|
+
query: onUpdate.updateBy.query,
|
|
41
|
+
limit: LIMIT_PER_PROJECT,
|
|
42
|
+
skip: 0,
|
|
43
|
+
props: {
|
|
44
|
+
isRoot: true,
|
|
45
|
+
},
|
|
46
|
+
select: {
|
|
47
|
+
scheduledMaintenanceId: true,
|
|
48
|
+
projectId: true,
|
|
49
|
+
note: true,
|
|
50
|
+
createdByUserId: true,
|
|
51
|
+
createdByUser: {
|
|
52
|
+
_id: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const userId = onUpdate.updateBy.props.userId;
|
|
57
|
+
for (const updatedItem of updatedItems) {
|
|
58
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
59
|
+
scheduledMaintenanceId: updatedItem.scheduledMaintenanceId,
|
|
60
|
+
projectId: updatedItem.projectId,
|
|
61
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.PublicNote,
|
|
62
|
+
displayColor: Blue500,
|
|
63
|
+
userId: userId || undefined,
|
|
64
|
+
feedInfoInMarkdown: `**Updated Public Note**
|
|
65
|
+
|
|
66
|
+
${updatedItem.note}
|
|
67
|
+
`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return onUpdate;
|
|
72
|
+
}
|
|
17
73
|
}
|
|
18
74
|
export default new Service();
|
|
19
75
|
//# sourceMappingURL=ScheduledMaintenancePublicNoteService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledMaintenancePublicNoteService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenancePublicNoteService.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,6DAA6D,CAAC;AAEhF,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEkB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAC1D,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"ScheduledMaintenancePublicNoteService.js","sourceRoot":"","sources":["../../../../Server/Services/ScheduledMaintenancePublicNoteService.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,6DAA6D,CAAC;AAChF,OAAO,+BAA+B,MAAM,mCAAmC,CAAC;AAEhF,OAAO,EAAE,iCAAiC,EAAE,MAAM,sDAAsD,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEkB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAC1D,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,SAA0B,EAC1B,WAAkB;;QAElB,MAAM,MAAM,GACV,WAAW,CAAC,eAAe,KAAI,MAAA,WAAW,CAAC,aAAa,0CAAE,EAAE,CAAA,CAAC;QAE/D,MAAM,+BAA+B,CAAC,8BAA8B,CAAC;YACnE,sBAAsB,EAAE,WAAW,CAAC,sBAAuB;YAC3D,SAAS,EAAE,WAAW,CAAC,SAAU;YACjC,iCAAiC,EAC/B,iCAAiC,CAAC,UAAU;YAC9C,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,kBAAkB,EAAE;;EAExB,WAAW,CAAC,IAAI;aACL;SACR,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,QAAyB,EACzB,eAAgC;QAEhC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,YAAY,GAAiB,MAAM,IAAI,CAAC,MAAM,CAAC;gBACnD,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAC9B,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;gBACD,MAAM,EAAE;oBACN,sBAAsB,EAAE,IAAI;oBAC5B,SAAS,EAAE,IAAI;oBACf,IAAI,EAAE,IAAI;oBACV,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE;wBACb,GAAG,EAAE,IAAI;qBACV;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GACV,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAEjC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,+BAA+B,CAAC,8BAA8B,CAAC;oBACnE,sBAAsB,EAAE,WAAW,CAAC,sBAAuB;oBAC3D,SAAS,EAAE,WAAW,CAAC,SAAU;oBACjC,iCAAiC,EAC/B,iCAAiC,CAAC,UAAU;oBAC9C,YAAY,EAAE,OAAO;oBACrB,MAAM,EAAE,MAAM,IAAI,SAAS;oBAE3B,kBAAkB,EAAE;;EAE5B,WAAW,CAAC,IAAI;eACH;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -32,6 +32,9 @@ import Markdown, { MarkdownContentType } from "Common/Server/Types/Markdown";
|
|
|
32
32
|
import logger from "Common/Server/Utils/Logger";
|
|
33
33
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
34
34
|
import StatusPageEventType from "../../Types/StatusPage/StatusPageEventType";
|
|
35
|
+
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
36
|
+
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
37
|
+
import { Gray500, Red500 } from "../../Types/BrandColors";
|
|
35
38
|
export class Service extends DatabaseService {
|
|
36
39
|
constructor() {
|
|
37
40
|
super(Model);
|
|
@@ -295,6 +298,26 @@ export class Service extends DatabaseService {
|
|
|
295
298
|
}
|
|
296
299
|
async onCreateSuccess(onCreate, createdItem) {
|
|
297
300
|
// create new scheduled maintenance state timeline.
|
|
301
|
+
var _a;
|
|
302
|
+
const createdByUserId = createdItem.createdByUserId || ((_a = createdItem.createdByUser) === null || _a === void 0 ? void 0 : _a.id);
|
|
303
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
304
|
+
scheduledMaintenanceId: createdItem.id,
|
|
305
|
+
projectId: createdItem.projectId,
|
|
306
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.ScheduledMaintenanceCreated,
|
|
307
|
+
displayColor: Red500,
|
|
308
|
+
feedInfoInMarkdown: `**Scheduled Maintenance Created**:
|
|
309
|
+
|
|
310
|
+
**Scheduled Maintenance Title**:
|
|
311
|
+
|
|
312
|
+
${createdItem.title || "No title provided."}
|
|
313
|
+
|
|
314
|
+
**Description**:
|
|
315
|
+
|
|
316
|
+
${createdItem.description || "No description provided."}
|
|
317
|
+
|
|
318
|
+
`,
|
|
319
|
+
userId: createdByUserId || undefined,
|
|
320
|
+
});
|
|
298
321
|
const timeline = new ScheduledMaintenanceStateTimeline();
|
|
299
322
|
timeline.projectId = createdItem.projectId;
|
|
300
323
|
timeline.scheduledMaintenanceId = createdItem.id;
|
|
@@ -445,6 +468,40 @@ export class Service extends DatabaseService {
|
|
|
445
468
|
});
|
|
446
469
|
}
|
|
447
470
|
}
|
|
471
|
+
if (updatedItemIds.length > 0) {
|
|
472
|
+
for (const scheduledMaintenanceId of updatedItemIds) {
|
|
473
|
+
if (onUpdate.updateBy.data.title) {
|
|
474
|
+
// add scheduledMaintenance feed.
|
|
475
|
+
const createdByUserId = onUpdate.updateBy.props.userId;
|
|
476
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
477
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
478
|
+
projectId: onUpdate.updateBy.props.tenantId,
|
|
479
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.ScheduledMaintenanceUpdated,
|
|
480
|
+
displayColor: Gray500,
|
|
481
|
+
feedInfoInMarkdown: `**Scheduled Maintenance title was updated.** Here's the new title.
|
|
482
|
+
|
|
483
|
+
${onUpdate.updateBy.data.title || "No title provided."}
|
|
484
|
+
`,
|
|
485
|
+
userId: createdByUserId || undefined,
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
if (onUpdate.updateBy.data.description) {
|
|
489
|
+
// add scheduledMaintenance feed.
|
|
490
|
+
const createdByUserId = onUpdate.updateBy.props.userId;
|
|
491
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed({
|
|
492
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
493
|
+
projectId: onUpdate.updateBy.props.tenantId,
|
|
494
|
+
scheduledMaintenanceFeedEventType: ScheduledMaintenanceFeedEventType.ScheduledMaintenanceUpdated,
|
|
495
|
+
displayColor: Gray500,
|
|
496
|
+
feedInfoInMarkdown: `**Scheduled Maintenance description was updated.** Here's the new description.
|
|
497
|
+
|
|
498
|
+
${onUpdate.updateBy.data.description || "No description provided."}
|
|
499
|
+
`,
|
|
500
|
+
userId: createdByUserId || undefined,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
448
505
|
return onUpdate;
|
|
449
506
|
}
|
|
450
507
|
async changeScheduledMaintenanceState(data) {
|