import mongoose, { Schema, models, model } from "mongoose";
import { DOCUMENT_CATEGORIES, type DocumentCategory } from "@/lib/documentConstants";

export { DOCUMENT_CATEGORIES };
export type { DocumentCategory };

export interface DocumentTemplateDoc {
  _id: string;
  name: string;
  category: DocumentCategory;
  body: string;
  // Vorbelegung beim Erstellen eines neuen Dokuments aus dieser Vorlage —
  // pro erstelltem Dokument danach frei änderbar, siehe GeneratedDocument.
  defaultIncludeLetterhead: boolean;
  defaultIncludeFooter: boolean;
  defaultFooterText: string;
  // Empfängeradresse (Anschriftenfeld) — sinnvoll bei Briefen an eine
  // bestimmte Person (Kündigung, Verträge), nicht bei Zeugnissen o. Ä.
  defaultIncludeRecipientAddress: boolean;
  sortOrder: number;
  createdAt: Date;
}

const documentTemplateSchema = new Schema<DocumentTemplateDoc>(
  {
    name: { type: String, required: true, trim: true, maxlength: 150 },
    category: { type: String, enum: DOCUMENT_CATEGORIES, default: "other" },
    body: { type: String, required: true },
    defaultIncludeLetterhead: { type: Boolean, default: true },
    defaultIncludeFooter: { type: Boolean, default: true },
    defaultFooterText: { type: String, default: "" },
    defaultIncludeRecipientAddress: { type: Boolean, default: false },
    sortOrder: { type: Number, default: 0 },
  },
  { timestamps: true }
);

export const DocumentTemplate =
  (models.DocumentTemplate as mongoose.Model<DocumentTemplateDoc>) ||
  model<DocumentTemplateDoc>("DocumentTemplate", documentTemplateSchema);
