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(); /* * eslint-disable-next-line react/jsx-key -- Fehlalarm: Diese JSX-Elemente * sind nicht die Kinder einer Liste, sondern die zweiten Glieder von * Wertepaaren. Gerendert werden sie unten in einer map, deren Wrapper den * key traegt (`
{fahrzeug.dinTyp ? `${fahrzeug.dinTyp} — ` : ""} {fahrzeug.bezeichnung}
Für dieses Fahrzeug sind noch keine Geräteräume angelegt.
)} {alleRaeume.map((raum) => (leer
) : (