import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { IconFolders } from '@tabler/icons-react' import { StatusPill } from './ui/StatusPill' import { databases, DATABASE_ID, COLLECTIONS, Query } from '../lib/appwrite' import { useWebsiteProjects } from '../hooks/useWebsiteProjects' /** * Projekt-Kontextbox im Ticket: zeigt automatisch das zugewiesene Projekt * und alle anderen Tickets desselben Kunden (klickbar). * Rendert nichts, wenn dem Ticket kein Projekt zugewiesen ist. */ export default function ProjectContextPanel({ ticket }) { const { fetchByTicketId } = useWebsiteProjects() const [context, setContext] = useState(null) useEffect(() => { let cancelled = false async function load() { try { const assignedProjects = await fetchByTicketId(ticket.$id) if (!assignedProjects.length) { if (!cancelled) setContext(null) return } const projectName = assignedProjects[0].projectName || '' let otherTickets = [] if (ticket.customerId) { const res = await databases.listDocuments(DATABASE_ID, COLLECTIONS.WORKORDERS, [ Query.equal('customerId', ticket.customerId), Query.orderDesc('$createdAt'), Query.limit(50), ]) otherTickets = res.documents.filter((t) => t.$id !== ticket.$id) } if (!cancelled) setContext({ projectName, otherTickets }) } catch { if (!cancelled) setContext(null) } } load() return () => { cancelled = true } }, [ticket.$id, ticket.customerId, fetchByTicketId]) if (!context) return null const { projectName, otherTickets } = context return (
Kein Kunde zugeordnet — andere Tickets koennen nicht automatisch verknuepft werden.
) : !otherTickets.length ? (Keine weiteren Tickets zu diesem Kunden/Projekt.
) : (