HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/evaluation-leave/controllers/usercontroller.js
// controllers/userController.js
const User = require("../models/users");
const Email = require("../models/email");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const config = require("../config/config");

module.exports = {
  register: async (req, res) => {
    // fname, lname, email, org_id, password
    const { fname, lname, email, password, roleid, departmentId } = req.body;

    try {
      const user = await User.findUserByEmail(email);
      if (user) {
        return res.status(400).json({
          message:
            "A user with that Email already exist. please use a different email address",
        });
      }

      const hashedPassword = bcrypt.hashSync(
        password,
        bcrypt.genSaltSync(10),
        null
      );

      const newUser = {
        fname,
        lname,
        email,
        password: hashedPassword,
        roleid,
        departmentId,
        created_by: 1,
        active_yn: 1,
        //updatedAt: new Date(),
      };

      const result = await User.createUser(newUser);

      console.log(`${email}, successfully registerd on ${new Date()}`);

      /**Sending Email on succesful Registration */

      const subject = "Welcome to Riara University Self Evaluation System";
      const content = `Hello, <br>
        Thank you for signing up. Your account has been setup succesfully ... <br>
        Please Login and proceed to Evaluate yourself. <br>
	<h2 style="text-align: center;"><b>Click this link to access: ${newUser.reg_code}</b></h2>`;
      /**Activate letter */
      const mailResult = await Email.sendEmail(newUser.email, subject, content);
      return res.status(201).json({ result, mailResult });

      // return res.status(201).json(result, loginResult);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  resetUserPassword: async (req, res) => {
    const { email, password, reg_code } = req.body;

    try {
      const user = await User.findUserByEmail(email);
      if (!user) {
        return res.status(400).json({
          message: "Your Account has Issues please contact system Admin",
        });
      }

      const hashedPassword = bcrypt.hashSync(
        password,
        bcrypt.genSaltSync(10),
        null
      );

      const newDetails = {
        email,
        password: hashedPassword,
        reg_code,
        updated_at: new Date(),
      };

      const result = await User.resetUserPassword(newDetails);

      console.log(`${email}, successfully Reset Password on ${new Date()}`);

      return res.status(201).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  hrUsers: async (req, res) => {
    try {
      const result = await User.findUsersforHR();
      if (result.length < 1) {
        return res
          .status(404)
          .json({ message: "There are no active users." });
      }

      console.log(
        `All active Users successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },


  allUserTypes: async (req, res) => {
    try {
      const result = await User.findAllUserTypes();
      if (result.length < 1) {
        return res
          .status(404)
          .json({ message: "There are no active users types." });
      }

      console.log(
        `All active User types successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  departmentUsers: async (req, res) => {
    const { departmentId } = req.body;
    try {
      const dataNeeded = {
        departmentId,
        userId: req.userId,
      };
      const result = await User.findUsersByDepartment(dataNeeded);
      if (result.length < 1) {
        return res
          .status(404)
          .json({ message: "There are no users in that Department." });
      }

      console.log(
        `Users with departmentid ${departmentId}, successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  headofDepartmentUsers: async (req, res) => {
    try {
      const dataNeeded = {
        userId: req.userId,
      };
      const result = await User.findHODuserDepartment(dataNeeded);
      if (result.length < 1) {
        return res
          .status(404)
          .json({ message: "There are no Head of Department set yet." });
      }

      console.log(
        `Head of department Users, successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  findSupervisorsLeave: async (req, res) => {
    try {
      const result = await User.findHODForLeave();
      if (result.length < 1) {
        return res.status(404).json({
          message: "There are no Head of Department/ Supervisors set yet.",
        });
      }

      console.log(
        `Head of department/ Supervisors Users, successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  findSupervisorsLeaveHod: async (req, res) => {
    try {
      const result = await User.findHODForLeaveHod();
      if (result.length < 1) {
        return res.status(404).json({
          message: "There are no Supervisors(DVC) set yet.",
        });
      }

      console.log(
        `Supervisors (DVC) Users, successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  findSupervisorsLeaveDvc: async (req, res) => {
    try {
      const result = await User.findHODForLeaveDvc();
      if (result.length < 1) {
        return res.status(404).json({
          message: "There are no Supervisors (VC) set yet.",
        });
      }

      console.log(
        `Supervisors (VC) Users, successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },

  
  findAllUsers: async (req, res) => {
    try {
      const result = await User.findAllActiveUser();
      if (result.length < 1) {
        return res.status(404).json({
          message: "There are no Users.",
        });
      }
      console.log(
        `All Users, successfully pulled on ${new Date()} `
      );

      return res.status(200).json(result);
    } catch (error) {
      console.error("Error occurred:", error);
      res.status(500).json({ error: true, message: "Internal Server Error" });
    }
  },
  // ...other controllers...
};