File size: 1,029 Bytes
8c7b7ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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);