LMS/E-Learning-Backend-main/app/controllers/users.controller.js
2025-09-01 19:37:35 +05:30

198 lines
7.7 KiB
JavaScript

const db = require("../models");
const API = require('../helper/API_Response');
const db_helper = require("../helper/db_helper");
const helper = require("../helper/helper");
const { User } = require("../models");
exports.login = async (req, res) => {
const data = await helper.decryptRequest(req.body.data)
let email = data.email;
let password = await helper.getHashedPassword(data.password.toString());
const user = await User.findOne({ where: { email } });
if (!user) {
res.status(200).send(API._200({ message: "User not found", user_status: 404 }));
}
const passwordMatch = user.password === password;
if (!passwordMatch) {
res.status(200).send(API._200({ message: "Invalid password", user_status: 404 }));
}
res.status(200).send(API._200(user));
};
exports.addUser = async (req, res) => {
const data = await helper.decryptRequest(req.body.data)
if (data.password) data.password = await helper.getHashedPassword(data.password.toString());
data.remember_token = helper.generateAuthToken();
if (data.roll_id == 0) {
data.roll_id = 3;
data['allow_access'] = 0;
data['is_flashcard_user'] = 1;
}
if (data.signup_platform && data.signup_platform != '' && data.signup_platform != null) {
data['allow_access'] = 1;
data['is_flashcard_user'] = 1;
}
var err = [];
const user = await User.create(data).catch((ex) => {
err = ex.errors[0]
});
if (err.message)
res.status(409).send(API._404({ message: err.message }));
else
res.status(200).send(API._200(user));
};
exports.findAll = (req, res) => {
User.findAll().then(async data => {
if (!data) {
res.status(404).send(API._404({ message: "User not found" }));
}
let user = [];
user = data;
const promises = user.map(async user => {
const u_cohort = await db_helper.query(`SELECT id, cohort_name FROM cohorts WHERE FIND_IN_SET(${user.id}, userslist)`);
user['cohort'] = u_cohort[0];
return user;
});
const updatedUsers = await Promise.all(promises);
console.log(updatedUsers)
res.status(200).send(API._200(updatedUsers));
})
};
// Find a single User with an id
exports.findOne = async (req, res) => {
const ids = req.params.id;
const id = await helper.decryptUri(ids)
User.findByPk(id)
.then(data => {
if (data) {
res.send(data);
} else {
res.status(404).send({
message: `Cannot find User with id=${id}.`
});
}
})
.catch(err => {
res.status(500).send({
message: "Error retrieving User with id=" + id
});
});
};
// Update a User by the id in the request
exports.updateUser = async (req, res) => {
debugger
const id = await helper.decryptUri(req.params.id);
const input = await helper.decryptRequest(req.body.data)
// const user = await User.findByPk(await helper.decryptUri(event.pathParameters.id))
const user = await User.findByPk(id)
if (!user) {
res.status(404).send(API._404({ message: `User with id: ${id} not found` }));
}
if (input.name) user.name = input.name;
if (input.email) user.email = input.email;
if (input.roll_id) user.roll_id = input.roll_id;
if (input.permissions) user.permissions = input.permissions;
if (input.email_verified_at) user.email_verified_at = input.email_verified_at;
if (input.email_verified) user.email_verified = input.email_verified;
if (input.free_flashcard) user.free_flashcard = input.free_flashcard;
if (input.free_practque) user.free_practque = input.free_practque;
if (input.free_flashccsp) user.free_flashccsp = input.free_flashccsp;
if (input.pass_rest_code) user.pass_rest_code = input.pass_rest_code;
if (input.calling_code) user.calling_code = input.calling_code;
if (input.avatar_url) user.avatar_url = input.avatar_url;
if (input.is_first) user.is_first = input.is_first;
if (input.aliasname) user.aliasname = input.aliasname;
if (input.opt_in) user.opt_in = input.opt_in;
if (input.company_id) user.company_id = input.company_id;
if (input.address) user.address = input.address;
if (input.notes) user.notes = input.notes;
if (input.schedule_date) user.schedule_date = input.schedule_date;
if (input.allow_access) user.allow_access = input.allow_access;
if (input.authy_id) user.authy_id = input.authy_id;
if (input.mobile) user.mobile = input.mobile;
if (input.user_time_zone) user.user_time_zone = input.user_time_zone;
if (input.is_selfpaced) user.is_selfpaced = input.is_selfpaced;
if (input.mentor_id) user.mentor_id = input.mentor_id;
if (input.mentor_notes) user.mentor_notes = input.mentor_notes;
user.remember_token = helper.generateAuthToken();
if (input.password) user.password = helper.getHashedPassword(input.password);
res.status(200).send(API._200(await user.save()));
};
// Delete a User with the specified id in the request
exports.delete = async (req, res) => {
const userId = await helper.decryptRequest(req.params.id)
const sql = ["DELETE FROM `notes` WHERE `user_id` = " + userId,
"DELETE FROM `enrollusers` WHERE `u_id` = " + userId,
"DELETE FROM `flash_card_ans` WHERE `user_id` = " + userId,
"DELETE FROM `flashans_offlines` WHERE `UserId` = " + userId,
"DELETE FROM `flashcard_offlines` WHERE `UserId` = " + userId,
"DELETE FROM `discussions` WHERE `u_id` = " + userId,
"DELETE FROM `ketexam_ans` WHERE `user_id` = " + userId,
"DELETE FROM `know_ass_ques_ans` WHERE `user_id` = " + userId,
"DELETE FROM `practice_ans` WHERE `user_id` = " + userId,
"DELETE FROM `flashapp_syncs` WHERE `UserId` = " + userId,
"DELETE FROM `results` WHERE `user_id` = " + userId,
"DELETE FROM `study_mat_feedbacks` WHERE `user_id` = " + userId,
"DELETE FROM `schedules` WHERE `user_id` = " + userId,
"DELETE FROM `livequestion_ans` WHERE `user_id` = " + userId,
"DELETE FROM `login_logs` WHERE `user_id` = " + userId,
"DELETE FROM `user_logs` WHERE `user_id` = " + userId,
"DELETE FROM `test_logs` WHERE `user_id` = " + userId,
"DELETE FROM `teacher_accesses` WHERE `user_id` = " + userId,
"DELETE FROM `quedb_updates` WHERE `user_id` = " + userId,
"DELETE FROM `app_supports` WHERE `user_id` = " + userId,
"DELETE FROM `question_discussions` WHERE `user_id` = " + userId,
"DELETE FROM `notifications` WHERE `user_id` = " + userId,
"DELETE FROM `notification_settings` WHERE `user_id` = " + userId,
"DELETE FROM `chattings` WHERE `user_id` = " + userId,
"DELETE FROM `meeting_chats` WHERE `user_id` = " + userId,
"DELETE FROM `payment_transactions` WHERE `user_id` = " + userId,
"DELETE FROM `activity_trackers` WHERE `user_id` = " + userId,
"DELETE from activity_trackers where email in(select email from users where id=" + userId + ")",
"DELETE FROM `users` WHERE `id` = " + userId];
// const user = await db.sequelize.query(sql)
const user = await Promise.all(sql.map(query => db.sequelize.query(query)));
if (!user) {
res.status(404).send(API._404({ message: `User with id: ${userId} not found` }));
}
res.status(200).send(API._200(user));
};
// Find a single User with an id
exports.filterUser = async (req, res) => {
const data = await helper.decryptRequest(req.body.data)
const user = await User.findOne({
where: data
});
if (!user) {
res.status(404).send(API._404({ message: `User was not found` }));
}
res.status(200).send(API._200(user));
};
exports.verifyEmailOtp = async (req, res) => {
console.log("------------call---------------")
const input = req.body
const user = await User.findOne({
where: { email: input.email, email_otp: input.otp }
});
if (user) {
user.password = await helper.getHashedPassword(input.password.toString());
user.email_otp = null;
user.email_verified_at = new Date().toISOString()
user.email_verified = "true"
res.status(200).send(API._200(await user.save()));
} else {
res.status(400).send(API._400({ message: "Invalid otp" }));
}
};