import { connectDB } from "@/lib/db";
import { IntranetArticle } from "@/models/IntranetArticle";
import { Client } from "@/models/Client";

// Extrahiert aus admin/intranet/page.tsx — Nur-Lesen-Ausschnitt (Anlegen/
// Bearbeiten/Verschieben bleibt vorerst der Web-Ansicht vorbehalten, siehe
// Phase-Notiz: eher Redaktions-Werkzeug als täglicher Team-App-Nutzen).
export async function getVisibleIntranetArticles(viewerId: string, canEdit: boolean) {
  await connectDB();
  const viewer = viewerId ? await Client.findById(viewerId).select("departmentId").lean() : null;
  const viewerDepartmentId = viewer?.departmentId ? String(viewer.departmentId) : null;

  const items = await IntranetArticle.find(
    canEdit
      ? {}
      : {
          visible: true,
          $or: [{ visibleToDepartmentIds: { $size: 0 } }, ...(viewerDepartmentId ? [{ visibleToDepartmentIds: viewerDepartmentId }] : [])],
        }
  )
    .sort({ sortOrder: 1 })
    .lean();

  return items.map((item) => ({
    _id: String(item._id),
    title: item.title,
    content: item.content,
    category: item.category,
    visible: item.visible,
    pinned: item.pinned,
    lastEditedByName: item.lastEditedByName,
    updatedAt: item.updatedAt.toISOString(),
    departmentIds: item.visibleToDepartmentIds.map(String),
  }));
}
