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

export interface ISatsangSchedule extends Document {
  name: string;
  type: string; // e.g. 'Weekly'
  recurrence: {
    dayOfWeek: number; // 0 (Sunday) to 6 (Saturday)
    time: string; // e.g. '19:00' (24h format)
    endTime: string; // e.g. '21:00' (24h format)
  };
  centerId: mongoose.Types.ObjectId;
  inchargeId: mongoose.Types.ObjectId; // References User
  startDate: Date;
  endDate?: Date;
  timezone: string; // IANA identifier, e.g. 'Asia/Kolkata'
  isActive: boolean;
  createdAt: Date;
  updatedAt: Date;
}

const SatsangScheduleSchema = new Schema<ISatsangSchedule>({
  name: { type: String, required: true, trim: true },
  type: { type: String, required: true, default: 'Weekly' },
  recurrence: {
    dayOfWeek: { type: Number, required: true, min: 0, max: 6 },
    time: { type: String, required: true }, // e.g. '19:00'
    endTime: { type: String, required: true } // e.g. '21:00'
  },
  centerId: { type: Schema.Types.ObjectId, ref: 'SatsangCenter', required: true },
  inchargeId: { type: Schema.Types.ObjectId, ref: 'User', required: true },
  startDate: { type: Date, required: true, default: Date.now },
  endDate: { type: Date },
  timezone: { type: String, required: true, default: 'Asia/Kolkata' },
  isActive: { type: Boolean, default: true }
}, {
  timestamps: true
});

export const SatsangSchedule: Model<ISatsangSchedule> =
  mongoose.models.SatsangSchedule || mongoose.model<ISatsangSchedule>('SatsangSchedule', SatsangScheduleSchema);
export default SatsangSchedule;
