Added Aircraft log to mission

This commit is contained in:
PxlLoewe
2025-05-20 14:15:24 -07:00
parent 1696c79122
commit df4cff827e
13 changed files with 354 additions and 84 deletions

View File

@@ -1,4 +1,10 @@
import { prisma } from "@repo/db";
import {
ConnectedAircraft,
getPublicUser,
MissionLog,
Prisma,
prisma,
} from "@repo/db";
import { Router } from "express";
import { io } from "../index";
@@ -39,11 +45,58 @@ router.get("/:id", async (req, res) => {
// Update a connectedAircraft by ID
router.patch("/:id", async (req, res) => {
const { id } = req.params;
const aircraftUpdate = req.body as Prisma.ConnectedAircraftUpdateInput;
try {
const oldConnectedAircraft = await prisma.connectedAircraft.findUnique({
where: { id: Number(id) },
include: {
Station: true,
User: true,
},
});
const updatedConnectedAircraft = await prisma.connectedAircraft.update({
where: { id: Number(id) },
data: req.body,
data: {
...aircraftUpdate,
},
});
const mission = await prisma.mission.findFirst({
where: {
state: "running",
missionStationIds: {
has: updatedConnectedAircraft.stationId,
},
},
});
if (
mission &&
aircraftUpdate.fmsStatus &&
oldConnectedAircraft &&
updatedConnectedAircraft &&
oldConnectedAircraft.fmsStatus !== updatedConnectedAircraft.fmsStatus
) {
const newMissionLog = mission.missionLog as any as MissionLog[];
newMissionLog.push({
type: "station-log",
auto: true,
data: {
oldFMSstatus: oldConnectedAircraft.fmsStatus,
newFMSstatus: updatedConnectedAircraft.fmsStatus,
station: oldConnectedAircraft.Station,
stationId: updatedConnectedAircraft.stationId,
user: getPublicUser(oldConnectedAircraft.User),
},
timeStamp: new Date().toISOString(),
});
await prisma.mission.update({
where: { id: mission.id },
data: {
missionLog: newMissionLog as any,
},
});
}
io.to("dispatchers").emit(
"update-connectedAircraft",
updatedConnectedAircraft,