'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import DashboardSidebar from '@/components/DashboardSidebar'; import { useSession } from 'next-auth/react'; export default function DriversPage() { const router = useRouter(); const { data: session } = useSession(); const [drivers, setDrivers] = useState([]); const [loading, setLoading] = useState(true); const [showForm, setShowForm] = useState(false); const [formData, setFormData] = useState({ name: '', email: '', password: '', phoneNumber: '', vehiclePlate: '', vehicleModel: '', }); useEffect(() => { fetchDrivers(); }, []); const fetchDrivers = async () => { try { const res = await fetch('/api/drivers'); const data = await res.json(); setDrivers(data.drivers || []); } catch (error) { console.error('Fetch error:', error); } finally { setLoading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); try { const res = await fetch('/api/drivers', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData), }); if (res.ok) { setShowForm(false); setFormData({ name: '', email: '', password: '', phoneNumber: '', vehiclePlate: '', vehicleModel: '', }); fetchDrivers(); } else { const data = await res.json(); alert(data.error || 'Fehler beim Erstellen'); } } catch (error) { console.error('Create error:', error); alert('Fehler beim Erstellen'); } }; if (loading) { return (

Lädt...

); } return (

Fahrer

Verwalten Sie alle Fahrer

{showForm && (

Neuen Fahrer anlegen

setFormData({ ...formData, name: e.target.value })} className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent" required />
setFormData({ ...formData, email: e.target.value })} className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent" required />
setFormData({ ...formData, password: e.target.value })} className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent" required />
setFormData({ ...formData, phoneNumber: e.target.value })} className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent" />
setFormData({ ...formData, vehiclePlate: e.target.value })} className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent" />
setFormData({ ...formData, vehicleModel: e.target.value })} className="w-full px-4 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent" />
)}
{drivers.map((driver) => (
router.push(`/dashboard/drivers/${driver.id}`)} className="bg-gradient-to-br from-gray-800 to-gray-900 rounded-lg shadow-xl p-6 hover:shadow-2xl transition-all cursor-pointer border border-gray-700 hover:border-red-500" >

{driver.name}

{driver.email}

{driver.available ? ( Verfügbar ) : ( Beschäftigt )}
{driver.phoneNumber && (

Telefon: {driver.phoneNumber}

)} {driver.vehiclePlate && (

Kennzeichen: {driver.vehiclePlate}

)} {driver.vehicleModel && (

Fahrzeug: {driver.vehicleModel}

)}

Touren: {driver._count.driverTours}

))}
{drivers.length === 0 && (

Noch keine Fahrer vorhanden

)}
); }