Fixed Automatische alarmierung nach validierung #45
This commit is contained in:
@@ -9,7 +9,7 @@ export const sendAlert = async (
|
||||
}: {
|
||||
stationId?: number;
|
||||
},
|
||||
user: User,
|
||||
user: User | "HPG",
|
||||
): Promise<{
|
||||
connectedAircrafts: ConnectedAircraft[];
|
||||
mission: Mission;
|
||||
@@ -89,7 +89,21 @@ export const sendAlert = async (
|
||||
.catch((err) => {
|
||||
// Ignore if the entry already exists
|
||||
});
|
||||
|
||||
if (user === "HPG") {
|
||||
await prisma.mission.update({
|
||||
where: { id: Number(id) },
|
||||
data: {
|
||||
state: "running",
|
||||
missionLog: {
|
||||
push: {
|
||||
type: "alert-log",
|
||||
auto: true,
|
||||
timeStamp: new Date().toISOString(),
|
||||
} as any,
|
||||
},
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await prisma.mission.update({
|
||||
where: { id: Number(id) },
|
||||
data: {
|
||||
@@ -107,5 +121,6 @@ export const sendAlert = async (
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
return { connectedAircrafts, mission };
|
||||
};
|
||||
|
||||
@@ -250,7 +250,6 @@ router.post("/:id/hpg-validation-result", async (req, res) => {
|
||||
},
|
||||
});
|
||||
io.to("dispatchers").emit("update-mission", newMission);
|
||||
|
||||
const noActionRequired = result.state === "VALID";
|
||||
if (noActionRequired) {
|
||||
io.to(`user:${result.userId}`).emit("notification", {
|
||||
@@ -262,9 +261,10 @@ router.post("/:id/hpg-validation-result", async (req, res) => {
|
||||
},
|
||||
} as NotificationPayload);
|
||||
|
||||
console.log("Got positiv validation Result", result.alertWhenValid);
|
||||
if (result.alertWhenValid) {
|
||||
if (!req.user) return;
|
||||
sendAlert(Number(missionId), {}, req.user);
|
||||
console.log(req.user);
|
||||
sendAlert(Number(missionId), {}, "HPG");
|
||||
}
|
||||
} else {
|
||||
io.to(`user:${result.userId}`).emit("notification", {
|
||||
|
||||
@@ -165,16 +165,6 @@ export const MissionForm = () => {
|
||||
...(mission as unknown as Prisma.MissionCreateInput),
|
||||
hpgSelectedMissionString: szenarioCode,
|
||||
});
|
||||
if (validationRequired) {
|
||||
await startHpgValidation(newMission.id, {
|
||||
alertWhenValid,
|
||||
}).catch((error) => {
|
||||
toast.error(`Fehler beim Starten der HPG-Validierung: ${error.message}`);
|
||||
});
|
||||
} else if (alertWhenValid) {
|
||||
await sendAlertMutation.mutateAsync(newMission.id);
|
||||
}
|
||||
return newMission;
|
||||
} else {
|
||||
newMission = await editMissionMutation.mutateAsync({
|
||||
id: Number(editingMissionId),
|
||||
@@ -189,14 +179,18 @@ export const MissionForm = () => {
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (validationRequired) {
|
||||
await startHpgValidation(newMission.id, {}).catch((error) => {
|
||||
await startHpgValidation(newMission.id, {
|
||||
alertWhenValid,
|
||||
}).catch((error) => {
|
||||
toast.error(`Fehler beim Starten der HPG-Validierung: ${error.message}`);
|
||||
});
|
||||
} else if (alertWhenValid) {
|
||||
await sendAlertMutation.mutateAsync(newMission.id);
|
||||
}
|
||||
return newMission;
|
||||
};
|
||||
console.log(form.watch("missionStationIds"));
|
||||
return (
|
||||
<form className="space-y-4">
|
||||
{/* Koorinaten Section */}
|
||||
@@ -421,60 +415,27 @@ export const MissionForm = () => {
|
||||
|
||||
<div className="form-control min-h-[140px]">
|
||||
<div className="flex gap-2">
|
||||
{editingMissionId ? (
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-primary flex-1"
|
||||
onClick={form.handleSubmit(async (mission: MissionOptionalDefaults) => {
|
||||
try {
|
||||
console.log("Saving mission", mission.addressOSMways);
|
||||
const newMission = await saveMission(mission);
|
||||
toast.success(`Einsatz ${newMission.publicId} aktualisiert`);
|
||||
setSearchElements([]); // Reset search elements
|
||||
setEditingMission(null); // Reset editing state
|
||||
form.reset(); // Reset the form
|
||||
setOpen(false);
|
||||
} catch (error) {
|
||||
if (error instanceof AxiosError) {
|
||||
toast.error(
|
||||
`Fehler beim Bearbeiten des Einsatzes: ${error.response?.data.error}`,
|
||||
);
|
||||
} else {
|
||||
toast.error(
|
||||
`Fehler beim Bearbeiten des Einsatzes: ${(error as Error).message}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
})}
|
||||
>
|
||||
Änderungen speichern
|
||||
</button>
|
||||
) : (
|
||||
<>
|
||||
<button
|
||||
type="submit"
|
||||
className="btn btn-warning"
|
||||
onClick={form.handleSubmit(async (mission: MissionOptionalDefaults) => {
|
||||
try {
|
||||
const newMission = await saveMission(mission, {
|
||||
createNewMission: true,
|
||||
createNewMission: !editingMissionId,
|
||||
alertWhenValid: true,
|
||||
});
|
||||
|
||||
setSearchElements([]); // Reset search elements
|
||||
setEditingMission(null);
|
||||
setContextMenu(null);
|
||||
toast.success(`Einsatz ${newMission.publicId} erstellt`);
|
||||
form.reset();
|
||||
setOpen(false);
|
||||
} catch (error) {
|
||||
if (error instanceof AxiosError) {
|
||||
toast.error(
|
||||
`Fehler beim Erstellen des Einsatzes: ${error.response?.data.error}`,
|
||||
);
|
||||
toast.error(`Fehler beim Erstellen des Einsatzes: ${error.response?.data.error}`);
|
||||
} else {
|
||||
toast.error(
|
||||
`Fehler beim Erstellen des Einsatzes: ${(error as Error).message}`,
|
||||
);
|
||||
toast.error(`Fehler beim Erstellen des Einsatzes: ${(error as Error).message}`);
|
||||
}
|
||||
}
|
||||
})}
|
||||
@@ -487,7 +448,7 @@ export const MissionForm = () => {
|
||||
onClick={form.handleSubmit(async (mission: MissionOptionalDefaults) => {
|
||||
try {
|
||||
const newMission = await saveMission(mission, {
|
||||
createNewMission: true,
|
||||
createNewMission: !editingMissionId,
|
||||
});
|
||||
|
||||
setSearchElements([]); // Reset search elements
|
||||
@@ -497,21 +458,16 @@ export const MissionForm = () => {
|
||||
setOpen(false);
|
||||
} catch (error) {
|
||||
if (error instanceof AxiosError) {
|
||||
toast.error(
|
||||
`Fehler beim Erstellen des Einsatzes: ${error.response?.data.error}`,
|
||||
);
|
||||
toast.error(`Fehler beim Erstellen des Einsatzes: ${error.response?.data.error}`);
|
||||
} else {
|
||||
toast.error(
|
||||
`Fehler beim Erstellen des Einsatzes: ${(error as Error).message}`,
|
||||
);
|
||||
toast.error(`Fehler beim Erstellen des Einsatzes: ${(error as Error).message}`);
|
||||
}
|
||||
}
|
||||
})}
|
||||
>
|
||||
<BookmarkPlus className="h-5 w-5" /> Einsatz vorbereiten
|
||||
<BookmarkPlus className="h-5 w-5" />{" "}
|
||||
{editingMissionId ? "Einsatz bearbeiten" : "Einsatz Vorbereiten"}
|
||||
</button>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -741,7 +741,9 @@ const FMSStatusHistory = ({ mission }: { mission: Mission }) => {
|
||||
</li>
|
||||
);
|
||||
if (entry.type === "alert-log") {
|
||||
const alertReceiver = entry.data.station?.bosCallsignShort || entry.data.vehicle;
|
||||
const alertReceiver = entry.auto
|
||||
? null
|
||||
: entry.data.station?.bosCallsignShort || entry.data.vehicle;
|
||||
return (
|
||||
<li key={index} className="flex items-center gap-2">
|
||||
<span className="text-base-content">
|
||||
@@ -756,8 +758,13 @@ const FMSStatusHistory = ({ mission }: { mission: Mission }) => {
|
||||
color: FMS_STATUS_TEXT_COLORS[6],
|
||||
}}
|
||||
>
|
||||
{!entry.auto && (
|
||||
<>
|
||||
{entry.data.user.firstname?.[0]?.toUpperCase() ?? "?"}
|
||||
{entry.data.user.lastname?.[0]?.toUpperCase() ?? "?"}
|
||||
</>
|
||||
)}
|
||||
{entry.auto && "AUTO"}
|
||||
{alertReceiver && (
|
||||
<>
|
||||
<svg
|
||||
|
||||
@@ -58,6 +58,11 @@ export interface MissionAlertLog {
|
||||
user: PublicUser;
|
||||
};
|
||||
}
|
||||
export interface MissionAlertLogAuto {
|
||||
type: "alert-log";
|
||||
auto: true;
|
||||
timeStamp: string;
|
||||
}
|
||||
|
||||
export interface MissionCompletedLog {
|
||||
type: "completed-log";
|
||||
@@ -73,5 +78,6 @@ export type MissionLog =
|
||||
| MissionMessageLog
|
||||
| MissionSdsLog
|
||||
| MissionAlertLog
|
||||
| MissionAlertLogAuto
|
||||
| MissionCompletedLog
|
||||
| MissionVehicleLog;
|
||||
|
||||
Reference in New Issue
Block a user