dss-server / src /models /GatePass.js
yeshwanth-kr's picture
Upload 43 files
8c7b7ca verified
const { mongoose, baseSchemaOptions } = require('./base');
const GatePassSchema = new mongoose.Schema({
employee_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Employee', required: true },
issue_date: { type: Date, required: true },
expiry_date: { type: Date, required: true },
fee_paid: { type: Boolean, default: false },
fee_amount: { type: Number, default: 100 },
barcode: { type: String, required: true, unique: true },
status: { type: String, enum: ['Pending_Fee', 'Active', 'Expired'], default: 'Pending_Fee' },
issued_by: { type: mongoose.Schema.Types.ObjectId, ref: 'User', default: null }
}, baseSchemaOptions());
GatePassSchema.pre('validate', function setExpiry(next) {
if (this.issue_date) {
const dt = new Date(this.issue_date);
dt.setDate(dt.getDate() + 90);
this.expiry_date = dt;
}
next();
});
GatePassSchema.index({ employee_id: 1, issue_date: 1 }, { unique: true });
GatePassSchema.index({ expiry_date: 1 });
module.exports = mongoose.model('GatePass', GatePassSchema);