import mongoose, { Document, Schema, Types } from 'mongoose';

export interface ISession {
  check_in: Date;
  check_out: Date | null;
}

export interface IAttendanceDocument extends Document {
  user: Types.ObjectId;
  date: string; // YYYY-MM-DD format for easy comparison
  sessions: ISession[];
  total_minutes: number;
  createdAt: Date;
  updatedAt: Date;
}

const attendanceSchema = new Schema<IAttendanceDocument>(
  {
    user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
    date: { type: String, required: true }, // "2026-04-01"
    sessions: [
      {
        check_in: { type: Date, required: true },
        check_out: { type: Date, default: null },
      },
    ],
    total_minutes: { type: Number, default: 0 },
  },
  { timestamps: true },
);

attendanceSchema.index({ user: 1, date: 1 }, { unique: true });

export default mongoose.model<IAttendanceDocument>('Attendance', attendanceSchema);
