@oneuptime/common 7.0.3718 → 7.0.3815
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/Alert.ts +3 -2
- package/Models/DatabaseModels/Incident.ts +3 -2
- package/Models/DatabaseModels/Index.ts +3 -0
- package/Models/DatabaseModels/ProjectUser.ts +335 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +3 -2
- package/Server/API/SlackAPI.ts +127 -91
- package/Server/Infrastructure/Postgres/SchemaMigrations/1740597525803-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1740598793630-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1741031019972-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1741209339971-MigrationName.ts +101 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Middleware/SlackAuthorization.ts +11 -2
- package/Server/Services/AccessTokenService.ts +21 -0
- package/Server/Services/AlertFeedService.ts +100 -2
- package/Server/Services/AlertInternalNoteService.ts +51 -10
- package/Server/Services/AlertOwnerTeamService.ts +52 -4
- package/Server/Services/AlertOwnerUserService.ts +54 -4
- package/Server/Services/AlertService.ts +295 -54
- package/Server/Services/AlertStateService.ts +24 -0
- package/Server/Services/AlertStateTimelineService.ts +38 -20
- package/Server/Services/IncidentFeedService.ts +101 -2
- package/Server/Services/IncidentInternalNoteService.ts +47 -4
- package/Server/Services/IncidentOwnerTeamService.ts +57 -4
- package/Server/Services/IncidentOwnerUserService.ts +59 -15
- package/Server/Services/IncidentPublicNoteService.ts +47 -7
- package/Server/Services/IncidentService.ts +279 -193
- package/Server/Services/IncidentStateService.ts +25 -0
- package/Server/Services/IncidentStateTimelineService.ts +38 -19
- package/Server/Services/MonitorStatusTimelineService.ts +7 -17
- package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +2 -0
- package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +74 -7
- package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +63 -4
- package/Server/Services/OnCallDutyPolicyService.ts +13 -0
- package/Server/Services/ProjectUserService.ts +130 -0
- package/Server/Services/ScheduledMaintenanceFeedService.ts +105 -2
- package/Server/Services/ScheduledMaintenanceInternalNoteService.ts +61 -15
- package/Server/Services/ScheduledMaintenanceOwnerTeamService.ts +59 -18
- package/Server/Services/ScheduledMaintenanceOwnerUserService.ts +62 -30
- package/Server/Services/ScheduledMaintenancePublicNoteService.ts +59 -15
- package/Server/Services/ScheduledMaintenanceService.ts +390 -21
- package/Server/Services/ScheduledMaintenanceStateService.ts +122 -34
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +34 -2
- package/Server/Services/StatusPageSubscriberService.ts +3 -0
- package/Server/Services/TeamMemberService.ts +20 -0
- package/Server/Services/UserNotificationRuleService.ts +74 -0
- package/Server/Services/UserOnCallLogService.ts +1 -1
- package/Server/Services/UserService.ts +35 -0
- package/Server/Services/WorkspaceNotificationRuleService.ts +520 -149
- package/Server/Services/WorkspaceUserAuthTokenService.ts +23 -0
- package/Server/Utils/Express.ts +1 -1
- package/Server/Utils/StartServer.ts +6 -1
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +38 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.ts +116 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.ts +116 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.ts +108 -0
- package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +38 -0
- package/Server/Utils/Workspace/Slack/Actions/Alert.ts +697 -0
- package/Server/Utils/Workspace/Slack/Actions/Auth.ts +273 -0
- package/Server/Utils/Workspace/Slack/Actions/Incident.ts +1123 -0
- package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +956 -0
- package/Server/Utils/Workspace/Slack/Messages/Alert.ts +116 -0
- package/Server/Utils/Workspace/Slack/Messages/Incident.ts +116 -0
- package/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.ts +108 -0
- package/Server/Utils/Workspace/Slack/Slack.ts +601 -18
- package/Server/Utils/Workspace/Slack/app-manifest.json +19 -11
- package/Server/Utils/Workspace/Workspace.ts +194 -1
- package/Server/Utils/Workspace/WorkspaceBase.ts +159 -19
- package/Server/Utils/Workspace/WorkspaceMessages/Alert.ts +69 -0
- package/Server/Utils/Workspace/WorkspaceMessages/Incident.ts +68 -0
- package/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.ts +73 -0
- package/Types/Date.ts +5 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +2 -1
- package/Types/Workspace/NotificationRules/NotificationRuleUtil.ts +251 -121
- package/Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel.ts +6 -0
- package/Types/Workspace/WorkspaceMessagePayload.ts +80 -2
- package/UI/Components/ComingSoon/ComingSoon.tsx +13 -3
- package/UI/Components/Forms/Fields/FormField.tsx +2 -2
- package/UI/Components/Icon/Icon.tsx +39 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +16 -0
- package/UI/Components/Radio/Radio.tsx +11 -2
- package/UI/Components/Table/TableCard.tsx +2 -2
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectUser.js +340 -0
- package/build/dist/Models/DatabaseModels/ProjectUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +93 -79
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1740597525803-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1740597525803-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1740598793630-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1740598793630-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1741031019972-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1741031019972-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1741209339971-MigrationName.js +42 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1741209339971-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/SlackAuthorization.js +8 -2
- package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AccessTokenService.js +11 -0
- package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
- package/build/dist/Server/Services/AlertFeedService.js +62 -2
- package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
- package/build/dist/Server/Services/AlertInternalNoteService.js +41 -10
- package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerTeamService.js +42 -4
- package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerUserService.js +43 -5
- package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +233 -51
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AlertStateService.js +13 -0
- package/build/dist/Server/Services/AlertStateService.js.map +1 -1
- package/build/dist/Server/Services/AlertStateTimelineService.js +32 -18
- package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentFeedService.js +62 -2
- package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
- package/build/dist/Server/Services/IncidentInternalNoteService.js +35 -4
- package/build/dist/Server/Services/IncidentInternalNoteService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerTeamService.js +42 -4
- package/build/dist/Server/Services/IncidentOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerUserService.js +43 -15
- package/build/dist/Server/Services/IncidentOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js +36 -7
- package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +221 -170
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateService.js +14 -0
- package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +31 -17
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +5 -15
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +62 -7
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +51 -5
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +6 -0
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/ProjectUserService.js +106 -0
- package/build/dist/Server/Services/ProjectUserService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js +62 -2
- package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js +38 -8
- package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerTeamService.js +28 -4
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerUserService.js +30 -16
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +38 -9
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +279 -14
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateService.js +52 -4
- package/build/dist/Server/Services/ScheduledMaintenanceStateService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +29 -2
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +3 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +17 -0
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +52 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallLogService.js +1 -1
- package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +23 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +316 -84
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceUserAuthTokenService.js +18 -0
- package/build/dist/Server/Services/WorkspaceUserAuthTokenService.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +4 -0
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +37 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.js +82 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.js +82 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.js +74 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +37 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +425 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js +169 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +730 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +599 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/Alert.js +82 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/Alert.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/Incident.js +82 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/Incident.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.js +74 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +431 -14
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/app-manifest.json +19 -11
- package/build/dist/Server/Utils/Workspace/Workspace.js +126 -0
- package/build/dist/Server/Utils/Workspace/Workspace.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceBase.js +77 -11
- package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js +48 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Incident.js +47 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Incident.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.js +47 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.js.map +1 -0
- package/build/dist/Types/Date.js +4 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +2 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleUtil.js +214 -120
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleUtil.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel.js +2 -0
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel.js.map +1 -0
- package/build/dist/UI/Components/ComingSoon/ComingSoon.js +3 -2
- package/build/dist/UI/Components/ComingSoon/ComingSoon.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +2 -2
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +19 -2
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +11 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Radio/Radio.js +5 -2
- package/build/dist/UI/Components/Radio/Radio.js.map +1 -1
- package/build/dist/UI/Components/Table/TableCard.js +2 -2
- package/build/dist/UI/Components/Table/TableCard.js.map +1 -1
- package/package.json +3 -2
- package/Server/Utils/Workspace/Slack/app-manifest.example.json +0 -198
|
@@ -6,12 +6,34 @@ import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
|
6
6
|
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
7
7
|
import { Blue500 } from "../../Types/BrandColors";
|
|
8
8
|
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
9
|
+
import ScheduledMaintenance from "../../Models/DatabaseModels/ScheduledMaintenance";
|
|
10
|
+
import ScheduledMaintenanceService from "./ScheduledMaintenanceService";
|
|
9
11
|
|
|
10
12
|
export class Service extends DatabaseService<Model> {
|
|
11
13
|
public constructor() {
|
|
12
14
|
super(Model);
|
|
13
15
|
}
|
|
14
16
|
|
|
17
|
+
public async addNote(data: {
|
|
18
|
+
userId: ObjectID;
|
|
19
|
+
scheduledMaintenanceId: ObjectID;
|
|
20
|
+
projectId: ObjectID;
|
|
21
|
+
note: string;
|
|
22
|
+
}): Promise<Model> {
|
|
23
|
+
const internalNote: Model = new Model();
|
|
24
|
+
internalNote.createdByUserId = data.userId;
|
|
25
|
+
internalNote.scheduledMaintenanceId = data.scheduledMaintenanceId;
|
|
26
|
+
internalNote.projectId = data.projectId;
|
|
27
|
+
internalNote.note = data.note;
|
|
28
|
+
|
|
29
|
+
return this.create({
|
|
30
|
+
data: internalNote,
|
|
31
|
+
props: {
|
|
32
|
+
isRoot: true,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
15
37
|
public override async onCreateSuccess(
|
|
16
38
|
_onCreate: OnCreate<Model>,
|
|
17
39
|
createdItem: Model,
|
|
@@ -19,7 +41,15 @@ export class Service extends DatabaseService<Model> {
|
|
|
19
41
|
const userId: ObjectID | null | undefined =
|
|
20
42
|
createdItem.createdByUserId || createdItem.createdByUser?.id;
|
|
21
43
|
|
|
22
|
-
|
|
44
|
+
const scheduledMaintenanceId: ObjectID =
|
|
45
|
+
createdItem.scheduledMaintenanceId!;
|
|
46
|
+
|
|
47
|
+
const scheduledMaintenanceNumber: number | null =
|
|
48
|
+
await ScheduledMaintenanceService.getScheduledMaintenanceNumber({
|
|
49
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem({
|
|
23
53
|
scheduledMaintenanceId: createdItem.scheduledMaintenanceId!,
|
|
24
54
|
projectId: createdItem.projectId!,
|
|
25
55
|
scheduledMaintenanceFeedEventType:
|
|
@@ -27,10 +57,14 @@ export class Service extends DatabaseService<Model> {
|
|
|
27
57
|
displayColor: Blue500,
|
|
28
58
|
userId: userId || undefined,
|
|
29
59
|
|
|
30
|
-
feedInfoInMarkdown:
|
|
31
|
-
|
|
60
|
+
feedInfoInMarkdown: `📄 posted **private note** for this [Scheduled Maintenance ${scheduledMaintenanceNumber}](${(await ScheduledMaintenanceService.getScheduledMaintenanceLinkInDashboard(createdItem.projectId!, scheduledMaintenanceId)).toString()}):
|
|
61
|
+
|
|
32
62
|
${createdItem.note}
|
|
33
|
-
|
|
63
|
+
`,
|
|
64
|
+
workspaceNotification: {
|
|
65
|
+
sendWorkspaceNotification: true,
|
|
66
|
+
notifyUserId: userId || undefined,
|
|
67
|
+
},
|
|
34
68
|
});
|
|
35
69
|
|
|
36
70
|
return createdItem;
|
|
@@ -56,6 +90,9 @@ ${createdItem.note}
|
|
|
56
90
|
createdByUser: {
|
|
57
91
|
_id: true,
|
|
58
92
|
},
|
|
93
|
+
scheduledMaintenance: {
|
|
94
|
+
scheduledMaintenanceNumber: true,
|
|
95
|
+
},
|
|
59
96
|
},
|
|
60
97
|
});
|
|
61
98
|
|
|
@@ -63,19 +100,28 @@ ${createdItem.note}
|
|
|
63
100
|
onUpdate.updateBy.props.userId;
|
|
64
101
|
|
|
65
102
|
for (const updatedItem of updatedItems) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
projectId: updatedItem.projectId!,
|
|
69
|
-
scheduledMaintenanceFeedEventType:
|
|
70
|
-
ScheduledMaintenanceFeedEventType.PrivateNote,
|
|
71
|
-
displayColor: Blue500,
|
|
72
|
-
userId: userId || undefined,
|
|
103
|
+
const scheduledMaintenance: ScheduledMaintenance =
|
|
104
|
+
updatedItem.scheduledMaintenance!;
|
|
73
105
|
|
|
74
|
-
|
|
75
|
-
|
|
106
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem(
|
|
107
|
+
{
|
|
108
|
+
scheduledMaintenanceId: updatedItem.scheduledMaintenanceId!,
|
|
109
|
+
projectId: updatedItem.projectId!,
|
|
110
|
+
scheduledMaintenanceFeedEventType:
|
|
111
|
+
ScheduledMaintenanceFeedEventType.PrivateNote,
|
|
112
|
+
displayColor: Blue500,
|
|
113
|
+
userId: userId || undefined,
|
|
114
|
+
|
|
115
|
+
feedInfoInMarkdown: `📄 updated **Private Note** for this [Scheduled Maintenance ${scheduledMaintenance.scheduledMaintenanceNumber}](${(await ScheduledMaintenanceService.getScheduledMaintenanceLinkInDashboard(scheduledMaintenance.projectId!, scheduledMaintenance.id!)).toString()})
|
|
116
|
+
|
|
76
117
|
${updatedItem.note}
|
|
77
|
-
|
|
78
|
-
|
|
118
|
+
`,
|
|
119
|
+
workspaceNotification: {
|
|
120
|
+
sendWorkspaceNotification: true,
|
|
121
|
+
notifyUserId: userId || undefined,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
);
|
|
79
125
|
}
|
|
80
126
|
}
|
|
81
127
|
return onUpdate;
|
|
@@ -8,6 +8,11 @@ import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/S
|
|
|
8
8
|
import { Gray500, Red500 } from "../../Types/BrandColors";
|
|
9
9
|
import { OnCreate, OnDelete } from "../Types/Database/Hooks";
|
|
10
10
|
import DeleteBy from "../Types/Database/DeleteBy";
|
|
11
|
+
import NotificationRuleEventType from "../../Types/Workspace/NotificationRules/EventType";
|
|
12
|
+
import WorkspaceNotificationRuleService from "./WorkspaceNotificationRuleService";
|
|
13
|
+
import WorkspaceNotificationRule from "../../Models/DatabaseModels/WorkspaceNotificationRule";
|
|
14
|
+
import logger from "../Utils/Logger";
|
|
15
|
+
import ScheduledMaintenanceService from "./ScheduledMaintenanceService";
|
|
11
16
|
|
|
12
17
|
export class Service extends DatabaseService<Model> {
|
|
13
18
|
public constructor() {
|
|
@@ -66,15 +71,17 @@ export class Service extends DatabaseService<Model> {
|
|
|
66
71
|
});
|
|
67
72
|
|
|
68
73
|
if (team && team.name) {
|
|
69
|
-
await ScheduledMaintenanceFeedService.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem(
|
|
75
|
+
{
|
|
76
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
77
|
+
projectId: projectId,
|
|
78
|
+
scheduledMaintenanceFeedEventType:
|
|
79
|
+
ScheduledMaintenanceFeedEventType.OwnerTeamRemoved,
|
|
80
|
+
displayColor: Red500,
|
|
81
|
+
feedInfoInMarkdown: `Removed team **${team.name}** from the scheduled maintenance as the owner.`,
|
|
82
|
+
userId: deleteByUserId || undefined,
|
|
83
|
+
},
|
|
84
|
+
);
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
}
|
|
@@ -107,18 +114,52 @@ export class Service extends DatabaseService<Model> {
|
|
|
107
114
|
});
|
|
108
115
|
|
|
109
116
|
if (team && team.name) {
|
|
110
|
-
await ScheduledMaintenanceFeedService.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem(
|
|
118
|
+
{
|
|
119
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
120
|
+
projectId: projectId,
|
|
121
|
+
scheduledMaintenanceFeedEventType:
|
|
122
|
+
ScheduledMaintenanceFeedEventType.OwnerTeamAdded,
|
|
123
|
+
displayColor: Gray500,
|
|
124
|
+
feedInfoInMarkdown: `Added team **${team.name}** to the scheduled maintenance as the owner.`,
|
|
125
|
+
userId: createdByUserId || undefined,
|
|
126
|
+
},
|
|
127
|
+
);
|
|
119
128
|
}
|
|
120
129
|
}
|
|
121
130
|
|
|
131
|
+
// get notification rule where inviteOwners is true.
|
|
132
|
+
const notificationRules: Array<WorkspaceNotificationRule> =
|
|
133
|
+
await WorkspaceNotificationRuleService.getNotificationRulesWhereInviteOwnersIsTrue(
|
|
134
|
+
{
|
|
135
|
+
projectId: projectId!,
|
|
136
|
+
notificationFor: {
|
|
137
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
138
|
+
},
|
|
139
|
+
notificationRuleEventType:
|
|
140
|
+
NotificationRuleEventType.ScheduledMaintenance,
|
|
141
|
+
},
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
logger.debug(`Notification Rules for ScheduledMaintenance Owner Teams`);
|
|
145
|
+
logger.debug(notificationRules);
|
|
146
|
+
|
|
147
|
+
WorkspaceNotificationRuleService.inviteTeamsBasedOnRulesAndWorkspaceChannels(
|
|
148
|
+
{
|
|
149
|
+
notificationRules: notificationRules,
|
|
150
|
+
projectId: projectId!,
|
|
151
|
+
workspaceChannels:
|
|
152
|
+
await ScheduledMaintenanceService.getWorkspaceChannelForScheduledMaintenance(
|
|
153
|
+
{
|
|
154
|
+
scheduledMaintenanceId: scheduledMaintenanceId!,
|
|
155
|
+
},
|
|
156
|
+
),
|
|
157
|
+
teamIds: [teamId!],
|
|
158
|
+
},
|
|
159
|
+
).catch((error: Error) => {
|
|
160
|
+
logger.error(error);
|
|
161
|
+
});
|
|
162
|
+
|
|
122
163
|
return createdItem;
|
|
123
164
|
}
|
|
124
165
|
}
|
|
@@ -8,6 +8,11 @@ import UserService from "./UserService";
|
|
|
8
8
|
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
9
9
|
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
10
10
|
import { Gray500, Red500 } from "../../Types/BrandColors";
|
|
11
|
+
import WorkspaceNotificationRule from "../../Models/DatabaseModels/WorkspaceNotificationRule";
|
|
12
|
+
import WorkspaceNotificationRuleService from "./WorkspaceNotificationRuleService";
|
|
13
|
+
import NotificationRuleEventType from "../../Types/Workspace/NotificationRules/EventType";
|
|
14
|
+
import ScheduledMaintenanceService from "./ScheduledMaintenanceService";
|
|
15
|
+
import logger from "../Utils/Logger";
|
|
11
16
|
|
|
12
17
|
export class Service extends DatabaseService<Model> {
|
|
13
18
|
public constructor() {
|
|
@@ -67,15 +72,17 @@ export class Service extends DatabaseService<Model> {
|
|
|
67
72
|
});
|
|
68
73
|
|
|
69
74
|
if (user && user.name) {
|
|
70
|
-
await ScheduledMaintenanceFeedService.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem(
|
|
76
|
+
{
|
|
77
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
78
|
+
projectId: projectId,
|
|
79
|
+
scheduledMaintenanceFeedEventType:
|
|
80
|
+
ScheduledMaintenanceFeedEventType.OwnerUserRemoved,
|
|
81
|
+
displayColor: Red500,
|
|
82
|
+
feedInfoInMarkdown: `Removed **${user.name.toString()}** (${user.email?.toString()}) from the scheduled maintenance as the owner.`,
|
|
83
|
+
userId: deleteByUserId || undefined,
|
|
84
|
+
},
|
|
85
|
+
);
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
88
|
}
|
|
@@ -97,30 +104,55 @@ export class Service extends DatabaseService<Model> {
|
|
|
97
104
|
createdItem.createdByUserId || onCreate.createBy.props.userId;
|
|
98
105
|
|
|
99
106
|
if (scheduledMaintenanceId && userId && projectId) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
displayColor: Gray500,
|
|
118
|
-
feedInfoInMarkdown: `**${user.name.toString()}** (${user.email?.toString()}) was added to the scheduled maintenance as the owner.`,
|
|
119
|
-
userId: createdByUserId || undefined,
|
|
120
|
-
});
|
|
107
|
+
if (userId) {
|
|
108
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem(
|
|
109
|
+
{
|
|
110
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
111
|
+
projectId: projectId,
|
|
112
|
+
scheduledMaintenanceFeedEventType:
|
|
113
|
+
ScheduledMaintenanceFeedEventType.OwnerUserAdded,
|
|
114
|
+
displayColor: Gray500,
|
|
115
|
+
feedInfoInMarkdown: `Added **${await UserService.getUserMarkdownString(
|
|
116
|
+
{
|
|
117
|
+
userId: userId,
|
|
118
|
+
projectId: projectId,
|
|
119
|
+
},
|
|
120
|
+
)}** to the scheduled maintenance as the owner.`,
|
|
121
|
+
userId: createdByUserId || undefined,
|
|
122
|
+
},
|
|
123
|
+
);
|
|
121
124
|
}
|
|
122
125
|
}
|
|
123
126
|
|
|
127
|
+
// get notification rule where inviteOwners is true.
|
|
128
|
+
const notificationRules: Array<WorkspaceNotificationRule> =
|
|
129
|
+
await WorkspaceNotificationRuleService.getNotificationRulesWhereInviteOwnersIsTrue(
|
|
130
|
+
{
|
|
131
|
+
projectId: projectId!,
|
|
132
|
+
notificationFor: {
|
|
133
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
134
|
+
},
|
|
135
|
+
notificationRuleEventType:
|
|
136
|
+
NotificationRuleEventType.ScheduledMaintenance,
|
|
137
|
+
},
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
WorkspaceNotificationRuleService.inviteUsersBasedOnRulesAndWorkspaceChannels(
|
|
141
|
+
{
|
|
142
|
+
notificationRules: notificationRules,
|
|
143
|
+
projectId: projectId!,
|
|
144
|
+
workspaceChannels:
|
|
145
|
+
await ScheduledMaintenanceService.getWorkspaceChannelForScheduledMaintenance(
|
|
146
|
+
{
|
|
147
|
+
scheduledMaintenanceId: scheduledMaintenanceId!,
|
|
148
|
+
},
|
|
149
|
+
),
|
|
150
|
+
userIds: [userId!],
|
|
151
|
+
},
|
|
152
|
+
).catch((error: Error) => {
|
|
153
|
+
logger.error(error);
|
|
154
|
+
});
|
|
155
|
+
|
|
124
156
|
return createdItem;
|
|
125
157
|
}
|
|
126
158
|
}
|
|
@@ -8,6 +8,8 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
8
8
|
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
9
9
|
import { Blue500, Indigo500 } from "../../Types/BrandColors";
|
|
10
10
|
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
11
|
+
import ScheduledMaintenanceService from "./ScheduledMaintenanceService";
|
|
12
|
+
import ScheduledMaintenance from "../../Models/DatabaseModels/ScheduledMaintenance";
|
|
11
13
|
|
|
12
14
|
export class Service extends DatabaseService<Model> {
|
|
13
15
|
public constructor() {
|
|
@@ -34,17 +36,29 @@ export class Service extends DatabaseService<Model> {
|
|
|
34
36
|
const userId: ObjectID | null | undefined =
|
|
35
37
|
createdItem.createdByUserId || createdItem.createdByUser?.id;
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
const scheduledMaintenanceId: ObjectID =
|
|
40
|
+
createdItem.scheduledMaintenanceId!;
|
|
41
|
+
const projectId: ObjectID = createdItem.projectId!;
|
|
42
|
+
const scheduledMaintenanceNumber: number | null =
|
|
43
|
+
await ScheduledMaintenanceService.getScheduledMaintenanceNumber({
|
|
44
|
+
scheduledMaintenanceId: scheduledMaintenanceId,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem({
|
|
38
48
|
scheduledMaintenanceId: createdItem.scheduledMaintenanceId!,
|
|
39
49
|
projectId: createdItem.projectId!,
|
|
40
50
|
scheduledMaintenanceFeedEventType:
|
|
41
51
|
ScheduledMaintenanceFeedEventType.PublicNote,
|
|
42
52
|
displayColor: Indigo500,
|
|
43
53
|
userId: userId || undefined,
|
|
44
|
-
feedInfoInMarkdown:
|
|
45
|
-
|
|
54
|
+
feedInfoInMarkdown: `📄 posted **public note** for this [Scheduled Maintenance ${scheduledMaintenanceNumber}](${(await ScheduledMaintenanceService.getScheduledMaintenanceLinkInDashboard(projectId!, scheduledMaintenanceId!)).toString()}) on status page:
|
|
55
|
+
|
|
46
56
|
${createdItem.note}
|
|
47
|
-
|
|
57
|
+
`,
|
|
58
|
+
workspaceNotification: {
|
|
59
|
+
sendWorkspaceNotification: true,
|
|
60
|
+
notifyUserId: userId || undefined,
|
|
61
|
+
},
|
|
48
62
|
});
|
|
49
63
|
|
|
50
64
|
return createdItem;
|
|
@@ -77,23 +91,53 @@ ${createdItem.note}
|
|
|
77
91
|
onUpdate.updateBy.props.userId;
|
|
78
92
|
|
|
79
93
|
for (const updatedItem of updatedItems) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
projectId: updatedItem.projectId!,
|
|
83
|
-
scheduledMaintenanceFeedEventType:
|
|
84
|
-
ScheduledMaintenanceFeedEventType.PublicNote,
|
|
85
|
-
displayColor: Blue500,
|
|
86
|
-
userId: userId || undefined,
|
|
94
|
+
const scheduledMaintenance: ScheduledMaintenance =
|
|
95
|
+
updatedItem.scheduledMaintenance!;
|
|
87
96
|
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem(
|
|
98
|
+
{
|
|
99
|
+
scheduledMaintenanceId: updatedItem.scheduledMaintenanceId!,
|
|
100
|
+
projectId: updatedItem.projectId!,
|
|
101
|
+
scheduledMaintenanceFeedEventType:
|
|
102
|
+
ScheduledMaintenanceFeedEventType.PrivateNote,
|
|
103
|
+
displayColor: Blue500,
|
|
104
|
+
userId: userId || undefined,
|
|
105
|
+
|
|
106
|
+
feedInfoInMarkdown: `📄 updated **Public Note** for this [Scheduled Maintenance ${scheduledMaintenance.scheduledMaintenanceNumber}](${(await ScheduledMaintenanceService.getScheduledMaintenanceLinkInDashboard(scheduledMaintenance.projectId!, scheduledMaintenance.id!)).toString()})
|
|
107
|
+
|
|
90
108
|
${updatedItem.note}
|
|
91
|
-
|
|
92
|
-
|
|
109
|
+
`,
|
|
110
|
+
workspaceNotification: {
|
|
111
|
+
sendWorkspaceNotification: true,
|
|
112
|
+
notifyUserId: userId || undefined,
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
);
|
|
93
116
|
}
|
|
94
117
|
}
|
|
95
118
|
return onUpdate;
|
|
96
119
|
}
|
|
120
|
+
|
|
121
|
+
public async addNote(data: {
|
|
122
|
+
userId: ObjectID;
|
|
123
|
+
scheduledMaintenanceId: ObjectID;
|
|
124
|
+
projectId: ObjectID;
|
|
125
|
+
note: string;
|
|
126
|
+
}): Promise<Model> {
|
|
127
|
+
const publicNote: Model = new Model();
|
|
128
|
+
publicNote.createdByUserId = data.userId;
|
|
129
|
+
publicNote.scheduledMaintenanceId = data.scheduledMaintenanceId;
|
|
130
|
+
publicNote.projectId = data.projectId;
|
|
131
|
+
publicNote.note = data.note;
|
|
132
|
+
publicNote.postedAt = OneUptimeDate.getCurrentDate();
|
|
133
|
+
|
|
134
|
+
return this.create({
|
|
135
|
+
data: publicNote,
|
|
136
|
+
props: {
|
|
137
|
+
isRoot: true,
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
}
|
|
97
141
|
}
|
|
98
142
|
|
|
99
143
|
export default new Service();
|