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

export interface ISystemSettings extends Document {
  attendanceInactiveThresholdDays: number;
  satsangOccurrenceGenerationDays: number;
  attendanceEarlyCheckInMinutes: number;
  attendanceBackEntryDays: number;
  nearestSatsangRadiusKm: number;
  defaultCountryId?: mongoose.Types.ObjectId;
  timezone: string;
  updatedBy: mongoose.Types.ObjectId;
  updatedAt: Date;
}

const SystemSettingsSchema = new Schema<ISystemSettings>({
  attendanceInactiveThresholdDays: { type: Number, required: true, default: 45 },
  satsangOccurrenceGenerationDays: { type: Number, required: true, default: 90 },
  attendanceEarlyCheckInMinutes: { type: Number, required: true, default: 60 },
  attendanceBackEntryDays: { type: Number, required: true, default: 7 },
  nearestSatsangRadiusKm: { type: Number, required: true, default: 50 },
  defaultCountryId: { type: Schema.Types.ObjectId, ref: 'Country' },
  timezone: { type: String, required: true, default: 'Asia/Kolkata' },
  updatedBy: { type: Schema.Types.ObjectId, ref: 'User', required: true }
}, {
  timestamps: { createdAt: false, updatedAt: true }
});

export const SystemSettings: Model<ISystemSettings> =
  mongoose.models.SystemSettings || mongoose.model<ISystemSettings>('SystemSettings', SystemSettingsSchema);
export default SystemSettings;
