import { useEffect, useState } from 'react' import { useSearchParams } from 'react-router-dom' import { FaAngleDown, FaSpinner, FaPlus, FaList, FaSliders } from 'react-icons/fa6' import { useWorkorders } from '../hooks/useWorkorders' import { useCustomers } from '../hooks/useCustomers' import TicketCard from '../components/TicketCard' import CreateTicketModal from '../components/CreateTicketModal' import QuickOverviewModal from '../components/QuickOverviewModal' import { PageHeader, Card, Button, EmptyState } from '../components/ui' // Alle Ticket-Status; "Closed" gilt als archiviert und ist standardmaessig ausgeblendet const ALL_STATUSES = [ 'Open', 'Occupied', 'Assigned', 'Awaiting', 'Added Info', 'In Test', 'Halted', 'Aborted', 'Cancelled', 'Closed', ] const ARCHIVED_STATUSES = ['Closed'] const DEFAULT_STATUSES = ALL_STATUSES.filter((s) => !ARCHIVED_STATUSES.includes(s)) export default function TicketsPage() { const [limit, setLimit] = useState(10) const [filters, setFilters] = useState({ status: DEFAULT_STATUSES, type: [], priority: [], limit: 10 }) const [statusSel, setStatusSel] = useState(DEFAULT_STATUSES) const [localFilters, setLocalFilters] = useState({ woid: '', customer: '', userTopic: '', createdDate: '', type: '', system: '', priority: '', }) const toggleStatus = (status) => { setStatusSel((prev) => prev.includes(status) ? prev.filter((s) => s !== status) : [...prev, status] ) } const { workorders, loading, error, refresh, updateWorkorder, createWorkorder } = useWorkorders(filters) const { customers } = useCustomers() const [showCreateModal, setShowCreateModal] = useState(false) const [showOverviewModal, setShowOverviewModal] = useState(false) const [showAdvanced, setShowAdvanced] = useState(false) const [searchParams] = useSearchParams() // Deep-Link aus den Leads: /tickets?woid=123 -> Filter vorbelegen + anwenden // (ueber ALLE Status, damit das Ticket unabhaengig vom Status gefunden wird) useEffect(() => { const w = searchParams.get('woid') if (!w) return setLocalFilters((p) => ({ ...p, woid: w })) setShowAdvanced(true) setStatusSel(ALL_STATUSES) setFilters((prev) => ({ ...prev, status: ALL_STATUSES, woid: w })) }, [searchParams]) const applyFilters = () => { setFilters((prev) => ({ ...prev, status: statusSel.length ? statusSel : ALL_STATUSES, woid: localFilters.woid || undefined, customer: localFilters.customer || undefined, userTopic: localFilters.userTopic || undefined, createdDate: localFilters.createdDate || undefined, type: localFilters.type ? [localFilters.type] : [], system: localFilters.system ? [localFilters.system] : [], priority: localFilters.priority ? [parseInt(localFilters.priority)] : [], limit, })) } const handleUpdate = async (id, data) => { await updateWorkorder(id, data) } const handleCreate = async (data) => { const result = await createWorkorder(data) if (result.success) setShowCreateModal(false) return result } const loadMore = () => { const next = limit + 10 setLimit(next) setFilters((prev) => ({ ...prev, limit: next })) } return (