fix cron, add pilot time server update

This commit is contained in:
PxlLoewe
2025-06-02 14:24:37 -07:00
parent 9028eb9c71
commit 72998a36a4
6 changed files with 57 additions and 17 deletions

View File

@@ -9,6 +9,7 @@ import {
MissionSdsLog,
MissionStationLog,
Prisma,
PublicUser,
Station,
} from "@repo/db";
import { toast } from "react-hot-toast";
@@ -46,20 +47,32 @@ const FMSStatusHistory = ({
aircraft: ConnectedAircraft & { Station: Station };
mission?: Mission;
}) => {
console.log("FMSStatusHistory", mission?.missionLog);
const log = ((mission?.missionLog as unknown as MissionLog[]) || [])
.filter((entry) => entry.type === "station-log" && entry.data.stationId === aircraft.Station.id)
.reverse()
.splice(0, 6) as MissionStationLog[];
const aircraftUser =
const aircraftUser: PublicUser =
typeof aircraft.publicUser === "string" ? JSON.parse(aircraft.publicUser) : aircraft.publicUser;
return (
<div className="p-4">
<ul className="text-base-content font-semibold">
<li className="flex items-center gap-2 mb-1">
<PersonIcon className="w-5 h-5" /> {aircraftUser.fullName} ({aircraftUser.publicId})
<p className="flex items-center gap-2 flex-1">
<PersonIcon className="w-5 h-5" /> {aircraftUser.fullName} ({aircraftUser.publicId})
</p>
<p className="text-sm font-thin text-gray-500">
{aircraft.esimatedLogoutTime
? `Geplante Abmeldung: ${new Date(aircraft.esimatedLogoutTime).toLocaleTimeString(
[],
{
hour: "2-digit",
minute: "2-digit",
},
)}`
: "Keine geplante Abmeldung"}
</p>
</li>
</ul>
<div className="divider mt-0 mb-0" />

View File

@@ -2,9 +2,11 @@
import { useSession } from "next-auth/react";
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
import { useEffect, useRef, useState } from "react";
import { useQuery } from "@tanstack/react-query";
import { useMutation, useQuery } from "@tanstack/react-query";
import { getStationsAPI } from "_querys/stations";
import toast from "react-hot-toast";
import { editConnectedAircraftAPI } from "_querys/aircrafts";
import { Prisma } from "@repo/db";
export const ConnectionBtn = () => {
const modalRef = useRef<HTMLDialogElement>(null);
@@ -22,6 +24,15 @@ export const ConnectionBtn = () => {
queryKey: ["stations"],
queryFn: () => getStationsAPI(),
});
const aircraftMutation = useMutation({
mutationFn: ({
change,
sessionId,
}: {
sessionId: number;
change: Prisma.ConnectedAircraftUpdateInput;
}) => editConnectedAircraftAPI(sessionId, change),
});
useEffect(() => {
if (stations && stations.length > 0 && form.selectedStationId === null) {
@@ -100,7 +111,7 @@ export const ConnectionBtn = () => {
)}
<fieldset className="fieldset w-full mt-2">
<label className="floating-label w-full text-base">
<span>Logoff Zeit (UTC+1)</span>
<span>Logoff Zeit (LCL)</span>
<input
onChange={(e) => {
const value = e.target.value;
@@ -109,7 +120,16 @@ export const ConnectionBtn = () => {
logoffTime: value,
});
if (logoffDebounce) clearTimeout(logoffDebounce);
const timeout = setTimeout(() => {
const timeout = setTimeout(async () => {
if (!connection.connectedAircraft) return;
await aircraftMutation.mutateAsync({
sessionId: connection.connectedAircraft.id,
change: {
esimatedLogoutTime: value
? new Date(new Date().toDateString() + " " + value).toISOString()
: null,
},
});
toast.success("Änderung gespeichert!");
}, 2000);
setLogoffDebounce(timeout);