diff --git a/apps/dispatch-server/routes/mission.ts b/apps/dispatch-server/routes/mission.ts index 3c6f906c..ff9705f1 100644 --- a/apps/dispatch-server/routes/mission.ts +++ b/apps/dispatch-server/routes/mission.ts @@ -87,6 +87,20 @@ router.patch("/:id", async (req, res) => { data: req.body, }); io.to("dispatchers").emit("update-mission", { updatedMission }); + if (req.body.state === "finished") { + updatedMission.missionStationUserIds?.forEach((userId) => { + io.to(`user:${userId}`).emit("notification", { + type: "mission-closed", + status: "closed", + message: `Einsatz ${updatedMission.publicId} wurde beendet`, + data: { + missionId: updatedMission.id, + publicMissionId: updatedMission.publicId, + }, + } as NotificationPayload); + }); + } + res.json(updatedMission); } catch (error) { console.error(error); diff --git a/packages/database/prisma/json/SocketEvents.ts b/packages/database/prisma/json/SocketEvents.ts index 8aa1672e..1fe7dfe7 100644 --- a/packages/database/prisma/json/SocketEvents.ts +++ b/packages/database/prisma/json/SocketEvents.ts @@ -50,9 +50,20 @@ export type MissionAutoClose = { }; }; +export type MissionClosed = { + type: "mission-closed"; + status: "closed"; + message: string; + data: { + missionId: number; + publicMissionId: string; + }; +}; + export type NotificationPayload = | ValidationFailed | ValidationSuccess | AdminMessage | StationStatus - | MissionAutoClose; + | MissionAutoClose + | MissionClosed;