import Link from "next/link";
import { notFound, redirect } from "next/navigation";
import { ArrowLeft, Package } from "lucide-react";
import { aktuelleSitzung } from "@/lib/auth";
import { fuerOrganisation } from "@/lib/db";
import { alsDatum } from "@/lib/utils";
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
import { FristAnzeige, StatusAbzeichen } from "@/components/stammdaten/anzeige";
export const metadata = { title: "Fahrzeug" };
/**
* Fahrzeugdetail mit der Beladung, nach Geräteräumen geordnet.
*
* Genau so sucht der Gerätewart: nicht "wo ist die Motorsäge", sondern "was
* ist in G3". Deshalb steht die Beladeordnung im Mittelpunkt und nicht eine
* alphabetische Geräteliste.
*/
export default async function FahrzeugSeite({ params }: { params: Promise<{ id: string }> }) {
const sitzung = await aktuelleSitzung();
if (!sitzung) redirect("/anmelden");
const { id } = await params;
const fahrzeug = await fuerOrganisation(sitzung.organisationId, (db) =>
db.fahrzeug.findUnique({
where: { id },
include: {
standort: { select: { id: true, name: true } },
geraeteraeume: {
where: { geloeschtAm: null },
orderBy: [{ sortierung: "asc" }, { bezeichnung: "asc" }],
include: {
geraete: {
where: { geloeschtAm: null },
orderBy: { bezeichnung: "asc" },
select: {
id: true,
inventarnummer: true,
bezeichnung: true,
status: true,
naechstePruefung: true,
},
},
},
},
geraete: {
where: { geloeschtAm: null, geraeteraumId: null },
orderBy: { bezeichnung: "asc" },
select: {
id: true,
inventarnummer: true,
bezeichnung: true,
status: true,
naechstePruefung: true,
},
},
},
}),
);
if (!fahrzeug) notFound();
const angaben: Array<[string, React.ReactNode]> = [
["Typ nach DIN", fahrzeug.dinTyp ?? "—"],
["Kennzeichen", {fahrzeug.kennzeichen ?? "—"}],
["Hersteller", fahrzeug.hersteller ?? "—"],
["Aufbauhersteller", fahrzeug.aufbauhersteller ?? "—"],
[
"Fahrgestellnummer",
{fahrzeug.fahrgestellnummer ?? "—"},
],
["Baujahr", {fahrzeug.baujahr ?? "—"}],
["Erstzulassung", alsDatum(fahrzeug.erstzulassung)],
["Indienststellung", alsDatum(fahrzeug.indienststellung)],
["Nächster TÜV",
{fahrzeug.dinTyp ? `${fahrzeug.dinTyp} — ` : ""} {fahrzeug.bezeichnung}
Für dieses Fahrzeug sind noch keine Geräteräume angelegt.
)} {alleRaeume.map((raum) => (leer
) : (