import React, { useState, useEffect } from 'react'; import { X, Save, Wrench, User, Calendar, Tag, Hash, Building2 } from 'lucide-react'; import { InstalledPart, Customer } from '../types'; interface InstalledPartModalProps { isOpen: boolean; onClose: () => void; onSave: (part: Omit | InstalledPart) => Promise; customers: Customer[]; initialPart?: InstalledPart | null; defaultCustomerId?: string; } export const InstalledPartModal: React.FC = ({ isOpen, onClose, onSave, customers, initialPart, defaultCustomerId }) => { const [formData, setFormData] = useState({ customerId: '', name: '', category: 'Gas-Brennwertgerät', manufacturer: 'Buderus', serialNumber: '', quantity: 1, installedAt: new Date().toISOString().split('T')[0] }); const [isSaving, setIsSaving] = useState(false); const [errorMsg, setErrorMsg] = useState(''); useEffect(() => { if (initialPart) { setFormData({ customerId: initialPart.customerId || '', name: initialPart.name || '', category: initialPart.category || 'Gas-Brennwertgerät', manufacturer: initialPart.manufacturer || 'Buderus', serialNumber: initialPart.serialNumber || '', quantity: initialPart.quantity || 1, installedAt: initialPart.installedAt || new Date().toISOString().split('T')[0] }); } else { setFormData({ customerId: defaultCustomerId || (customers.length > 0 ? customers[0].id : ''), name: '', category: 'Gas-Brennwertgerät', manufacturer: 'Buderus', serialNumber: '', quantity: 1, installedAt: new Date().toISOString().split('T')[0] }); } setErrorMsg(''); }, [initialPart, defaultCustomerId, customers, isOpen]); if (!isOpen) return null; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!formData.customerId) { setErrorMsg('Bitte einen Kunden auswählen.'); return; } if (!formData.name.trim()) { setErrorMsg('Bitte Produktbezeichnung angeben.'); return; } try { setIsSaving(true); setErrorMsg(''); if (initialPart) { await onSave({ ...initialPart, ...formData }); } else { await onSave(formData); } onClose(); } catch (err: any) { setErrorMsg(err.message || 'Fehler beim Speichern des Geräts'); } finally { setIsSaving(false); } }; return (
{/* Header */}

{initialPart ? 'Verbautes Gerät bearbeiten' : 'Gerät zur Kartei hinzufügen'}

{/* Form Body */}
{errorMsg && (
{errorMsg}
)} {/* Customer */}
{/* Product Name */}
setFormData({ ...formData, name: e.target.value })} placeholder="z.B. Logamax plus GB172-24" required style={{ width: '100%', padding: '10px 14px', borderRadius: '8px', border: '1px solid #cbd5e1', fontSize: '0.95rem' }} />
{/* Manufacturer & Category */}
setFormData({ ...formData, manufacturer: e.target.value })} placeholder="z.B. Buderus, Bosch, Viessmann" required style={{ width: '100%', padding: '10px 14px 10px 38px', borderRadius: '8px', border: '1px solid #cbd5e1', fontSize: '0.95rem' }} />
setFormData({ ...formData, category: e.target.value })} placeholder="z.B. Gas-Brennwertgerät, Raumthermostat" style={{ width: '100%', padding: '10px 14px 10px 38px', borderRadius: '8px', border: '1px solid #cbd5e1', fontSize: '0.95rem' }} />
{/* Serial Number & Quantity */}
setFormData({ ...formData, serialNumber: e.target.value })} placeholder="8374747383" style={{ width: '100%', padding: '10px 14px 10px 38px', borderRadius: '8px', border: '1px solid #cbd5e1', fontSize: '0.95rem' }} />
setFormData({ ...formData, quantity: parseInt(e.target.value) || 1 })} style={{ width: '100%', padding: '10px 14px', borderRadius: '8px', border: '1px solid #cbd5e1', fontSize: '0.95rem' }} />
{/* Installed At */}
setFormData({ ...formData, installedAt: e.target.value })} style={{ width: '100%', padding: '10px 14px 10px 38px', borderRadius: '8px', border: '1px solid #cbd5e1', fontSize: '0.95rem' }} />
{/* Actions */}
); };