325 lines
10 KiB
JavaScript
325 lines
10 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, TeacherAccess, Books, Certificate, Company, ClientCohort } = require("../models");
|
|
|
|
exports.add = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.addData('AdminLogs', input)));
|
|
};
|
|
exports.admin_login = async (req, res) => {
|
|
const data = await helper.decryptRequest(req.body.data)
|
|
let email = data.email;
|
|
let roll_id = 1;
|
|
let password = await helper.getHashedPassword(data.password.toString());
|
|
const user = await User.findOne({ where: { email, roll_id } });
|
|
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.all = async (req, res) => {
|
|
res.status(200).send(API._200(await db_helper.allData('AdminLogs')));
|
|
};
|
|
exports.addbooks = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.addData('Books', input)));
|
|
};
|
|
exports.addcompany = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.addData('Company', input)));
|
|
};
|
|
exports.addteacher = 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();
|
|
const user = await User.create(data).catch((ex) => console.log(ex));
|
|
var teacher = {
|
|
"user_id": user.id,
|
|
"certi_Ids": data.certi_Ids
|
|
};
|
|
await TeacherAccess.create(teacher).catch((ex) => console.log(ex));
|
|
res.status(200).send(API._200(await user));
|
|
};
|
|
exports.alladmin = async (req, res) => {
|
|
var user = await User.findAll({
|
|
where: {
|
|
roll_id: 1
|
|
}
|
|
});
|
|
user = user.map((res) => res.toJSON());
|
|
if (!user) {
|
|
res.status(404).send(API._404({ message: 'User was not found' }));
|
|
}
|
|
var q = [];
|
|
for (let i = 0; i < user.length; i++) {
|
|
q.push(`select id,cohort_name from cohorts where FIND_IN_SET(${user[i].id},userslist)`);
|
|
}
|
|
var all = await db_helper.query(q.join('; '));
|
|
for (let j = 0; j < all[0].length; j++) {
|
|
user[j].cohort = all[0][j];
|
|
}
|
|
res.status(200).send(API._200(await user));
|
|
};
|
|
exports.alluser = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
const Op = db.Sequelize.Op;
|
|
var user = await User.findAndCountAll({
|
|
where: {
|
|
roll_id: 3,
|
|
status: 0,
|
|
[Op.or]: [{
|
|
email: {
|
|
[Op.like]: '%' + input.search + '%'
|
|
}
|
|
},
|
|
{
|
|
name: {
|
|
[Op.like]: '%' + input.search + '%'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
limit: [((input.page - 1) * input.limit), input.limit],
|
|
})
|
|
for (let i = 0; i < user.rows.length; i++) {
|
|
var all = await db_helper.query(`select id,cohort_name from cohorts where FIND_IN_SET(${user.rows[i].id},userslist)`);
|
|
user.rows[i].notes = all[0];
|
|
}
|
|
res.status(200).send(API._200(await user));
|
|
};
|
|
exports.allbooks = async (req, res) => {
|
|
const all = await Books.findAll({
|
|
where: {
|
|
status: 0
|
|
},
|
|
include: [{
|
|
model: Certificate,
|
|
attributes: ['id', 'certificate_name']
|
|
}]
|
|
})
|
|
res.status(200).send(API._200(await all));
|
|
};
|
|
exports.allclient = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
const Op = db.Sequelize.Op;
|
|
let mycomp = await db.sequelize.query("select GROUP_CONCAT(id) id from companies where status=0 and name like '%" + input.search + "%'")
|
|
.then(function (data) {
|
|
return Array.from(new Set(data[0]));
|
|
})
|
|
let sortBy = "id";
|
|
let direction = "asc";
|
|
if (input.active && input.direction) {
|
|
if (input.active != "chortname") {
|
|
sortBy = input.active;
|
|
direction = input.direction;
|
|
}
|
|
}
|
|
var clients = await User.findAndCountAll({
|
|
where: {
|
|
roll_id: 4,
|
|
status: 0,
|
|
[Op.or]: [{
|
|
email: {
|
|
[Op.like]: '%' + input.search + '%'
|
|
}
|
|
},
|
|
{
|
|
company_id: [mycomp[0].id]
|
|
},
|
|
{
|
|
name: {
|
|
[Op.like]: '%' + input.search + '%'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
order: [
|
|
[sortBy, direction]
|
|
],
|
|
})
|
|
let data = { count: clients.count, rows: [] };
|
|
for (let i = 0; i < clients.rows.length; i++) {
|
|
const cl = await ClientCohort.findAll({
|
|
where: {
|
|
status: 0,
|
|
user_id: clients.rows[i].id
|
|
}
|
|
});
|
|
const comp = await Company.findAll({
|
|
where: {
|
|
status: 0,
|
|
id: clients.rows[i].company_id
|
|
}
|
|
});
|
|
let cohort = [];
|
|
let ccid = 0;
|
|
if (cl.length > 0) {
|
|
cohort = await db_helper.query("select id,cohort_name from cohorts where status=0 and id in(" + cl[0].cohortIds + ")");
|
|
ccid = cl[0].id;
|
|
}
|
|
if (cohort.length > 0) {
|
|
cohort = cohort[0];
|
|
}
|
|
data.rows.push({
|
|
clientcohortId: ccid,
|
|
id: clients.rows[i].id,
|
|
name: clients.rows[i].name,
|
|
email: clients.rows[i].email,
|
|
roll_id: clients.rows[i].roll_id,
|
|
email_verified_at: clients.rows[i].email_verified_at,
|
|
email_verified: clients.rows[i].email_verified,
|
|
calling_code: clients.rows[i].calling_code,
|
|
mobile: clients.rows[i].mobile,
|
|
profile_img: clients.rows[i].profile_img,
|
|
permissions: clients.rows[i].permissions,
|
|
password: clients.rows[i].password,
|
|
remember_token: clients.rows[i].remember_token,
|
|
free_flashcard: clients.rows[i].free_flashcard,
|
|
free_practque: clients.rows[i].free_practque,
|
|
free_flashccsp: clients.rows[i].free_flashccsp,
|
|
pass_rest_code: clients.rows[i].pass_rest_code,
|
|
avatar_url: clients.rows[i].avatar_url,
|
|
is_first: clients.rows[i].is_first,
|
|
aliasname: clients.rows[i].aliasname,
|
|
is_temp: clients.rows[i].is_temp,
|
|
notes: clients.rows[i].notes,
|
|
address: clients.rows[i].address,
|
|
status: clients.rows[i].status,
|
|
company_id: clients.rows[i].company_id,
|
|
cohorts: cohort,
|
|
company: comp
|
|
})
|
|
}
|
|
res.status(200).send(API._200(await data));
|
|
};
|
|
exports.allteacher = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
const Op = db.Sequelize.Op;
|
|
let mycomp = await db.sequelize.query("select GROUP_CONCAT(id) id from companies where status=0 and name like '%" + input.search + "%'")
|
|
.then(function (data) {
|
|
return Array.from(new Set(data[0]));
|
|
})
|
|
let sortBy = "id";
|
|
let direction = "asc";
|
|
if (input.active && input.direction) {
|
|
if (input.active != "chortname") {
|
|
sortBy = input.active;
|
|
direction = input.direction;
|
|
}
|
|
}
|
|
var clients = await User.findAndCountAll({
|
|
where: {
|
|
roll_id: 4,
|
|
status: 0,
|
|
[Op.or]: [{
|
|
email: {
|
|
[Op.like]: '%' + input.search + '%'
|
|
}
|
|
},
|
|
{
|
|
company_id: [mycomp[0].id]
|
|
},
|
|
{
|
|
name: {
|
|
[Op.like]: '%' + input.search + '%'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
order: [
|
|
[sortBy, direction]
|
|
],
|
|
})
|
|
let data = { count: clients.count, rows: [] };
|
|
for (let i = 0; i < clients.rows.length; i++) {
|
|
const cl = await ClientCohort.findAll({
|
|
where: {
|
|
status: 0,
|
|
user_id: clients.rows[i].id
|
|
}
|
|
});
|
|
const comp = await Company.findAll({
|
|
where: {
|
|
status: 0,
|
|
id: clients.rows[i].company_id
|
|
}
|
|
});
|
|
let cohort = [];
|
|
let ccid = 0;
|
|
if (cl.length > 0) {
|
|
cohort = await db_helper.query("select id,cohort_name from cohorts where status=0 and id in(" + cl[0].cohortIds + ")");
|
|
ccid = cl[0].id;
|
|
}
|
|
if (cohort.length > 0) {
|
|
cohort = cohort[0];
|
|
}
|
|
data.rows.push({
|
|
clientcohortId: ccid,
|
|
id: clients.rows[i].id,
|
|
name: clients.rows[i].name,
|
|
email: clients.rows[i].email,
|
|
roll_id: clients.rows[i].roll_id,
|
|
email_verified_at: clients.rows[i].email_verified_at,
|
|
email_verified: clients.rows[i].email_verified,
|
|
calling_code: clients.rows[i].calling_code,
|
|
mobile: clients.rows[i].mobile,
|
|
profile_img: clients.rows[i].profile_img,
|
|
permissions: clients.rows[i].permissions,
|
|
password: clients.rows[i].password,
|
|
remember_token: clients.rows[i].remember_token,
|
|
free_flashcard: clients.rows[i].free_flashcard,
|
|
free_practque: clients.rows[i].free_practque,
|
|
free_flashccsp: clients.rows[i].free_flashccsp,
|
|
pass_rest_code: clients.rows[i].pass_rest_code,
|
|
avatar_url: clients.rows[i].avatar_url,
|
|
is_first: clients.rows[i].is_first,
|
|
aliasname: clients.rows[i].aliasname,
|
|
is_temp: clients.rows[i].is_temp,
|
|
notes: clients.rows[i].notes,
|
|
address: clients.rows[i].address,
|
|
status: clients.rows[i].status,
|
|
company_id: clients.rows[i].company_id,
|
|
cohorts: cohort,
|
|
company: comp
|
|
})
|
|
}
|
|
res.status(200).send(API._200(await data));
|
|
};
|
|
|
|
exports.deletebook = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.statusChange('Books', input.id)));
|
|
};
|
|
exports.deletecompany = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.statusChange('Company', input.id)));
|
|
};
|
|
exports.updatebooks = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.update('Books', input)));
|
|
};
|
|
exports.updatecompany = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
res.status(200).send(API._200(await db_helper.update('Company', input)));
|
|
};
|
|
exports.updateteacher = async (req, res) => {
|
|
const input = await helper.decryptRequest(req.body.data);
|
|
const user = await User.findByPk(input.id)
|
|
if (!user) {
|
|
res.status(404).send(API._404({ message: `User with id: ${input.id} was not found` }));
|
|
}
|
|
if (input.name) user.name = input.name;
|
|
if (input.mobile) user.mobile = input.mobile;
|
|
user.remember_token = helper.generateAuthToken();
|
|
let success = await user.save();
|
|
if (input.certi_Ids) {
|
|
await db_helper.query("UPDATE teacher_accesses set certi_Ids='" + input.certi_Ids + "' WHERE user_id=" + input.id);
|
|
}
|
|
res.status(200).send(API._200(await success));
|
|
}; |