Keep the class schedule on the class itself so SMS and listings do not have to infer days and hours from sessions.
70 lines
1.0 KiB
JavaScript
70 lines
1.0 KiB
JavaScript
// /components/classes/classModel.js
|
|
'use strict';
|
|
|
|
const mongoose = require('mongoose');
|
|
|
|
const classSchema = new mongoose.Schema({
|
|
name: {
|
|
type: String,
|
|
required: true,
|
|
trim: true
|
|
},
|
|
course: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'Course',
|
|
required: true
|
|
},
|
|
professor: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'Professor'
|
|
},
|
|
students: [{
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'User'
|
|
}],
|
|
capacity: {
|
|
type: Number,
|
|
default: 30
|
|
},
|
|
tuitionFee: {
|
|
type: Number,
|
|
default: 0
|
|
},
|
|
startDate: {
|
|
type: Date
|
|
},
|
|
endDate: {
|
|
type: Date
|
|
},
|
|
days: {
|
|
type: [{
|
|
type: Number,
|
|
min: 0,
|
|
max: 6
|
|
}],
|
|
default: []
|
|
},
|
|
startTime: {
|
|
type: String,
|
|
trim: true,
|
|
default: ''
|
|
},
|
|
endTime: {
|
|
type: String,
|
|
trim: true,
|
|
default: ''
|
|
},
|
|
isActive: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
adminNotes: {
|
|
type: [String],
|
|
default: []
|
|
}
|
|
}, {
|
|
timestamps: true
|
|
});
|
|
|
|
module.exports = mongoose.model('Class', classSchema);
|