@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
|
@@ -150,20 +150,52 @@ export class Service extends DatabaseService<ScheduledMaintenanceStateTimeline>
|
|
|
150
150
|
_id: true,
|
|
151
151
|
color: true,
|
|
152
152
|
name: true,
|
|
153
|
+
isResolvedState: true,
|
|
154
|
+
isOngoingState: true,
|
|
155
|
+
isScheduledState: true,
|
|
153
156
|
},
|
|
154
157
|
});
|
|
155
158
|
|
|
156
159
|
const stateName: string = scheduledMaintenanceState?.name || "";
|
|
157
160
|
|
|
158
|
-
|
|
161
|
+
const scheduledMaintenanceNumber: number | null =
|
|
162
|
+
await ScheduledMaintenanceService.getScheduledMaintenanceNumber({
|
|
163
|
+
scheduledMaintenanceId: createdItem.scheduledMaintenanceId,
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// if resolved state then change emoji to ✅.
|
|
167
|
+
let stateEmoji: string = "➡️";
|
|
168
|
+
|
|
169
|
+
if (scheduledMaintenanceState?.isResolvedState) {
|
|
170
|
+
stateEmoji = "✅";
|
|
171
|
+
} else if (scheduledMaintenanceState?.isOngoingState) {
|
|
172
|
+
// eyes emoji for acknowledged state.
|
|
173
|
+
stateEmoji = "⏳";
|
|
174
|
+
} else if (scheduledMaintenanceState?.isScheduledState) {
|
|
175
|
+
stateEmoji = "🕒";
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const projectId: ObjectID = createdItem.projectId!;
|
|
179
|
+
const scheduledMaintenanceId: ObjectID =
|
|
180
|
+
createdItem.scheduledMaintenanceId!;
|
|
181
|
+
|
|
182
|
+
await ScheduledMaintenanceFeedService.createScheduledMaintenanceFeedItem({
|
|
159
183
|
scheduledMaintenanceId: createdItem.scheduledMaintenanceId!,
|
|
160
184
|
projectId: createdItem.projectId!,
|
|
161
185
|
scheduledMaintenanceFeedEventType:
|
|
162
186
|
ScheduledMaintenanceFeedEventType.ScheduledMaintenanceStateChanged,
|
|
163
187
|
displayColor: scheduledMaintenanceState?.color,
|
|
164
188
|
feedInfoInMarkdown:
|
|
165
|
-
|
|
189
|
+
stateEmoji +
|
|
190
|
+
` Changed **[Scheduled Maintenance ${scheduledMaintenanceNumber}](${(await ScheduledMaintenanceService.getScheduledMaintenanceLinkInDashboard(projectId!, scheduledMaintenanceId!)).toString()}) State** to **` +
|
|
191
|
+
stateName +
|
|
192
|
+
"**",
|
|
166
193
|
userId: createdItem.createdByUserId || onCreate.createBy.props.userId,
|
|
194
|
+
workspaceNotification: {
|
|
195
|
+
sendWorkspaceNotification: true,
|
|
196
|
+
notifyUserId:
|
|
197
|
+
createdItem.createdByUserId || onCreate.createBy.props.userId,
|
|
198
|
+
},
|
|
167
199
|
});
|
|
168
200
|
|
|
169
201
|
// TODO: DELETE THIS WHEN WORKFLOW IS IMPLEMENMTED.
|
|
@@ -800,6 +800,9 @@ export class Service extends DatabaseService<Model> {
|
|
|
800
800
|
subscriberTimezones: true,
|
|
801
801
|
reportDataInDays: true,
|
|
802
802
|
isReportEnabled: true,
|
|
803
|
+
showAnnouncementsOnStatusPage: true,
|
|
804
|
+
showIncidentsOnStatusPage: true,
|
|
805
|
+
showScheduledMaintenanceEventsOnStatusPage: true,
|
|
803
806
|
},
|
|
804
807
|
});
|
|
805
808
|
|
|
@@ -32,6 +32,7 @@ import PositiveNumber from "../../Types/PositiveNumber";
|
|
|
32
32
|
import Project from "Common/Models/DatabaseModels/Project";
|
|
33
33
|
import TeamMember from "Common/Models/DatabaseModels/TeamMember";
|
|
34
34
|
import User from "Common/Models/DatabaseModels/User";
|
|
35
|
+
import ProjectUserService from "./ProjectUserService";
|
|
35
36
|
|
|
36
37
|
export class TeamMemberService extends DatabaseService<TeamMember> {
|
|
37
38
|
public constructor() {
|
|
@@ -190,6 +191,12 @@ export class TeamMemberService extends DatabaseService<TeamMember> {
|
|
|
190
191
|
onCreate.createBy.data.projectId!,
|
|
191
192
|
);
|
|
192
193
|
|
|
194
|
+
ProjectUserService.refreshProjectUsersByProject({
|
|
195
|
+
projectId: onCreate.createBy.data.projectId!,
|
|
196
|
+
}).catch((err: Error) => {
|
|
197
|
+
logger.error(err);
|
|
198
|
+
});
|
|
199
|
+
|
|
193
200
|
return createdItem;
|
|
194
201
|
}
|
|
195
202
|
|
|
@@ -232,6 +239,12 @@ export class TeamMemberService extends DatabaseService<TeamMember> {
|
|
|
232
239
|
item.user?.email as Email,
|
|
233
240
|
);
|
|
234
241
|
}
|
|
242
|
+
|
|
243
|
+
ProjectUserService.refreshProjectUsersByProject({
|
|
244
|
+
projectId: item.projectId!,
|
|
245
|
+
}).catch((err: Error) => {
|
|
246
|
+
logger.error(err);
|
|
247
|
+
});
|
|
235
248
|
}
|
|
236
249
|
|
|
237
250
|
return { updateBy, carryForward: onUpdate.carryForward };
|
|
@@ -304,6 +317,13 @@ export class TeamMemberService extends DatabaseService<TeamMember> {
|
|
|
304
317
|
item.userId!,
|
|
305
318
|
item.projectId!,
|
|
306
319
|
);
|
|
320
|
+
|
|
321
|
+
// refresh project users.
|
|
322
|
+
ProjectUserService.refreshProjectUsersByProject({
|
|
323
|
+
projectId: item.projectId!,
|
|
324
|
+
}).catch((err: Error) => {
|
|
325
|
+
logger.error(err);
|
|
326
|
+
});
|
|
307
327
|
}
|
|
308
328
|
|
|
309
329
|
return onDelete;
|
|
@@ -43,6 +43,11 @@ import Alert from "../../Models/DatabaseModels/Alert";
|
|
|
43
43
|
import AlertService from "./AlertService";
|
|
44
44
|
import AlertSeverity from "../../Models/DatabaseModels/AlertSeverity";
|
|
45
45
|
import AlertSeverityService from "./AlertSeverityService";
|
|
46
|
+
import WorkspaceNotificationRule from "../../Models/DatabaseModels/WorkspaceNotificationRule";
|
|
47
|
+
import WorkspaceNotificationRuleService from "./WorkspaceNotificationRuleService";
|
|
48
|
+
import NotificationRuleEventType from "../../Types/Workspace/NotificationRules/EventType";
|
|
49
|
+
import NotificationRuleWorkspaceChannel from "../../Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel";
|
|
50
|
+
import logger from "../Utils/Logger";
|
|
46
51
|
|
|
47
52
|
export class Service extends DatabaseService<Model> {
|
|
48
53
|
public constructor() {
|
|
@@ -888,6 +893,75 @@ export class Service extends DatabaseService<Model> {
|
|
|
888
893
|
isRoot: true,
|
|
889
894
|
},
|
|
890
895
|
});
|
|
896
|
+
|
|
897
|
+
// Alert workspace here. Invite users to channels for example. If they are not invited.
|
|
898
|
+
|
|
899
|
+
this.runWorkspaceRulesForOnCallNotification({
|
|
900
|
+
projectId: options.projectId,
|
|
901
|
+
alertId: options.triggeredByAlertId,
|
|
902
|
+
incidentId: options.triggeredByIncidentId,
|
|
903
|
+
userId: userId,
|
|
904
|
+
}).catch((error: Error) => {
|
|
905
|
+
logger.error(error);
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
public async runWorkspaceRulesForOnCallNotification(data: {
|
|
910
|
+
projectId: ObjectID;
|
|
911
|
+
incidentId?: ObjectID | undefined;
|
|
912
|
+
alertId?: ObjectID | undefined;
|
|
913
|
+
userId: ObjectID;
|
|
914
|
+
}): Promise<void> {
|
|
915
|
+
// if alert and incidient are both present, then throw an error.
|
|
916
|
+
if (data.incidentId && data.alertId) {
|
|
917
|
+
throw new BadDataException("Either incidentId or alertId is required.");
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
// if none are present, then throw an error.
|
|
921
|
+
|
|
922
|
+
if (!data.incidentId && !data.alertId) {
|
|
923
|
+
throw new BadDataException("Either incidentId or alertId is required.");
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
// get notification rule where inviteOwners is true.
|
|
927
|
+
const notificationRules: Array<WorkspaceNotificationRule> =
|
|
928
|
+
await WorkspaceNotificationRuleService.getNotificationRulesWhereInviteOwnersIsTrue(
|
|
929
|
+
{
|
|
930
|
+
projectId: data.projectId!,
|
|
931
|
+
notificationFor: {
|
|
932
|
+
incidentId: data.incidentId,
|
|
933
|
+
alertId: data.alertId,
|
|
934
|
+
},
|
|
935
|
+
notificationRuleEventType: data.incidentId
|
|
936
|
+
? NotificationRuleEventType.Incident
|
|
937
|
+
: NotificationRuleEventType.Alert,
|
|
938
|
+
},
|
|
939
|
+
);
|
|
940
|
+
|
|
941
|
+
let workspaceChannels: Array<NotificationRuleWorkspaceChannel> = [];
|
|
942
|
+
|
|
943
|
+
if (data.incidentId) {
|
|
944
|
+
workspaceChannels = await IncidentService.getWorkspaceChannelForIncident({
|
|
945
|
+
incidentId: data.incidentId!,
|
|
946
|
+
});
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
if (data.alertId) {
|
|
950
|
+
workspaceChannels = await AlertService.getWorkspaceChannelForAlert({
|
|
951
|
+
alertId: data.alertId!,
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
WorkspaceNotificationRuleService.inviteUsersBasedOnRulesAndWorkspaceChannels(
|
|
956
|
+
{
|
|
957
|
+
notificationRules: notificationRules,
|
|
958
|
+
projectId: data.projectId!,
|
|
959
|
+
workspaceChannels: workspaceChannels,
|
|
960
|
+
userIds: [data.userId],
|
|
961
|
+
},
|
|
962
|
+
).catch((error: Error) => {
|
|
963
|
+
logger.error(error);
|
|
964
|
+
});
|
|
891
965
|
}
|
|
892
966
|
|
|
893
967
|
protected override async onBeforeCreate(
|
|
@@ -266,7 +266,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
266
266
|
id: createdItem.onCallDutyPolicyExecutionLogTimelineId!,
|
|
267
267
|
data: {
|
|
268
268
|
status: OnCallDutyExecutionLogTimelineStatus.NotificationSent,
|
|
269
|
-
statusMessage: "
|
|
269
|
+
statusMessage: "Alert Sent",
|
|
270
270
|
},
|
|
271
271
|
props: {
|
|
272
272
|
isRoot: true,
|
|
@@ -39,6 +39,41 @@ export class Service extends DatabaseService<Model> {
|
|
|
39
39
|
super(Model);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
public async getUserMarkdownString(data: {
|
|
43
|
+
userId: ObjectID;
|
|
44
|
+
projectId: ObjectID;
|
|
45
|
+
}): Promise<string> {
|
|
46
|
+
const user: Model | null = await this.findOneBy({
|
|
47
|
+
query: {
|
|
48
|
+
_id: data.userId,
|
|
49
|
+
},
|
|
50
|
+
select: {
|
|
51
|
+
name: true,
|
|
52
|
+
email: true,
|
|
53
|
+
},
|
|
54
|
+
props: {
|
|
55
|
+
isRoot: true,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (!user) {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return `[${user.name?.toString() || user.email?.toString() || "User"}](${(await this.getUserLinkInDashboard(data.projectId, data.userId)).toString()})`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public async getUserLinkInDashboard(
|
|
67
|
+
projectId: ObjectID,
|
|
68
|
+
userId: ObjectID,
|
|
69
|
+
): Promise<URL> {
|
|
70
|
+
const dashboardUrl: URL = await DatabaseConfig.getDashboardUrl();
|
|
71
|
+
|
|
72
|
+
return URL.fromString(dashboardUrl.toString()).addRoute(
|
|
73
|
+
`/${projectId.toString()}/settings/users/${userId.toString()}`,
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
42
77
|
protected override async onCreateSuccess(
|
|
43
78
|
_onCreate: OnCreate<Model>,
|
|
44
79
|
createdItem: Model,
|