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

185 lines
6.1 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 { Acronyms, Certificate, StudyMaterial, Domain, Subdomain, Topic, Cource, Video } = require("../models");
exports.studyMaterialGetById = async (req, res) => {
const studyMaterialId = await helper.decryptUri(req.params.id)
const studyMaterial = await StudyMaterial.findOne({
where: {
id: studyMaterialId,
status: 0,
},
include: [{
model: Domain,
attributes: ['id', 'domin_name']
}, {
model: Subdomain,
attributes: ['id', 'subdomain_name']
}, {
model: Topic,
attributes: ['id', 'topic_name']
}, {
model: Certificate,
attributes: ['id', 'certificate_name']
}]
});
if (!studyMaterial) {
res.status(404).send(API._404({ message: `studyMaterial with id: ${id} was not found` }));
}
res.status(200).send(API._200(await studyMaterial));
};
exports.deleteStudyMaterial = async (req, res) => {
const studyMaterialId = await helper.decryptUri(req.params.id)
const studyMaterial = await StudyMaterial.findByPk(studyMaterialId).then(async res => {
res.set("status", 1);
return await res.save();
})
res.status(200).send(API._200(await studyMaterial));
};
exports.updateStudyMaterial = async (req, res) => {
const id = await helper.decryptUri(req.params.id)
const input = await helper.decryptRequest(req.body.data);
const studyMaterial = await StudyMaterial.findByPk(id)
if (!studyMaterial) {
res.status(404).send(API._404({ message: `Certificate with id: ${id} was not found` }));
}
if (input.d_id) studyMaterial.d_id = input.d_id
if (input.sd_id) studyMaterial.sd_id = input.sd_id
if (input.certi_id) studyMaterial.certi_id = input.certi_id
if (input.cource_id) studyMaterial.cource_id = input.cource_id
if (input.topic_id) studyMaterial.topic_id = input.topic_id
if (input.subtopic_id) studyMaterial.subtopic_id = input.subtopic_id
if (input.title) studyMaterial.title = input.title
if (input.content) studyMaterial.content = input.content
if (input.status) studyMaterial.status = input.status
if (input.pdf_files) studyMaterial.pdf_files = input.pdf_files
if (input.ppt_files) studyMaterial.ppt_files = input.ppt_files
if (input.image_files) studyMaterial.image_files = input.image_files
if (input.excel_files) studyMaterial.excel_files = input.excel_files
res.status(200).send(API._200(await studyMaterial.save()));
};
exports.getAllStudyMaterial = async (req, res) => {
const studyMaterial = StudyMaterial.findAll({
where: {
status: 0
},
include: [{
model: Domain,
attributes: ['id', 'domin_name']
}, {
model: Subdomain,
attributes: ['id', 'subdomain_name']
}, {
model: Topic,
attributes: ['id', 'topic_name']
}, {
model: Certificate,
attributes: ['id', 'certificate_name']
}, {
model: Cource,
attributes: ['id', 'course_name']
}]
});
res.status(200).send(API._200(await studyMaterial));
};
exports.addStudyMaterial = async (req, res) => {
const data = await helper.decryptRequest(req.body.data);
const studyMaterial = await StudyMaterial.create(data);
res.status(200).send(API._200(await studyMaterial));
};
exports.getMaterialAssigned = async (req, res) => {
const data = await helper.decryptRequest(req.body.data);
const domains = await Domain.findAll({
attributes: ['id', 'domin_name', 'domain_number'],
where: {
certi_id: data.cource_id,
status: 0
}
});
let dArray = []
for (let d = 0; d < domains.length; d++) {
const SubDomains = await Subdomain.findAll({
attributes: ['id', 'subdomain_name', 'domain_number', 'no_assign_note'],
where: {
d_id: domains[d].id,
status: 0
}
});
let sdArray = []
for (let s = 0; s < SubDomains.length; s++) {
const topics = await Topic.findAll({
where: {
sd_id: SubDomains[s].id,
status: 0
}
});
let tArray = []
for (let t = 0; t < topics.length; t++) {
const studyMaterial = await StudyMaterial.findAll({
attributes: ['id',
'title',
'content',
'pdf_files',
'ppt_files',
'image_files',
'excel_files',
],
where: {
topic_id: topics[t].id,
status: 0
},
})
const videos = await Video.findAll({
attributes: ['id', 'video_title', 'video_thumbnil', 'duration', 'type', 'topic_list', 'video_link'],
where: {
topic_id: topics[t].id,
status: 0
},
})
// var countData = await db_helper.selectByWhere('VideoMindView', { cohort_id: input.cohort_id, user_id: input.user_id, is_completed: 1 });
// if (countData.length > 0) {
// let pdfCount = countData.filter(x => x.type == 'PDF' && x.type_id == studyMaterial[0].id)
// let pptCount = countData.filter(x => x.type == 'PPT' && x.type_id == studyMaterial[0].id)
// let excelCount = countData.filter(x => x.type == 'EXCEL' && x.type_id == studyMaterial[0].id)
// let imageCount = countData.filter(x => x.type == 'IMAGE' && x.type_id == studyMaterial[0].id)
// }
tArray.push({
id: topics[t].id,
topic_name: topics[t].topic_name,
is_check: false,
percent: 0,
wpercent: 0,
Summary: studyMaterial,
Video: videos,
})
}
sdArray.push({
id: SubDomains[s].id,
subdomain_name: SubDomains[s].subdomain_name,
domain_number: SubDomains[s].domain_number,
no_assign_note: SubDomains[s].no_assign_note,
is_check: false,
percent: 0,
wpercent: 0,
topics: tArray,
})
}
dArray.push({
id: domains[d].id,
domin_name: domains[d].domin_name,
domain_number: domains[d].domain_number,
sublen: sdArray.length,
is_check: false,
percent: 0,
wpercent: 0,
subdomains: sdArray
})
}
res.status(200).send(API._200(await dArray));
};