"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { formatDate } from "@/lib/date-utils"; import DashboardSidebar from "@/components/DashboardSidebar"; import { useSession } from "next-auth/react"; export default function DriverDetailPage({ params, }: { params: { id: string }; }) { const router = useRouter(); const { data: session } = useSession(); const [driver, setDriver] = useState(null); const [loading, setLoading] = useState(true); const [editing, setEditing] = useState(false); const [formData, setFormData] = useState({ name: "", email: "", phoneNumber: "", vehiclePlate: "", vehicleModel: "", available: true, }); useEffect(() => { fetchDriver(); }, [params.id]); const fetchDriver = async () => { try { const res = await fetch(`/api/drivers/${params.id}`); const data = await res.json(); setDriver(data.driver); setFormData({ name: data.driver.name, email: data.driver.email, phoneNumber: data.driver.phoneNumber || "", vehiclePlate: data.driver.vehiclePlate || "", vehicleModel: data.driver.vehicleModel || "", available: data.driver.available, }); } catch (error) { console.error("Fetch error:", error); } finally { setLoading(false); } }; const handleUpdate = async (e: React.FormEvent) => { e.preventDefault(); try { const res = await fetch(`/api/drivers/${params.id}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify(formData), }); if (res.ok) { setEditing(false); fetchDriver(); } else { alert("Fehler beim Aktualisieren"); } } catch (error) { console.error("Update error:", error); alert("Fehler beim Aktualisieren"); } }; const handleDelete = async () => { if (!confirm("Möchten Sie diesen Fahrer wirklich löschen?")) return; try { const res = await fetch(`/api/drivers/${params.id}`, { method: "DELETE", }); if (res.ok) { router.push("/dashboard/drivers"); } else { alert("Fehler beim Löschen"); } } catch (error) { console.error("Delete error:", error); alert("Fehler beim Löschen"); } }; if (loading) { return (

Lädt...

); } if (!driver) { return (

Fahrer nicht gefunden

); } return (

{driver.name}

{driver.email}

{editing ? (
setFormData({ ...formData, name: e.target.value }) } className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg" />
setFormData({ ...formData, email: e.target.value }) } className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg" />
setFormData({ ...formData, phoneNumber: e.target.value, }) } className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg" />
setFormData({ ...formData, vehiclePlate: e.target.value, }) } className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg" />
setFormData({ ...formData, vehicleModel: e.target.value, }) } className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg" />
) : (

Telefon

{driver.phoneNumber || "Nicht angegeben"}

Kennzeichen

{driver.vehiclePlate || "Nicht angegeben"}

Fahrzeug

{driver.vehicleModel || "Nicht angegeben"}

Verfügbarkeit

{driver.available ? "✓ Verfügbar" : "✗ Nicht verfügbar"}

Erstellt

{formatDate(driver.createdAt)}

)}

Letzte Touren ({driver.driverTours?.length || 0})

{driver.driverTours && driver.driverTours.length > 0 ? (
{driver.driverTours.map((tour: any) => (
router.push(`/dashboard/tours/${tour.id}`)} className="p-4 bg-gray-700/50 border border-gray-600 rounded-lg hover:bg-gray-700 cursor-pointer transition-colors" >

{tour.tourNumber}

{tour.bookings.length} Buchungen

{formatDate(tour.tourDate)}

{tour.status}

))}
) : (

Keine Touren vorhanden

)}
); }