import { useState } from 'react' import { FaLock, FaLockOpen, FaPlay, FaStop, FaTruck, FaSackDollar, FaUserGear, FaPlus } from 'react-icons/fa6' import { formatDistanceToNow, format } from 'date-fns' import { de } from 'date-fns/locale' import StatusDropdown from './StatusDropdown' import PriorityDropdown from './PriorityDropdown' import EditorDropdown from './EditorDropdown' import ResponseDropdown from './ResponseDropdown' import CreateWorksheetModal from './CreateWorksheetModal' import WorksheetList from './WorksheetList' import WorksheetStats from './WorksheetStats' import { useWorksheets } from '../hooks/useWorksheets' const PRIORITY_CLASSES = { 0: 'priority-none', 1: 'priority-low', 2: 'priority-medium', 3: 'priority-high', 4: 'priority-critical' } const PRIORITY_LABELS = { 0: 'NONE', 1: 'LOW', 2: 'MEDIUM', 3: 'HIGH', 4: 'CRITICAL' } const STATUS_CLASSES = { 'Open': 'status-open', 'Occupied': 'status-occupied', 'Assigned': 'status-assigned', 'Awaiting': 'status-awaiting', 'Closed': 'status-closed' } const APPROVAL_ICONS = { 'pending': FaUserGear, 'approved': FaSackDollar, 'quote': FaSackDollar, 'shipping': FaTruck } export default function TicketRow({ ticket, onUpdate, onExpand }) { const [expanded, setExpanded] = useState(false) const [locked, setLocked] = useState(true) const [showCreateWorksheet, setShowCreateWorksheet] = useState(false) // Worksheets für dieses Ticket laden (nur wenn expanded) const { worksheets, loading: worksheetsLoading, createWorksheet, getTotalTime } = useWorksheets(expanded ? ticket.woid : null) const createdAt = new Date(ticket.$createdAt || ticket.createdAt) const elapsed = formatDistanceToNow(createdAt, { locale: de }) const handleStatusChange = (newStatus) => { onUpdate(ticket.$id, { status: newStatus }) } const handlePriorityChange = (newPriority) => { onUpdate(ticket.$id, { priority: newPriority }) } const handleEditorChange = (newEditor) => { onUpdate(ticket.$id, { assignedTo: newEditor }) } const handleResponseChange = (newResponse) => { onUpdate(ticket.$id, { responseLevel: newResponse }) } const toggleLock = () => { if (locked) { setExpanded(true) onExpand?.(ticket.$id) } else { setExpanded(false) } setLocked(!locked) } const handleCreateWorksheet = async (worksheetData, currentUser) => { const result = await createWorksheet(worksheetData, currentUser) // Wenn Status geändert wurde, aktualisiere Work Order if (result.success && worksheetData.newStatus !== ticket.status) { await onUpdate(ticket.$id, { status: worksheetData.newStatus, responseLevel: worksheetData.newResponseLevel || ticket.responseLevel }) } return result } const ApprovalIcon = APPROVAL_ICONS[ticket.approvalStatus] || FaUserGear return ( <>
{ticket.details || 'Keine Details vorhanden.'}