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

165 lines
5.3 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 { Cohort, Certificate, KnowledgeAsses, Practicetest, User, Cource, Ketexamtest, } = require("../models");
exports.getCohortForId = async (req, res) => {
const cohortId = await helper.decryptUri(req.params.id)
let output = new Promise(async (resolve, reject) => {
const cohort = Cohort.findAll({
where: {
id: cohortId,
status: 0
},
include: [{
model: Certificate,
attributes: ['id', 'certificate_name']
}]
}).then(async (res) => {
if (res.length == 0) { reject() };
for (let j = 0; j < res.length; j++) {
res[j] = res[j].toJSON()
const knowassessments = await res[j].knowassessments;
const practicetests = await res[j].practicetests;
const userslist = await (res[j].userslist ? res[j].userslist : []);
let data1 = await KnowledgeAsses.findAll({
attributes: ['id', 'knowass_name'],
where: {
status: 0,
id: knowassessments
}
});
res[j].knowledge_asses = data1.map((a) => a.toJSON())
let data2 = await Practicetest.findAll({
attributes: ['id', 'practice_name'],
where: {
status: 0,
id: practicetests
}
})
res[j].practicetests = data2.map((a) => a.toJSON())
let data3 = await User.findAll({
attributes: ['id', 'name'],
where: {
status: 0,
id: userslist
}
})
res[j].user = data3.map((a) => a.toJSON())
if ((j + 1) == res.length) {
resolve(res);
}
}
});
}).catch((ex) => {
res.status(404).send(API._404({ message: `Cohort was not found` }));
})
res.status(200).send(API._200(await output));
};
exports.updateCohort = async (req, res) => {
const cohortId = await helper.decryptUri(req.params.id)
const cohort = await Cohort.findByPk(cohortId)
if (!cohort) {
res.status(404).send(API._404({ message: `Cohort with id: ${cohortId} was not found` }));
}
if (input.cohort_name) cohort.cohort_name = input.cohort_name
if (input.certi_id) cohort.certi_id = input.certi_id
if (input.location) cohort.location = input.location
if (input.userslist) {
cohort.userslist = input.userslist
}
if (input.knowassessments) cohort.knowassessments = input.knowassessments
if (input.practicetests) {
cohort.practicetests = input.practicetests;
}
if (input.cource_id) cohort.cource_id = input.cource_id
if (input.status) cohort.status = input.status
if (input.practice_time) cohort.practice_time = input.practice_time;
res.status(200).send(API._200(await cohort.save()));
};
exports.deleteCohort = async (req, res) => {
const cohortId = await helper.decryptUri(req.params.id)
const cohort = await Cohort.findByPk(cohortId);
if (!cohort) {
res.status(404).send(API._404({ message: `Cohort with id: ${cohortId} was not found` }));
}
cohort.status = 1
await db_helper.query("update users set course_id = null where course_id =" + cohortId);
await db_helper.query("delete from cohort_schedules where cohort_id=" + cohortId);
res.status(200).send(API._200(await cohort.save()));
};
exports.getAllCohorts = async (req, res) => {
var result = new Promise(async (resolve, reject) => {
const cohort = Cohort.findAll({
where: {
status: 0,
id: 1
},
include: [{
model: Certificate,
attributes: ['id', 'certificate_name']
}, {
model: Cource,
attributes: ['id', 'course_name']
}]
}).then(async (res1) => {
if (res1.length == 0) { reject() };
for (let j = 0; j < res1.length; j++) {
res1[j] = res1[j]
const knowassessments = await res1[j].knowassessments;
const practicetests = await res1[j].practicetests;
const CATExam = await res1[j].ketexamtests;
const userslist = await (res1[j].userslist ? res1[j].userslist : []);
let data1 = await KnowledgeAsses.findAll({
attributes: ['id', 'knowass_name'],
where: {
status: 0,
id: knowassessments
}
});
res1[j].knowassessments = data1.map((a) => a.toJSON())
let data2 = await Practicetest.findAll({
attributes: ['id', 'practice_name'],
where: {
status: 0,
id: practicetests
}
})
res1[j].practicetests = data2.map((a) => a.toJSON())
let data3 = await User.findAll({
attributes: ['id', 'name'],
where: {
status: 0,
id: userslist
}
})
res1[j].userslist = data3.map((a) => a.toJSON())
let data4 = await Ketexamtest.findAll({
attributes: ['id', 'ketexam_name'],
where: {
status: 0,
id: CATExam
}
})
res1[j].ketexamtests = data4.map((a) => a.toJSON())
if ((j + 1) == res1.length) {
resolve(res1);
}
}
});
}).catch((ex) => {
res.status(404).send(API._404({ message: 'Cohort was not found' }));
})
res.status(200).send(API._200(await result));
};