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;