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...
};