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

export interface IContactUs extends Document {
  name: string;
  email: string;
  subject: string;
  message: string;
  userId?: mongoose.Types.ObjectId | string;
  status: 'unread' | 'read' | 'replied' | 'archived';
  adminNotes?: string;
  createdAt: Date;
  updatedAt: Date;
}

const ContactUsSchema: Schema<IContactUs> = new Schema(
  {
    name: {
      type: String,
      required: [true, 'Name is required'],
      trim: true,
    },
    email: {
      type: String,
      required: [true, 'Email address is required'],
      trim: true,
      lowercase: true,
    },
    subject: {
      type: String,
      required: [true, 'Subject is required'],
      trim: true,
    },
    message: {
      type: String,
      required: [true, 'Message is required'],
      trim: true,
    },
    userId: {
      type: Schema.Types.ObjectId,
      ref: 'Student',
      required: false,
      default: null,
    },
    status: {
      type: String,
      enum: ['unread', 'read', 'replied', 'archived'],
      default: 'unread',
      index: true,
    },
    adminNotes: {
      type: String,
      trim: true,
    },
  },
  {
    timestamps: true,
  }
);

export const ContactUs: Model<IContactUs> =
  mongoose.models.ContactUs || mongoose.model<IContactUs>('ContactUs', ContactUsSchema);

export default ContactUs;
