import mongoose, { Schema, models, model } from "mongoose";
import { ABSENCE_TYPES, type AbsenceType } from "@/lib/absenceConstants";

// Bewusst ein reines Abwesenheits-Log, kein volles Urlaubskonto mit
// Anspruch/Übertrag/Genehmigungs-Workflow — für die Teamgröße hier reicht
// "wer ist wann weg", selbst eingetragen, fürs ganze Team sichtbar.
export interface AbsenceDoc {
  _id: string;
  clientId: mongoose.Types.ObjectId;
  type: AbsenceType;
  startDate: Date;
  endDate: Date;
  note: string;
  createdAt: Date;
}

const absenceSchema = new Schema<AbsenceDoc>(
  {
    clientId: { type: Schema.Types.ObjectId, ref: "Client", required: true, index: true },
    type: { type: String, enum: ABSENCE_TYPES, default: "vacation" },
    startDate: { type: Date, required: true },
    endDate: { type: Date, required: true },
    note: { type: String, default: "", trim: true, maxlength: 300 },
  },
  { timestamps: { createdAt: true, updatedAt: false } }
);

export const Absence = (models.Absence as mongoose.Model<AbsenceDoc>) || model<AbsenceDoc>("Absence", absenceSchema);
