import { useState, useEffect } from 'react' import { FaTimes } from 'react-icons/fa' import { useAdminConfig } from '../hooks/useAdminConfig' import { useEmployees } from '../hooks/useEmployees' // Fallback-Werte falls Config nicht geladen werden kann const DEFAULT_TICKET_TYPES = [ 'Home Office', 'Holidays', 'Trip', 'Supportrequest', 'Change Request', 'Maintenance', 'Project', 'Controlling', 'Development', 'Documentation', 'Meeting/Conference', 'IT Management', 'IT Security', 'Procurement', 'Rollout', 'Emergency Call', 'Other Services' ] const DEFAULT_SYSTEMS = [ 'Account View', 'Client', 'Cofano', 'Credentials', 'Diamant', 'Docuware', 'EDI', 'eMail', 'Employee', 'Invoice', 'LBase', 'Medical Office', 'Network', 'O365', 'PDF Viewer', 'Printer', 'Reports', 'Server', 'Time Tracking', 'TK', 'TOS', 'Vivendi NG', 'VGM', '(W)LAN', '(W)WAN', 'WOMS', 'n/a' ] const DEFAULT_RESPONSE_LEVELS = [ 'USER', 'KEY USER', 'Helpdesk', 'Support', 'Admin', 'FS/FE', '24/7', 'TECH MGMT', 'Backoffice', 'BUSI MGMT', 'n/a' ] const DEFAULT_SERVICE_TYPES = ['Remote', 'On Site', 'Off Site'] const DEFAULT_PRIORITIES = [ { value: 0, label: 'None' }, { value: 1, label: 'Low' }, { value: 2, label: 'Medium' }, { value: 3, label: 'High' }, { value: 4, label: 'Critical' } ] const today = new Date().toLocaleDateString('de-DE') export default function CreateTicketModal({ isOpen, onClose, onCreate, customers = [] }) { const { config } = useAdminConfig() const { employees } = useEmployees() // Verwende Config-Werte oder Fallbacks const TICKET_TYPES = config?.ticketTypes || DEFAULT_TICKET_TYPES const SYSTEMS = config?.systems || DEFAULT_SYSTEMS const RESPONSE_LEVELS = config?.responseLevels || DEFAULT_RESPONSE_LEVELS const SERVICE_TYPES = config?.serviceTypes || DEFAULT_SERVICE_TYPES const PRIORITIES = config?.priorities || DEFAULT_PRIORITIES const [formData, setFormData] = useState({ customerId: '', type: '', systemType: '', responseLevel: '', serviceType: '', priority: 1, topic: '', requestedBy: '', requestedFor: '', assignedTo: '', // Zugewiesener Mitarbeiter (User ID) status: 'Open', // Status wird automatisch gesetzt basierend auf assignedTo startDate: today, startTime: '', deadline: today, endTime: '', estimate: '30', mailCopyTo: '', sendNotification: false, details: '' }) const [loading, setLoading] = useState(false) const [error, setError] = useState('') // Setze Default-Werte wenn Config geladen ist oder Modal geöffnet wird useEffect(() => { if (isOpen && (TICKET_TYPES.length > 0 || SERVICE_TYPES.length > 0)) { setFormData(prev => ({ ...prev, type: prev.type || TICKET_TYPES[0] || 'Supportrequest', serviceType: prev.serviceType || SERVICE_TYPES[0] || 'Remote', priority: prev.priority || (PRIORITIES.find(p => p.value === 1)?.value || 1) })) } // Reset error when modal opens if (isOpen) { setError('') } }, [isOpen, TICKET_TYPES, SERVICE_TYPES, PRIORITIES]) const handleChange = (field, value) => { setFormData(prev => ({ ...prev, [field]: value })) // Clear error when user makes changes if (error) setError('') } const handleSubmit = async (e) => { e.preventDefault() setLoading(true) setError('') try { const result = await onCreate(formData) if (result.success) { onClose() setFormData({ customerId: '', type: TICKET_TYPES[0] || 'Supportrequest', systemType: '', responseLevel: '', serviceType: SERVICE_TYPES[0] || 'Remote', priority: PRIORITIES.find(p => p.value === 1)?.value || 1, topic: '', requestedBy: '', requestedFor: '', startDate: today, startTime: '', deadline: today, endTime: '', estimate: '30', mailCopyTo: '', sendNotification: false, details: '' }) } else { setError(result.error || 'Fehler beim Erstellen des Tickets') } } catch (error) { console.error('Error creating ticket:', error) setError(error.message || 'Ein unerwarteter Fehler ist aufgetreten') } finally { setLoading(false) } } if (!isOpen) return null return (