Snai3i-MarketPlace / backend / src / routes / course.router.ts
course.router.ts
Raw
import { Router } from 'express';
import { validator } from '../middlewares/validator.middleware';
import {
  checkLogs,
  isAdmin,
  isInstDesign,
  isLoggedIn,
  isSchool,
  isTeacher,
} from '../middlewares/auth.middleware';
import {
  snai3iCourseValidators,
  marketCourseValidators,
  courseStatusValidator,
} from '../services/course/course.validator';
import {
  CreateMarketCourse,
  CreateSnai3iCourse,
  DeleteCourse,
  GetCoursesByInstructor,
  GetCoursesBySchool,
  GetCoursesByTeacher,
  GetMarketCourses,
  GetActiveMarketCourses,
  GetMarketCourseById,
  GetSnai3iCourseById,
  GetActiveSnai3iCourses,
  GetAllSnai3iCourses,
  UpdateCourseStatus,
  UpdateMarketCourse,
  UpdateSnai3iCourse,
  GetTags
} from '../controllers/course.controller';

const courseRouter = Router();

courseRouter.route('/snai3i').get(checkLogs, isLoggedIn, GetActiveSnai3iCourses);
courseRouter.route('/market').get(GetActiveMarketCourses);
courseRouter
  .route('/market/all')
  .get(checkLogs, isLoggedIn, isAdmin, GetMarketCourses);
courseRouter
  .route('/snai3i/all')
  .get(checkLogs, isLoggedIn, isAdmin, GetAllSnai3iCourses);
courseRouter
  .route('/instructor/:inst_designer_id')
  .get(checkLogs, isLoggedIn, isInstDesign, GetCoursesByInstructor);
courseRouter
  .route('/school/:school_id')
  .get(checkLogs, isLoggedIn, isSchool, GetCoursesBySchool);
courseRouter
  .route('/instructor/:school_id')
  .get(checkLogs, isLoggedIn, isSchool, GetCoursesBySchool);
courseRouter
  .route('/teacher/:teacher_id')
  .get(checkLogs, isLoggedIn, isTeacher, GetCoursesByTeacher);
courseRouter
  .route('/snai3i/:course_id')
  .get(checkLogs, isLoggedIn, GetSnai3iCourseById);
courseRouter.route('/market/:course_id').get(GetMarketCourseById);
courseRouter
  .route('/create/snai3i')
  .post(
    checkLogs,
    isLoggedIn,
    isAdmin,
    snai3iCourseValidators,
    validator,
    CreateSnai3iCourse
  );
courseRouter
  .route('/create/market')
  .post(
    checkLogs,
    isLoggedIn,
    isInstDesign,
    marketCourseValidators,
    validator,
    CreateMarketCourse
  );
courseRouter
  .route('/delete/:course_id')
  .delete(checkLogs, isLoggedIn, isInstDesign, DeleteCourse);
courseRouter
  .route('/update/snai3i/:course_id')
  .put(
    checkLogs,
    isLoggedIn,
    isInstDesign,
    snai3iCourseValidators,
    validator,
    UpdateSnai3iCourse
  );
courseRouter
  .route('/update/market/:course_id')
  .put(
    checkLogs,
    isLoggedIn,
    isInstDesign,
    marketCourseValidators,
    validator,
    UpdateMarketCourse
  );
courseRouter
  .route('/update/status/:course_id')
  .put(
    checkLogs,
    isLoggedIn,
    isAdmin,
    courseStatusValidator,
    validator,
    UpdateCourseStatus
  );

courseRouter.route('/tags').get(GetTags);

export default courseRouter;