import { config } from '../config.js' import { listDocuments, Query } from './appwriteAdmin.js' /** * Tickets + zugehoerige Worksheets eines Kunden ("was wurde gemacht"). * excludeTypes: Ticket-Typen, die der Kunde nicht sehen soll (z. B. Akquise). */ export async function getCustomerActivity(customerId, { ticketLimit = 25, excludeTypes = [] } = {}) { if (!customerId) return [] let workorders = await listDocuments(config.collections.workorders, [ Query.equal('customerId', customerId), Query.orderDesc('$createdAt'), Query.limit(ticketLimit), ]) if (excludeTypes.length) { const blocked = new Set(excludeTypes.map((t) => t.toLowerCase())) workorders = workorders.filter((w) => !blocked.has(String(w.type || '').toLowerCase())) } const ids = workorders.map((w) => w.$id) let worksheets = [] if (ids.length) { worksheets = await listDocuments(config.collections.worksheets, [ Query.equal('workorderId', ids), Query.orderDesc('$createdAt'), Query.limit(300), ]).catch(() => []) } const sheetsByWorkorder = {} for (const ws of worksheets) { if (ws.isComment) continue const list = (sheetsByWorkorder[ws.workorderId] ||= []) list.push({ wsid: ws.wsid || '', employeeName: ws.employeeName || ws.employeeShort || '', serviceType: ws.serviceType || '', newStatus: ws.newStatus || '', totalTime: ws.totalTime || '', date: ws.endDate || ws.startDate || '', details: ws.details || '', createdAt: ws.createdAt || ws.$createdAt || '', }) } return workorders.map((w) => ({ id: w.$id, woid: w.woid || '', topic: w.topic || w.title || '', status: w.status || '', type: w.type || '', createdAt: w.createdAt || w.$createdAt || '', worksheets: (sheetsByWorkorder[w.$id] || []).slice(0, 20), })) }