import { getServerSession } from 'next-auth'; import { authOptions } from '@/lib/auth'; import { redirect } from 'next/navigation'; import { prisma } from '@/lib/prisma'; import Link from 'next/link'; import { FiPlus, FiCalendar, FiTruck, FiMapPin, FiClock } from 'react-icons/fi'; export default async function ToursPage() { const session = await getServerSession(authOptions); if (!session || session.user.role !== 'ADMIN') { redirect('/login'); } // Hole alle Touren, sortiert nach Datum const tours = await prisma.tour.findMany({ include: { driver: { select: { id: true, name: true, vehiclePlate: true, }, }, bookings: { select: { id: true, bookingNumber: true, customerName: true, eventCity: true, }, }, tourStops: { select: { id: true, status: true, }, }, }, orderBy: { tourDate: 'desc', }, take: 50, }); const getStatusColor = (status: string) => { switch (status) { case 'PLANNED': return 'bg-blue-500/20 text-blue-400 border-blue-500/50'; case 'IN_PROGRESS': return 'bg-yellow-500/20 text-yellow-400 border-yellow-500/50'; case 'COMPLETED': return 'bg-green-500/20 text-green-400 border-green-500/50'; case 'CANCELLED': return 'bg-red-500/20 text-red-400 border-red-500/50'; default: return 'bg-gray-500/20 text-gray-400 border-gray-500/50'; } }; const getStatusLabel = (status: string) => { switch (status) { case 'PLANNED': return 'Geplant'; case 'IN_PROGRESS': return 'Unterwegs'; case 'COMPLETED': return 'Abgeschlossen'; case 'CANCELLED': return 'Storniert'; default: return status; } }; return (
Verwalte Fahrer-Touren und Route-Optimierung
Erstelle deine erste Tour, um Buchungen zu Fahrern zuzuweisen.