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

export interface ISatsangCenter extends Document {
  name: string;
  address: string;
  location: {
    type: 'Point';
    coordinates: [number, number]; // [longitude, latitude]
  };
  areaId: mongoose.Types.ObjectId;
  cityId: mongoose.Types.ObjectId;
  stateId: mongoose.Types.ObjectId;
  countryId: mongoose.Types.ObjectId;
  contactPerson: string;
  contactMobile: string;
  timezone?: string; // Optional center local timezone IANA spec
  isActive: boolean;
}

const SatsangCenterSchema = new Schema<ISatsangCenter>({
  name: { type: String, required: true, trim: true },
  address: { type: String, required: true, trim: true },
  location: {
    type: {
      type: String,
      enum: ['Point'],
      required: true,
      default: 'Point'
    },
    coordinates: {
      type: [Number], // [longitude, latitude]
      required: true
    }
  },
  areaId: { type: Schema.Types.ObjectId, ref: 'Area', required: true },
  cityId: { type: Schema.Types.ObjectId, ref: 'City', required: true },
  stateId: { type: Schema.Types.ObjectId, ref: 'State', required: true },
  countryId: { type: Schema.Types.ObjectId, ref: 'Country', required: true },
  contactPerson: { type: String, required: true, trim: true },
  contactMobile: { type: String, required: true, trim: true },
  timezone: { type: String, default: 'Asia/Kolkata' },
  isActive: { type: Boolean, default: true },
});

// Create 2dsphere index for geospatial proximity search queries
SatsangCenterSchema.index({ location: '2dsphere' });

export const SatsangCenter: Model<ISatsangCenter> =
  mongoose.models.SatsangCenter || mongoose.model<ISatsangCenter>('SatsangCenter', SatsangCenterSchema);
export default SatsangCenter;
