"use client"; import { useState, useEffect } from 'react'; import { supabase } from '@/lib/supabase'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { useRouter } from 'next/navigation'; import { useToast } from '@/hooks/use-toast'; interface Customer { id: string; name: string; email: string; telefon?: string; termin_datum?: string; projekt_beschreibung?: string; created_at: string; updated_at: string; has_appointment: boolean; appointment_status: 'pending' | 'running' | 'completed'; started_by?: string; started_at?: string; } interface CustomerQuestionnaireProps { customerId: string; onSave?: () => void; } export default function CustomerQuestionnaire({ customerId, onSave }: CustomerQuestionnaireProps) { const [customer, setCustomer] = useState(null); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [formData, setFormData] = useState({ name: '', email: '', telefon: '', termin_datum: '', projekt_beschreibung: '' }); const router = useRouter(); const { toast } = useToast(); useEffect(() => { fetchCustomer(); }, [customerId]); const fetchCustomer = async () => { try { console.log('🔍 Fetching customer:', customerId); const { data, error } = await supabase .from('kunden_projekte') .select('*') .eq('id', customerId) .single(); if (error) { console.error('❌ Error fetching customer:', error); toast({ title: "Fehler", description: "Kunde konnte nicht geladen werden.", variant: "destructive", }); return; } console.log('✅ Customer fetched:', data); setCustomer(data); setFormData({ name: data.name || '', email: data.email || '', telefon: data.telefon || '', termin_datum: data.termin_datum ? new Date(data.termin_datum).toISOString().slice(0, 16) : '', projekt_beschreibung: data.projekt_beschreibung || '' }); } catch (error) { console.error('❌ Error:', error); toast({ title: "Fehler", description: "Ein unerwarteter Fehler ist aufgetreten.", variant: "destructive", }); } finally { setLoading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSaving(true); try { console.log('💾 Saving customer data:', formData); const updateData = { name: formData.name, email: formData.email, telefon: formData.telefon || null, termin_datum: formData.termin_datum ? new Date(formData.termin_datum).toISOString() : null, projekt_beschreibung: formData.projekt_beschreibung || null, has_appointment: !!formData.termin_datum, updated_at: new Date().toISOString() }; const { error } = await supabase .from('kunden_projekte') .update(updateData) .eq('id', customerId); if (error) { console.error('❌ Error updating customer:', error); toast({ title: "Fehler", description: "Daten konnten nicht gespeichert werden.", variant: "destructive", }); return; } console.log('✅ Customer updated successfully'); toast({ title: "Erfolg", description: "Kundendaten wurden erfolgreich gespeichert.", }); if (onSave) { onSave(); } else { router.push('/kunden-projekte'); } } catch (error) { console.error('❌ Error:', error); toast({ title: "Fehler", description: "Ein unerwarteter Fehler ist aufgetreten.", variant: "destructive", }); } finally { setSaving(false); } }; const handleInputChange = (field: string, value: string) => { setFormData(prev => ({ ...prev, [field]: value })); }; if (loading) { return (

Kunden-Daten bearbeiten

Lade Kundendaten...

); } if (!customer) { return (

Kunde nicht gefunden

Der angeforderte Kunde konnte nicht gefunden werden.

); } return (

Kunden-Daten bearbeiten

Bearbeiten Sie die Daten für {customer.name}

Kundendaten
handleInputChange('name', e.target.value)} required placeholder="Vollständiger Name" />
handleInputChange('email', e.target.value)} required placeholder="email@beispiel.de" />
handleInputChange('telefon', e.target.value)} placeholder="+49 123 456789" />
handleInputChange('termin_datum', e.target.value)} />