import { Response } from 'express'; import { MyRequest } from '../types/Express'; import { ErrorResponse, SuccessResponse } from '../utils/Response'; import { CourseService } from '../services/course/course.service'; import { ErrorResponseC, SuccessResponseC, } from '../services/services.response'; import { TagServices } from '../services/course/tag.service'; export const GetSnai3iCourseById = async ( req: MyRequest, res: Response ) => { const { course_id } = req.params; const result = await CourseService.getSnai3iCourseById(parseInt(course_id)); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetMarketCourseById = async ( req: MyRequest, res: Response ) => { const { course_id } = req.params; const result = await CourseService.getMarketCourseById(parseInt(course_id)); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetAllSnai3iCourses = async ( req: MyRequest, res: Response ) => { const result = await CourseService.getAllSnai3iCourses(); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetActiveSnai3iCourses = async ( req: MyRequest, res: Response ) => { const result = await CourseService.getActiveSnai3iCourses(); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetCoursesByInstructor = async ( req: MyRequest, res: Response ) => { const { inst_designer_id } = req.params; const result = await CourseService.getCoursesByInstructor( parseInt(inst_designer_id) ); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetCoursesBySchool = async ( req: MyRequest, res: Response ) => { const { school_id } = req.params; const result = await CourseService.getCoursesBySchool(parseInt(school_id)); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetCoursesByTeacher = async ( req: MyRequest, res: Response ) => { const { teacher_id } = req.params; const result = await CourseService.getCoursesByTeacher(parseInt(teacher_id)); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetMarketCourses = async ( req: MyRequest, res: Response ) => { const result = await CourseService.getMarketCourses(); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetActiveMarketCourses = async ( req: MyRequest, res: Response ) => { const result = await CourseService.getActiveMarketCourses(); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const CreateSnai3iCourse = async ( req: MyRequest, res: Response ) => { const { title, description, chapters, thumbnail } = req.body; const result = await CourseService.createSnai3iCourse( title, description, chapters, thumbnail ); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const CreateMarketCourse = async ( req: MyRequest, res: Response ) => { const { inst_designer_id, inst_designer_firstName, inst_designer_lastName, title, description, totalHours, price, tags, chaptersCount, thumbnail, videoThumbnail, status = 'pendingCreation', } = req.body; const result = await CourseService.createMarketCourse( title, description, totalHours, price, tags, chaptersCount, inst_designer_id ?? null, inst_designer_firstName ?? null, inst_designer_lastName ?? null, thumbnail, videoThumbnail, status ); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const DeleteCourse = async (req: MyRequest, res: Response) => { const { course_id } = req.params; const result = await CourseService.deleteCourse(parseInt(course_id)); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const UpdateSnai3iCourse = async ( req: MyRequest, res: Response ) => { const { course_id } = req.params; const result = await CourseService.updateCourse( parseInt(course_id), req.body ); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const UpdateMarketCourse = async ( req: MyRequest, res: Response ) => { const { course_id } = req.params; const { title, description, totalHours, price, tags, chaptersCount, status = 'pendingUpdating', thumbnail, videoThumbnail, } = req.body; const result = await CourseService.updateMarketCourse( parseInt(course_id), title, description, totalHours, price, tags, chaptersCount, status, thumbnail, videoThumbnail ); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const UpdateCourseStatus = async ( req: MyRequest, res: Response ) => { const { course_id } = req.params; const result = await CourseService.updateCourseStatus( parseInt(course_id), req.body.status ); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); }; export const GetTags = async (req: MyRequest, res: Response) => { const result = await TagServices.getTags(); if (result instanceof SuccessResponseC) return SuccessResponse( res, result.code, result.data, result.message, result.status ); if (result instanceof ErrorResponseC) return ErrorResponse(res, result.code, result.message, result.error); };