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

export interface DepartmentDoc {
  _id: string;
  name: string;
  // Für die Intranet-Übersicht — Admins mit vollem Überblick über alle
  // Abteilungen sollen Beiträge auf einen Blick zuordnen können.
  color: string;
  // Fallback-Standard-Stundenlohn fürs Personalsystem (24.09.2026), falls
  // eine Position innerhalb dieser Abteilung keinen eigenen Wert hat — siehe
  // getEffectiveHourlyWage in lib/salary.ts für die genaue Rangfolge.
  defaultHourlyWage: number | null;
  sortOrder: number;
  createdAt: Date;
}

const departmentSchema = new Schema<DepartmentDoc>(
  {
    name: { type: String, required: true, trim: true, maxlength: 100 },
    color: { type: String, default: "#a3a1a6" },
    defaultHourlyWage: { type: Number, default: null, min: 0 },
    sortOrder: { type: Number, default: 0 },
  },
  { timestamps: true }
);

export const Department =
  (models.Department as mongoose.Model<DepartmentDoc>) || model<DepartmentDoc>("Department", departmentSchema);
