update
This commit is contained in:
33
routes/academicYearRoutes.js
Normal file
33
routes/academicYearRoutes.js
Normal file
@@ -0,0 +1,33 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const academicYearController = require('../controllers/academicYearController');
|
||||
|
||||
/**
|
||||
* Academic Year Routes
|
||||
*/
|
||||
|
||||
// GET /api/academic-years - Get all academic years with pagination
|
||||
router.get('/', academicYearController.getAllAcademicYears);
|
||||
|
||||
// GET /api/academic-years/current - Get current academic year
|
||||
router.get('/current', academicYearController.getCurrentAcademicYear);
|
||||
|
||||
// GET /api/academic-years/datatypes/schema - Get academic year datatypes
|
||||
router.get('/datatypes/schema', academicYearController.getAcademicYearDatatypes);
|
||||
|
||||
// GET /api/academic-years/:id - Get academic year by ID
|
||||
router.get('/:id', academicYearController.getAcademicYearById);
|
||||
|
||||
// POST /api/academic-years - Create new academic year
|
||||
router.post('/', academicYearController.createAcademicYear);
|
||||
|
||||
// PUT /api/academic-years/:id - Update academic year
|
||||
router.put('/:id', academicYearController.updateAcademicYear);
|
||||
|
||||
// PUT /api/academic-years/:id/set-current - Set as current academic year
|
||||
router.put('/:id/set-current', academicYearController.setCurrentAcademicYear);
|
||||
|
||||
// DELETE /api/academic-years/:id - Delete academic year
|
||||
router.delete('/:id', academicYearController.deleteAcademicYear);
|
||||
|
||||
module.exports = router;
|
||||
27
routes/attendanceRoutes.js
Normal file
27
routes/attendanceRoutes.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const attendanceController = require('../controllers/attendanceController');
|
||||
|
||||
/**
|
||||
* Attendance Routes
|
||||
*/
|
||||
|
||||
// Get attendance logs with pagination
|
||||
router.get('/logs', attendanceController.getAttendanceLogs);
|
||||
|
||||
// Create attendance log (QR scan)
|
||||
router.post('/logs', attendanceController.createAttendanceLog);
|
||||
|
||||
// Get daily attendance summary
|
||||
router.get('/daily', attendanceController.getDailyAttendance);
|
||||
|
||||
// Process daily attendance (aggregate from logs)
|
||||
router.post('/process', attendanceController.processAttendance);
|
||||
|
||||
// Get attendance statistics
|
||||
router.get('/stats', attendanceController.getAttendanceStats);
|
||||
|
||||
// Get attendance datatypes
|
||||
router.get('/datatypes/schema', attendanceController.getAttendanceDatatypes);
|
||||
|
||||
module.exports = router;
|
||||
24
routes/authRoutes.js
Normal file
24
routes/authRoutes.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const authController = require('../controllers/authController');
|
||||
|
||||
/**
|
||||
* Authentication Routes - /api/auth
|
||||
*/
|
||||
|
||||
// Login
|
||||
router.post('/login', authController.login);
|
||||
|
||||
// Register
|
||||
router.post('/register', authController.register);
|
||||
|
||||
// Verify token
|
||||
router.post('/verify-token', authController.verifyToken);
|
||||
|
||||
// Logout
|
||||
router.post('/logout', authController.logout);
|
||||
|
||||
// Get current user
|
||||
router.get('/me', authController.me);
|
||||
|
||||
module.exports = router;
|
||||
28
routes/chapterRoutes.js
Normal file
28
routes/chapterRoutes.js
Normal file
@@ -0,0 +1,28 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const chapterController = require('../controllers/chapterController');
|
||||
|
||||
/**
|
||||
* Chapter Routes
|
||||
* Base path: /api/chapters
|
||||
*/
|
||||
|
||||
// Get all chapters
|
||||
router.get('/', chapterController.getAllChapters);
|
||||
|
||||
// Get chapter by ID
|
||||
router.get('/:id', chapterController.getChapterById);
|
||||
|
||||
// Get lessons in a chapter
|
||||
router.get('/:id/lessons', chapterController.getLessonsByChapter);
|
||||
|
||||
// Create new chapter
|
||||
router.post('/', chapterController.createChapter);
|
||||
|
||||
// Update chapter
|
||||
router.put('/:id', chapterController.updateChapter);
|
||||
|
||||
// Delete chapter
|
||||
router.delete('/:id', chapterController.deleteChapter);
|
||||
|
||||
module.exports = router;
|
||||
33
routes/classRoutes.js
Normal file
33
routes/classRoutes.js
Normal file
@@ -0,0 +1,33 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const classController = require('../controllers/classController');
|
||||
|
||||
/**
|
||||
* Class Routes
|
||||
*/
|
||||
|
||||
// GET /api/classes - Get all classes with pagination
|
||||
router.get('/', classController.getAllClasses);
|
||||
|
||||
// GET /api/classes/statistics - Get class statistics
|
||||
router.get('/statistics', classController.getClassStatistics);
|
||||
|
||||
// GET /api/classes/datatypes/schema - Get class datatypes
|
||||
router.get('/datatypes/schema', classController.getClassDatatypes);
|
||||
|
||||
// GET /api/classes/:id - Get class by ID
|
||||
router.get('/:id', classController.getClassById);
|
||||
|
||||
// GET /api/classes/:id/students - Get students in a class
|
||||
router.get('/:id/students', classController.getStudentsByClass);
|
||||
|
||||
// POST /api/classes - Create new class
|
||||
router.post('/', classController.createClass);
|
||||
|
||||
// PUT /api/classes/:id - Update class
|
||||
router.put('/:id', classController.updateClass);
|
||||
|
||||
// DELETE /api/classes/:id - Delete class
|
||||
router.delete('/:id', classController.deleteClass);
|
||||
|
||||
module.exports = router;
|
||||
34
routes/gameRoutes.js
Normal file
34
routes/gameRoutes.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const gameController = require('../controllers/gameController');
|
||||
|
||||
/**
|
||||
* Game Routes
|
||||
* Base path: /api/games
|
||||
*/
|
||||
|
||||
// Get all games
|
||||
router.get('/', gameController.getAllGames);
|
||||
|
||||
// Get game statistics
|
||||
router.get('/stats', gameController.getGameStats);
|
||||
|
||||
// Get games by type
|
||||
router.get('/type/:type', gameController.getGamesByType);
|
||||
|
||||
// Get game by ID
|
||||
router.get('/:id', gameController.getGameById);
|
||||
|
||||
// Create new game
|
||||
router.post('/', gameController.createGame);
|
||||
|
||||
// Update game
|
||||
router.put('/:id', gameController.updateGame);
|
||||
|
||||
// Delete game
|
||||
router.delete('/:id', gameController.deleteGame);
|
||||
|
||||
// Increment play count
|
||||
router.post('/:id/play', gameController.incrementPlayCount);
|
||||
|
||||
module.exports = router;
|
||||
33
routes/gradeRoutes.js
Normal file
33
routes/gradeRoutes.js
Normal file
@@ -0,0 +1,33 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const gradeController = require('../controllers/gradeController');
|
||||
|
||||
/**
|
||||
* Grade Routes
|
||||
*/
|
||||
|
||||
// Get grade datatypes (must be before /:id route)
|
||||
router.get('/datatypes/schema', gradeController.getGradeDatatypes);
|
||||
|
||||
// Get student grade summary (must be before /:id route)
|
||||
router.get('/summary/:student_id/:academic_year_id', gradeController.getStudentGradeSummary);
|
||||
|
||||
// Calculate student GPA
|
||||
router.post('/calculate-gpa', gradeController.calculateGPA);
|
||||
|
||||
// Get all grades with pagination
|
||||
router.get('/', gradeController.getAllGrades);
|
||||
|
||||
// Get grade by ID
|
||||
router.get('/:id', gradeController.getGradeById);
|
||||
|
||||
// Create new grade
|
||||
router.post('/', gradeController.createGrade);
|
||||
|
||||
// Update grade
|
||||
router.put('/:id', gradeController.updateGrade);
|
||||
|
||||
// Delete grade
|
||||
router.delete('/:id', gradeController.deleteGrade);
|
||||
|
||||
module.exports = router;
|
||||
30
routes/parentTaskRoutes.js
Normal file
30
routes/parentTaskRoutes.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const parentTaskController = require('../controllers/parentTaskController');
|
||||
|
||||
/**
|
||||
* Parent Task Routes
|
||||
*/
|
||||
|
||||
// Get task stats
|
||||
router.get('/stats', parentTaskController.getTaskStats);
|
||||
|
||||
// Get parent's assigned tasks
|
||||
router.get('/parent/:parent_id', parentTaskController.getParentTasks);
|
||||
|
||||
// Get student's tasks
|
||||
router.get('/student/:student_id', parentTaskController.getStudentTasks);
|
||||
|
||||
// Parent assigns task to student
|
||||
router.post('/assign', parentTaskController.assignTask);
|
||||
|
||||
// Complete task
|
||||
router.put('/:id/complete', parentTaskController.completeTask);
|
||||
|
||||
// Update task status
|
||||
router.put('/:id/status', parentTaskController.updateTaskStatus);
|
||||
|
||||
// Delete task
|
||||
router.delete('/:id', parentTaskController.deleteTask);
|
||||
|
||||
module.exports = router;
|
||||
30
routes/roomRoutes.js
Normal file
30
routes/roomRoutes.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const roomController = require('../controllers/roomController');
|
||||
|
||||
/**
|
||||
* Room Routes
|
||||
*/
|
||||
|
||||
// Get room datatypes (must be before /:id route)
|
||||
router.get('/datatypes/schema', roomController.getRoomDatatypes);
|
||||
|
||||
// Get rooms by school (must be before /:id route)
|
||||
router.get('/school/:school_id', roomController.getRoomsBySchool);
|
||||
|
||||
// Get all rooms with pagination
|
||||
router.get('/', roomController.getAllRooms);
|
||||
|
||||
// Get room by ID
|
||||
router.get('/:id', roomController.getRoomById);
|
||||
|
||||
// Create new room
|
||||
router.post('/', roomController.createRoom);
|
||||
|
||||
// Update room
|
||||
router.put('/:id', roomController.updateRoom);
|
||||
|
||||
// Delete room
|
||||
router.delete('/:id', roomController.deleteRoom);
|
||||
|
||||
module.exports = router;
|
||||
73
routes/schoolRoutes.js
Normal file
73
routes/schoolRoutes.js
Normal file
@@ -0,0 +1,73 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const schoolController = require('../controllers/schoolController');
|
||||
// const { authenticate, authorize } = require('../middleware/auth'); // Auth middleware
|
||||
|
||||
/**
|
||||
* School Routes
|
||||
* Base path: /api/schools
|
||||
*/
|
||||
|
||||
/**
|
||||
* @route GET /api/schools/datatypes/schema
|
||||
* @desc Get school data types
|
||||
* @access Protected
|
||||
*/
|
||||
router.get('/datatypes/schema', schoolController.getSchoolDatatypes);
|
||||
|
||||
/**
|
||||
* @route GET /api/schools
|
||||
* @desc Get all schools with pagination
|
||||
* @query page, limit, type, city, is_active
|
||||
* @access Public (or Protected based on requirements)
|
||||
*/
|
||||
router.get('/', schoolController.getAllSchools);
|
||||
|
||||
/**
|
||||
* @route GET /api/schools/:id
|
||||
* @desc Get school by ID
|
||||
* @access Public
|
||||
*/
|
||||
router.get('/:id', schoolController.getSchoolById);
|
||||
|
||||
/**
|
||||
* @route GET /api/schools/:id/stats
|
||||
* @desc Get school statistics
|
||||
* @access Protected
|
||||
*/
|
||||
router.get('/:id/stats', schoolController.getSchoolStats);
|
||||
|
||||
/**
|
||||
* @route POST /api/schools
|
||||
* @desc Create new school
|
||||
* @access Protected - Admin only
|
||||
*/
|
||||
router.post('/',
|
||||
// authenticate,
|
||||
// authorize(['system_admin', 'center_manager']),
|
||||
schoolController.createSchool
|
||||
);
|
||||
|
||||
/**
|
||||
* @route PUT /api/schools/:id
|
||||
* @desc Update school
|
||||
* @access Protected - Admin only
|
||||
*/
|
||||
router.put('/:id',
|
||||
// authenticate,
|
||||
// authorize(['system_admin', 'center_manager']),
|
||||
schoolController.updateSchool
|
||||
);
|
||||
|
||||
/**
|
||||
* @route DELETE /api/schools/:id
|
||||
* @desc Delete (soft delete) school
|
||||
* @access Protected - System Admin only
|
||||
*/
|
||||
router.delete('/:id',
|
||||
// authenticate,
|
||||
// authorize(['system_admin']),
|
||||
schoolController.deleteSchool
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
27
routes/studentRoutes.js
Normal file
27
routes/studentRoutes.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const studentController = require('../controllers/studentController');
|
||||
|
||||
/**
|
||||
* Student Routes
|
||||
*/
|
||||
|
||||
// Get student datatypes (must be before /:id route)
|
||||
router.get('/datatypes/schema', studentController.getStudentDatatypes);
|
||||
|
||||
// Get all students with pagination
|
||||
router.get('/', studentController.getAllStudents);
|
||||
|
||||
// Get student by ID
|
||||
router.get('/:id', studentController.getStudentById);
|
||||
|
||||
// Create new student
|
||||
router.post('/', studentController.createStudent);
|
||||
|
||||
// Update student
|
||||
router.put('/:id', studentController.updateStudent);
|
||||
|
||||
// Delete student (update status to dropped)
|
||||
router.delete('/:id', studentController.deleteStudent);
|
||||
|
||||
module.exports = router;
|
||||
36
routes/subjectRoutes.js
Normal file
36
routes/subjectRoutes.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const subjectController = require('../controllers/subjectController');
|
||||
|
||||
/**
|
||||
* Subject Routes
|
||||
*/
|
||||
|
||||
// GET /api/subjects - Get all subjects with pagination
|
||||
router.get('/', subjectController.getAllSubjects);
|
||||
|
||||
// GET /api/subjects/active - Get all active subjects
|
||||
router.get('/active', subjectController.getActiveSubjects);
|
||||
|
||||
// GET /api/subjects/datatypes/schema - Get subject datatypes
|
||||
router.get('/datatypes/schema', subjectController.getSubjectDatatypes);
|
||||
|
||||
// GET /api/subjects/code/:code - Get subject by code
|
||||
router.get('/code/:code', subjectController.getSubjectByCode);
|
||||
|
||||
// GET /api/subjects/:id - Get subject by ID
|
||||
router.get('/:id', subjectController.getSubjectById);
|
||||
|
||||
// GET /api/subjects/:id/chapters - Get chapters by subject
|
||||
router.get('/:id/chapters', subjectController.getChaptersBySubject);
|
||||
|
||||
// POST /api/subjects - Create new subject
|
||||
router.post('/', subjectController.createSubject);
|
||||
|
||||
// PUT /api/subjects/:id - Update subject
|
||||
router.put('/:id', subjectController.updateSubject);
|
||||
|
||||
// DELETE /api/subjects/:id - Delete subject
|
||||
router.delete('/:id', subjectController.deleteSubject);
|
||||
|
||||
module.exports = router;
|
||||
24
routes/subscriptionRoutes.js
Normal file
24
routes/subscriptionRoutes.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const subscriptionController = require('../controllers/subscriptionController');
|
||||
|
||||
/**
|
||||
* Subscription Routes
|
||||
*/
|
||||
|
||||
// Get all subscription plans
|
||||
router.get('/plans', subscriptionController.getPlans);
|
||||
|
||||
// Get subscription stats
|
||||
router.get('/stats', subscriptionController.getSubscriptionStats);
|
||||
|
||||
// Get user subscription status
|
||||
router.get('/user/:user_id', subscriptionController.getUserSubscription);
|
||||
|
||||
// Purchase subscription
|
||||
router.post('/purchase', subscriptionController.purchaseSubscription);
|
||||
|
||||
// Cancel subscription
|
||||
router.post('/:id/cancel', subscriptionController.cancelSubscription);
|
||||
|
||||
module.exports = router;
|
||||
30
routes/teacherRoutes.js
Normal file
30
routes/teacherRoutes.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const teacherController = require('../controllers/teacherController');
|
||||
|
||||
/**
|
||||
* Teacher Routes
|
||||
*/
|
||||
|
||||
// Get teacher datatypes (must be before /:id route)
|
||||
router.get('/datatypes/schema', teacherController.getTeacherDatatypes);
|
||||
|
||||
// Get all teachers with pagination
|
||||
router.get('/', teacherController.getAllTeachers);
|
||||
|
||||
// Get teacher by ID
|
||||
router.get('/:id', teacherController.getTeacherById);
|
||||
|
||||
// Create new teacher
|
||||
router.post('/', teacherController.createTeacher);
|
||||
|
||||
// Update teacher
|
||||
router.put('/:id', teacherController.updateTeacher);
|
||||
|
||||
// Update teacher profile (separate endpoint for user self-update)
|
||||
router.put('/:id/profile', teacherController.updateTeacherProfile);
|
||||
|
||||
// Delete teacher (update status to resigned)
|
||||
router.delete('/:id', teacherController.deleteTeacher);
|
||||
|
||||
module.exports = router;
|
||||
27
routes/trainingRoutes.js
Normal file
27
routes/trainingRoutes.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const trainingController = require('../controllers/trainingController');
|
||||
|
||||
/**
|
||||
* Training Routes
|
||||
*/
|
||||
|
||||
// Get training stats
|
||||
router.get('/stats', trainingController.getTrainingStats);
|
||||
|
||||
// Get staff training assignments
|
||||
router.get('/assignments/:staff_id', trainingController.getStaffAssignments);
|
||||
|
||||
// Assign training to staff
|
||||
router.post('/assignments', trainingController.assignTraining);
|
||||
|
||||
// Update assignment status
|
||||
router.put('/assignments/:id/status', trainingController.updateAssignmentStatus);
|
||||
|
||||
// Get staff achievements/certificates
|
||||
router.get('/achievements/:staff_id', trainingController.getStaffAchievements);
|
||||
|
||||
// Create achievement record
|
||||
router.post('/achievements', trainingController.createAchievement);
|
||||
|
||||
module.exports = router;
|
||||
41
routes/userRoutes.js
Normal file
41
routes/userRoutes.js
Normal file
@@ -0,0 +1,41 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const userController = require('../controllers/userController');
|
||||
|
||||
/**
|
||||
* User Routes
|
||||
*/
|
||||
|
||||
// === Authentication Routes ===
|
||||
// Login
|
||||
router.post('/login', userController.login);
|
||||
|
||||
// Register
|
||||
router.post('/register', userController.register);
|
||||
|
||||
// Verify token
|
||||
router.post('/verify-token', userController.verifyToken);
|
||||
|
||||
// Logout
|
||||
router.post('/logout', userController.logout);
|
||||
|
||||
// === User Management Routes ===
|
||||
// Get user datatypes (must be before /:id route)
|
||||
router.get('/datatypes/schema', userController.getUserDatatypes);
|
||||
|
||||
// Get all users with pagination
|
||||
router.get('/', userController.getAllUsers);
|
||||
|
||||
// Get user by ID
|
||||
router.get('/:id', userController.getUserById);
|
||||
|
||||
// Create new user
|
||||
router.post('/', userController.createUser);
|
||||
|
||||
// Update user
|
||||
router.put('/:id', userController.updateUser);
|
||||
|
||||
// Delete user (soft delete)
|
||||
router.delete('/:id', userController.deleteUser);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user