'use client';
import { useState } from 'react';
import { useRouter } from 'next/navigation';
import { FiCalendar, FiMapPin, FiUser, FiMail, FiPhone, FiEdit, FiSave, FiX, FiCamera, FiTruck, FiFileText } from 'react-icons/fi';
import Link from 'next/link';
import { formatDate, formatDateTime } from '@/lib/date-utils';
import ContractSection from './ContractSection';
interface BookingDetailProps {
booking: any;
emails: any[];
user: any;
}
export default function BookingDetail({ booking, emails, user }: BookingDetailProps) {
← Zurück zu Buchungen
Buchung {booking.bookingNumber}
{!editing ? (
) : (
<>
>
)}
Status
{getStatusLabel(booking.status)}
{booking.status === 'RESERVED' && (
)}
{booking.status === 'CONFIRMED' && (
)}
{['RESERVED', 'CONFIRMED'].includes(booking.status) && (
)}
Kundendaten
{editing ? (
setFormData({ ...formData, customerName: e.target.value })}
className="w-full px-3 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500"
/>
) : (
{booking.customerName}
)}
{editing ? (
setFormData({ ...formData, customerEmail: e.target.value })}
className="w-full px-3 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500"
/>
) : (
{booking.customerEmail}
)}
{editing ? (
setFormData({ ...formData, customerPhone: e.target.value })}
className="w-full px-3 py-2 bg-gray-700 border border-gray-600 text-white rounded-lg focus:ring-2 focus:ring-red-500"
/>
) : (
{booking.customerPhone}
)}
{booking.invoiceType === 'BUSINESS' ? 'Geschäftlich' : 'Privat'}
{booking.companyName && (
{booking.companyName}
)}
Event-Details
{formatDate(booking.eventDate)}
{booking.location.name}
{booking.eventAddress}
{booking.eventZip} {booking.eventCity}
{booking.eventLocation && (
{booking.eventLocation}
)}
{formatDateTime(booking.setupTimeStart)}
{formatDateTime(booking.setupTimeLatest)}
{booking.notes && (
)}
{emails.length > 0 && (
E-Mail-Verlauf
{emails.map((email) => (
{email.subject}
{formatDate(email.receivedAt)}
Von: {email.from}
{email.parsed && (
Automatisch verarbeitet
)}
))}
)}
Fotobox
{booking.photobox ? (
Modell
{booking.photobox.model}
Seriennummer
{booking.photobox.serialNumber}
) : (
Noch nicht zugewiesen
)}
router.refresh()} />
Preis
{booking.calculatedPrice || 0}€
{booking.distance && (
+ {booking.distance} km Anfahrt
)}
Vertrag
Unterschrieben
{booking.contractSigned ? 'Ja' : 'Nein'}
{booking.contractSignedAt && (
am {formatDate(booking.contractSignedAt)}
)}
{booking.tours && booking.tours.length > 0 && (
Tour
{booking.tours.map((tour: any) => (
{tour.driver ? (
Fahrer: {tour.driver.name}
) : (
Noch kein Fahrer zugewiesen
)}
))}
)}
);
}