New Features: - Comprehensive course content management system - Multi-type content support (Documents, Images, Videos, Articles, Quizzes, Certificates) - File upload system with 100MB limit and type validation - Quiz system with multiple question types - Complete enrollment and subscriber management - Status tracking (pending, active, completed, cancelled) - Payment management (pending, paid, failed, refunded) - Progress tracking (0-100%) with automatic updates - Course capacity limits and validation - Certificate issuance tracking - Enrollment analytics and statistics Technical Improvements: - Enhanced file upload system with type validation - New database models: CourseContent, QuizQuestion - Comprehensive API endpoints for content and enrollment management - Role-based access control for all new features - Enhanced error handling and validation - File management with automatic cleanup This version provides a complete foundation for creating rich educational content and managing student enrollments.
49 lines
No EOL
1.9 KiB
JavaScript
49 lines
No EOL
1.9 KiB
JavaScript
const User = require('./User');
|
|
const Course = require('./Course');
|
|
const Enrollment = require('./Enrollment');
|
|
const Attendance = require('./Attendance');
|
|
const Assignment = require('./Assignment');
|
|
const CourseContent = require('./CourseContent');
|
|
const QuizQuestion = require('./QuizQuestion');
|
|
|
|
// User associations
|
|
User.hasMany(Course, { as: 'createdCourses', foreignKey: 'trainerId' });
|
|
User.hasMany(Enrollment, { as: 'enrollments', foreignKey: 'userId' });
|
|
User.hasMany(Attendance, { as: 'attendance', foreignKey: 'userId' });
|
|
User.hasMany(Assignment, { as: 'createdAssignments', foreignKey: 'trainerId' });
|
|
|
|
// Course associations
|
|
Course.belongsTo(User, { as: 'trainer', foreignKey: 'trainerId' });
|
|
Course.hasMany(Enrollment, { as: 'enrollments', foreignKey: 'courseId' });
|
|
Course.hasMany(Attendance, { as: 'attendance', foreignKey: 'courseId' });
|
|
Course.hasMany(Assignment, { as: 'assignments', foreignKey: 'courseId' });
|
|
|
|
// Enrollment associations
|
|
Enrollment.belongsTo(User, { as: 'user', foreignKey: 'userId' });
|
|
Enrollment.belongsTo(Course, { as: 'course', foreignKey: 'courseId' });
|
|
|
|
// Attendance associations
|
|
Attendance.belongsTo(User, { as: 'user', foreignKey: 'userId' });
|
|
Attendance.belongsTo(Course, { as: 'course', foreignKey: 'courseId' });
|
|
|
|
// Assignment associations
|
|
Assignment.belongsTo(User, { as: 'trainer', foreignKey: 'trainerId' });
|
|
Assignment.belongsTo(Course, { as: 'course', foreignKey: 'courseId' });
|
|
|
|
// Course Content associations
|
|
Course.hasMany(CourseContent, { as: 'contents', foreignKey: 'courseId' });
|
|
CourseContent.belongsTo(Course, { as: 'course', foreignKey: 'courseId' });
|
|
|
|
// Quiz Question associations
|
|
CourseContent.hasMany(QuizQuestion, { as: 'questions', foreignKey: 'contentId' });
|
|
QuizQuestion.belongsTo(CourseContent, { as: 'content', foreignKey: 'contentId' });
|
|
|
|
module.exports = {
|
|
User,
|
|
Course,
|
|
Enrollment,
|
|
Attendance,
|
|
Assignment,
|
|
CourseContent,
|
|
QuizQuestion
|
|
};
|