import mongoose, { Schema, models, model } from "mongoose";

// Interne Abläufe/SOPs fürs Team — bewusst rein deutschsprachig wie der
// restliche Admin-Bereich, keine EN-Felder nötig (kein öffentliches Pendant
// wie bei der FAQ).
export interface IntranetArticleDoc {
  _id: string;
  title: string;
  content: string;
  category: string;
  // Leer = für alle Abteilungen sichtbar. Nicht-leer = nur für Mitarbeiter:innen
  // dieser Abteilungen (plus jede:n mit intranet_edit, siehe Seite) — Ansehen
  // bleibt trotzdem ohne eigenes Recht möglich, nur eben nach Abteilung gefiltert.
  visibleToDepartmentIds: mongoose.Types.ObjectId[];
  pinned: boolean;
  visible: boolean;
  sortOrder: number;
  lastEditedByName: string;
  createdAt: Date;
  updatedAt: Date;
}

const intranetArticleSchema = new Schema<IntranetArticleDoc>(
  {
    title: { type: String, required: true, trim: true },
    content: { type: String, required: true, trim: true },
    category: { type: String, default: "Allgemein", trim: true },
    visibleToDepartmentIds: { type: [Schema.Types.ObjectId], ref: "Department", default: [] },
    pinned: { type: Boolean, default: false },
    visible: { type: Boolean, default: true },
    sortOrder: { type: Number, default: 0 },
    lastEditedByName: { type: String, default: "", trim: true },
  },
  { timestamps: true }
);

export const IntranetArticle =
  (models.IntranetArticle as mongoose.Model<IntranetArticleDoc>) ||
  model<IntranetArticleDoc>("IntranetArticle", intranetArticleSchema);
