'use strict'; const mongoose = require('mongoose'); const pendingStudentSchema = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true, index: true }, class: { type: mongoose.Schema.Types.ObjectId, ref: 'Class', required: true, index: true }, course: { type: mongoose.Schema.Types.ObjectId, ref: 'Course', required: true }, type: { type: String, enum: ['enrollment', 'class_request'], required: true }, paymentPlan: { type: String, enum: ['full', 'installments', 'deposit'], required: true }, tuitionFee: { type: Number, required: true, min: 0 }, classDiscount: { type: Number, default: 0, min: 0 }, paymentDiscount: { type: Number, default: 0, min: 0 }, totalAmount: { type: Number, required: true, min: 0 }, amountDueNow: { type: Number, required: true, min: 0 }, secondInstallmentAmount: { type: Number, default: 0, min: 0 }, secondInstallmentDueDate: { type: Date }, status: { type: String, enum: ['pending_payment', 'pending_review', 'approved', 'rejected', 'cancelled'], default: 'pending_review', index: true }, payment: { type: mongoose.Schema.Types.ObjectId, ref: 'Payment' }, paymentReference: { type: String, trim: true }, adminNotes: { type: String, trim: true, maxlength: 2000 }, reviewedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, reviewedAt: { type: Date } }, { timestamps: true }); pendingStudentSchema.index({ user: 1, class: 1, type: 1, status: 1 }); module.exports = mongoose.model('PendingStudent', pendingStudentSchema);