import { connectDB } from "@/lib/db";
import { QmSubmission, type QmTarget } from "@/models/QmSubmission";
import { Client } from "@/models/Client";

// Extrahiert aus admin/qm/page.tsx — Vorlagen/Checklisten-Kasten (verlinkt
// nur weiter in den Dokumenten-Bereich) bewusst ausgelassen, das ist die
// eigentliche Ticket-Warteschlange (QM- und HR-Anliegen von Mitarbeitern).
export async function getQmSubmissions(permissions: { qm: boolean; hr: boolean }) {
  await connectDB();
  const targets: QmTarget[] = [];
  if (permissions.qm) targets.push("qm");
  if (permissions.hr) targets.push("hr");
  if (targets.length === 0) return [];

  const submissions = await QmSubmission.find({ target: { $in: targets } }).sort({ createdAt: -1 }).lean();
  const submitters = await Client.find({ _id: { $in: submissions.map((s) => String(s.submittedBy)) } }).select("name").lean();
  const submitterById = new Map(submitters.map((c) => [String(c._id), c]));

  return submissions.map((s) => ({
    _id: String(s._id),
    title: s.title,
    description: s.description,
    target: s.target,
    submitterName: s.anonymous ? "Anonym" : submitterById.get(String(s.submittedBy))?.name ?? "?",
    status: s.status,
    reviewNote: s.reviewNote || "",
    createdAt: new Date(s.createdAt).toISOString(),
    attachmentUrl: s.attachmentStoredName ? `/api/qm/${s._id}/${s.attachmentStoredName}` : null,
  }));
}
