import { Response } from 'express'; import { MyRequest } from '../types/Express'; import { ErrorResponse, SuccessResponse } from '../utils/Response'; import { UsersServices } from '../services/users/users.services'; import { ErrorResponseC, SuccessResponseC, } from '../services/services.response'; export const GetUsersBySuperAdmin = async ( req: MyRequest, res: Response ) => { const userId = req.user!.user_id; const result = await UsersServices.getUsersBySuperAdmin(res, userId); 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 GetUsersByAdmin = async (req: MyRequest, res: Response) => { // const userId = req.user!.user_id; const userId = Number(req.user!.user_id); const userRole = req.user!.role; const result = userRole === 'super_admin' ? await UsersServices.getUsersBySuperAdmin(res, userId) : await UsersServices.getUsersByAdmin(res, userId); 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 GetUserById = async (req: MyRequest, res: Response) => { const userId = Number(req.params.userId); const result = await UsersServices.getUserById(res, userId); 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 GetTeacherById = async (req: MyRequest, res: Response) => { const teacherId = Number(req.params.teacherId); const result = await UsersServices.getTeacherById(res, teacherId); 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 UpdateUserById = async (req: MyRequest, res: Response) => { const userId = Number(req.params.userId); const { email, firstName, lastName, role, phone = null, ...additionalInfo } = req.body; const result = await UsersServices.updateUserById(res, userId, { email, firstName, lastName, role, phone, additionalInfo, }); 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 UpdateTeacherById = async ( req: MyRequest, res: Response ) => { const teacherId = Number(req.params.teacherId); const { email, firstName, lastName, role, phone = null, ...additionalInfo } = req.body; const result = await UsersServices.updateTeacherById(res, teacherId, { email, firstName, lastName, role, phone, additionalInfo, }); 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 DeleteUserById = async (req: MyRequest, res: Response) => { const userId = Number(req.params.userId); const result = await UsersServices.deleteUserById(res, userId); 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 DeleteTeacherById = async ( req: MyRequest, res: Response ) => { const teacherId = Number(req.params.teacherId); const result = await UsersServices.deleteTeacherById(res, teacherId); 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 GetTeachersBySchool = async ( req: MyRequest, res: Response ) => { const schoolId = Number(req.params.schoolId); const result = await UsersServices.getTeachersBySchool(res, schoolId); 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 bulkDeleteUsers = async (req: MyRequest, res: Response) => { const { userIds } = req.body; const result = await UsersServices.bulkDeleteUsers(res, userIds); 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 bulkDeleteTeachers = async ( req: MyRequest, res: Response ) => { const { teacherIds } = req.body; const result = await UsersServices.bulkDeleteTeachers(res, teacherIds); 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 GetSchools = async (req: MyRequest, res: Response) => { const result = await UsersServices.getSchools(res); 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 GetTeachers = async (req: MyRequest, res: Response) => { const result = await UsersServices.getTeachers(res); 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 GetInstDesigners = async ( req: MyRequest, res: Response ) => { const result = await UsersServices.getInstDesigners(res); 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 GetStatistics = async (req: MyRequest, res: Response) => { const result = await UsersServices.getStatistics(); 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); };