diff --git a/src/api/Controllers/DepartmentController.js b/src/api/Controllers/DepartmentController.js index 824ebb2..4076923 100644 --- a/src/api/Controllers/DepartmentController.js +++ b/src/api/Controllers/DepartmentController.js @@ -1,58 +1,54 @@ -const DepartmentService = require('../Services/DepartmentServices'); -const path = require('path'); -const base = path.resolve(__dirname, '../../../'); -const sequelize = require(path.join(base, 'src', 'config', 'db.js')); -const { DataTypes } = require('sequelize'); -const { UpdateProgram } = require('./ProgramCourseController'); -const { error } = require('console'); -const DepartmentModel = require('../Models/department')(sequelize, DataTypes) +import DepartmentService from '../Services/DepartmentServices.js'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { DataTypes } from 'sequelize'; +import { UpdateProgram } from './ProgramCourseController.js'; +import sequelize from '../../../src/config/db.js'; +import defineDepartmentModel from '../Models/department.js'; -exports.getAllDeparments = async(req, res)=>{ - try{ +// Fix __dirname in ES modules +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); - let {top, page, limit} = req.body +// Initialize model +const DepartmentModel = defineDepartmentModel(sequelize, DataTypes); + +// ✅ Get All Departments +export const getAllDepartments = async (req, res) => { + try { + let { top, page, limit } = req.body; // Convert string query params to numbers top = parseInt(top); page = parseInt(page); limit = parseInt(limit); - let queryOptions = { - order: [['createdAt', 'DESC']] // latest first + const queryOptions = { + order: [['createdAt', 'DESC']], // latest first }; if (top) { // Return only top X records queryOptions.limit = top; - } - else if (page && limit) { - // Apply pagination - const offset = (page - 1) * limit; + } else if (page && limit) { queryOptions.limit = limit; - queryOptions.offset = offset; + queryOptions.offset = (page - 1) * limit; } - DepartmentModel.findAll(queryOptions) - .then((departments) => { - res.status(200).json({ - status: 'success', - data: departments.toJson() - }); - }) - .catch((error) => { - res.status(500).json({ - status: 'error', - message: error.message - }); - }); + const departments = await DepartmentModel.findAll(queryOptions); - }catch(error){ - res.status(error.status || 500).json({ error: error.message || 'Internal Server Error' }); - } -} - - -exports.getDepartmentByID = async (req, res) => { + res.status(200).json({ + status: 'success', + data: departments, // No need for toJson() + }); + } catch (error) { + res + .status(error.status || 500) + .json({ error: error.message || 'Internal Server Error' }); + } +}; +// ✅ Get Department by ID +export const getDepartmentByID = async (req, res) => { try { const { id } = req.params; const department = await DepartmentService.getDepartmentByID(id); @@ -68,10 +64,11 @@ exports.getDepartmentByID = async (req, res) => { } }; -exports.createDeparment = async (req, res) => { +// ✅ Create Department +export const createDepartment = async (req, res) => { try { - const addDeparment = await DepartmentService.CreateDeparment(req.body); - if(addDeparment){ + const addDepartment = await DepartmentService.CreateDeparment(req.body); + if (addDepartment) { res.status(201).json({ message: addDeparment.message, data: addDeparment.data @@ -82,7 +79,8 @@ exports.createDeparment = async (req, res) => { } }; -exports.UpdateDepartment = async (req, res) => { +// ✅ Update Department +export const updateDepartment = async (req, res) => { try { const update = await DepartmentService.UpdateDepartment(req, res); res.status(201).json({ message: update.message }); @@ -91,11 +89,11 @@ exports.UpdateDepartment = async (req, res) => { } }; -exports.DeleteDepartment = async(req, res)=>{ - try{ - const deleteDepartment = await DepartmentService.DeleteDepartment(req,res) - }catch(error){ +// ✅ Delete Department +export const deleteDepartment = async (req, res) => { + try { + await DepartmentService.DeleteDepartment(req, res); + } catch (error) { res.status(500).json({ message: error.message }); } -} - +}; diff --git a/src/api/Controllers/InstructorController.js b/src/api/Controllers/InstructorController.js index b4b7d1e..acd12c1 100644 --- a/src/api/Controllers/InstructorController.js +++ b/src/api/Controllers/InstructorController.js @@ -1,18 +1,24 @@ -const InstructorService = require('../Services/InstructorServices'); -const path = require('path'); -const base = path.resolve(__dirname, '../../../'); -const sequelize = require(path.join(base, 'src', 'config', 'db.js')); -const { DataTypes } = require('sequelize'); -const { error } = require('console'); -const User = require("../Models/User")(sequelize, DataTypes) -const InstructorModel = require('../Models/instructor')(sequelize, DataTypes) -const { verifyWebToken } = require("../../Middlewares/authMiddleware"); +import InstructorService from "../Services/InstructorServices.js"; +import path from "path"; +import { fileURLToPath } from "url"; +import { DataTypes } from "sequelize"; +import sequelize from "../../config/db.js"; +import UserModelDefiner from "../Models/user.js"; +import InstructorModelDefiner from "../Models/instructor.js"; +import { verifyWebToken } from "../../Middlewares/authMiddleware.js"; -exports.CreateInstructor = async (req, res) => { - try { +// Resolve __dirname (ESM compatible) +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const base = path.resolve(__dirname, "../../../"); - const {id, ...data} = req.body +const User = UserModelDefiner(sequelize, DataTypes); +const Instructor = InstructorModelDefiner(sequelize, DataTypes); +// ✅ Create Instructor +export const CreateInstructor = async (req, res) => { + try { + const {id, ...data} = req.body const findInstructor = await Instructor.findOne({ where: { user_id: id } }); if (findInstructor) { @@ -35,29 +41,35 @@ exports.CreateInstructor = async (req, res) => { }); } }; -exports.UpdateInstructor = async(req, res)=>{ - try{ - const update = await InstructorService.UpdateInstructor(req.param.id, req.body); - - return res.status(201).JSON({ - success: true, - message: update.message - }) - }catch(error ){ - throw error; - } -} -exports.DeleteInstructor = async (req, res) => { - try { - const DeleteInstructor = await InstructorService.DeleteInstructor(req.params.id); - return res.status(200).json({ - success:true, - message: "Instructor deleted successfully" - }); - } catch (error) { - return res.status(500).json({ - message: "Error deleting instructor", - error: error.message - }); - } -}; +// ✅ Update Instructor +export const UpdateInstructor = async (req, res) => { + try { + const update = await InstructorService.UpdateInstructor(req.params.id, req.body); + + return res.status(201).json({ + success: true, + message: update.message, + }); + } catch (error) { + return res.status(500).json({ + message: "Error updating instructor", + error: error.message, + }); + } +}; +// ✅ Delete Instructor +export const DeleteInstructor = async (req, res) => { + try { + await InstructorService.DeleteInstructor(req.params.id); + + return res.status(200).json({ + success: true, + message: "Instructor deleted successfully", + }); + } catch (error) { + return res.status(500).json({ + message: "Error deleting instructor", + error: error.message, + }); + } +}; diff --git a/src/api/Controllers/ProgramCourseController.js b/src/api/Controllers/ProgramCourseController.js index 98bd42a..6e458c1 100644 --- a/src/api/Controllers/ProgramCourseController.js +++ b/src/api/Controllers/ProgramCourseController.js @@ -1,11 +1,15 @@ -const ProgramService = require("../Services/ProgramCourseServices") -const path = require('path'); -const base = path.resolve(__dirname, '../../../'); -const sequelize = require(path.join(base, 'src', 'config', 'db.js')); -const { DataTypes } = require('sequelize'); -const ProgramCourse = require('../Models/programcourse')(sequelize, DataTypes) +import ProgramService from "../Services/ProgramCourseServices.js"; +import path from "path"; +import { fileURLToPath } from "url"; +import { DataTypes } from "sequelize"; +import sequelize from "../../../src/config/db.js"; +import defineProgramCourse from "../Models/programcourse.js"; -exports.createProgram = async (req, res) => { +const ProgramCourse = defineProgramCourse(sequelize, DataTypes); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +// ✅ Create Program +export const createProgram = async (req, res) => { try { const addProgram = await ProgramService.createProgram(req.body); if(addProgram){ @@ -19,7 +23,8 @@ exports.createProgram = async (req, res) => { } }; -exports.getAllPrograms = async (req, res) => { +// ✅ Get All Programs +export const getAllPrograms = async (req, res) => { try { let { top, page, limit } = req.body; @@ -28,8 +33,8 @@ exports.getAllPrograms = async (req, res) => { page = parseInt(page); limit = parseInt(limit); - let queryOptions = { - order: [['createdAt', 'DESC']] // latest first + const queryOptions = { + order: [["createdAt", "DESC"]], }; if (top) { @@ -46,18 +51,20 @@ exports.getAllPrograms = async (req, res) => { const programs = await ProgramCourse.findAll(queryOptions); res.status(200).json({ - status: 'success', - data: programs + status: "success", + data: programs, }); } catch (error) { - res.status(500).json({ - status: 'error', - message: error.message + res.status(500).json({ + status: "error", + message: error.message, }); } }; -exports.UpdateProgram = async (req, res) => { + +// ✅ Update Program +export const UpdateProgram = async (req, res) => { try { const result = await ProgramService.UpdateProgram(req.body); @@ -82,6 +89,8 @@ exports.UpdateProgram = async (req, res) => { }); } }; -exports.DeleteProgram = async(id)=>{ - return await ProgramService.DeleteProgram(id) -} \ No newline at end of file + +// ✅ Delete Program +export const DeleteProgram = async (id) => { + return await ProgramService.DeleteProgram(id); +}; diff --git a/src/api/Controllers/userController.js b/src/api/Controllers/userController.js index 74fecb8..54774b2 100644 --- a/src/api/Controllers/userController.js +++ b/src/api/Controllers/userController.js @@ -1,6 +1,7 @@ -const userService = require('../Services/UserService'); +import userService from "../Services/UserService.js"; -exports.registerUser = async (req, res) => { +// ✅ Register User +export const registerUser = async (req, res) => { try { const newUser = await userService.registerUser(req.body); if(newUser){ @@ -14,24 +15,25 @@ exports.registerUser = async (req, res) => { } }; -exports.LoginUser = async(req,res)=>{ - try{ - - const isLogin = await userService.LoginUser(req.body) +// ✅ Login User +export const LoginUser = async (req, res) => { + try { + const isLogin = await userService.LoginUser(req.body); - res.cookie('token', isLogin.token, { - httpOnly: true, - secure: process.env.NODE_ENV === 'production', - sameSite: 'strict', - maxAge: 60 * 60 * 1000 - }); - if(isLogin) { - return res.status(200).json({ - message: 'Login successful', + if(isLogin) { + res.cookie("token", isLogin.token, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + sameSite: 'strict', + maxAge: 60 * 60 * 1000 }); - } + + return res.status(200).json({ + message: 'Login successful', + }); + } }catch(error){ res.status(error.status || 500).json({ error: error.message || 'Internal Server Error' }); } -} +};