You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
4.7 KiB
179 lines
4.7 KiB
const { database } = require('../database')
|
|
const { matiereSystemReverse } = require('../function/System')
|
|
const dayjs = require('dayjs')
|
|
|
|
async function insertParcour(nom, uniter, mention_id) {
|
|
const query = database.prepare('INSERT INTO parcours (nom, uniter, mention_id) VALUES (?, ?, ?)')
|
|
|
|
try {
|
|
let response = query.run(nom, uniter, mention_id == null ? 0 : mention_id)
|
|
|
|
return response
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function getParcourMatiere(id) {
|
|
const parcourMatiereQuery = database.prepare('SELECT * FROM parcoursmatiere WHERE matiere_id = ?')
|
|
|
|
try {
|
|
let response
|
|
return (response = await parcourMatiereQuery.all(id))
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function getParcours() {
|
|
const query = database.prepare('SELECT * FROM parcours ORDER BY id DESC')
|
|
|
|
try {
|
|
let response = query.all()
|
|
|
|
return response
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function getSingleParcours(id) {
|
|
const query = database.prepare('SELECT * FROM parcours WHERE id = ?')
|
|
|
|
try {
|
|
let response = await query.get(id)
|
|
|
|
return response
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function deletes(id) {
|
|
const query = database.prepare('DELETE FROM parcours WHERE id = ?')
|
|
|
|
try {
|
|
let response = await query.run(id)
|
|
|
|
return response
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function updateparcour(id, nom, uniter, mention_id) {
|
|
const query = database.prepare(
|
|
'UPDATE parcours SET nom = ?, uniter = ?, mention_id = ? WHERE id = ?'
|
|
)
|
|
|
|
try {
|
|
let response = await query.run(nom, uniter, mention_id, id)
|
|
|
|
return response
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function parcourMatiere(matiere_id, parcour_id) {
|
|
const query = database.prepare(
|
|
'INSERT INTO parcoursmatiere (matiere_id, parcour_id) VALUES (?, ?)'
|
|
)
|
|
|
|
database.prepare('DELETE FROM parcoursmatiere WHERE matiere_id = ?').run(matiere_id)
|
|
|
|
try {
|
|
let response
|
|
database.transaction(() => {
|
|
for (let index = 0; index < parcour_id.length; index++) {
|
|
response = query.run(matiere_id, parcour_id[index])
|
|
}
|
|
})()
|
|
|
|
return response
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
async function extractFiche(matiere_id) {
|
|
const query = database.prepare(
|
|
'SELECT matiere_semestre.semestre_id, matiere_semestre.mention_id, semestres.* FROM matiere_semestre INNER JOIN semestres ON (matiere_semestre.semestre_id = semestres.id) WHERE matiere_semestre.matiere_id = ?'
|
|
)
|
|
const allStudentQuery = database.prepare(
|
|
'SELECT * FROM etudiants WHERE niveau LIKE ? AND annee_scolaire LIKE ?'
|
|
)
|
|
const parcourMatiereQuery = database.prepare(
|
|
'SELECT * FROM parcoursmatiere INNER JOIN parcours ON (parcoursmatiere.parcour_id = parcours.id) WHERE parcoursmatiere.matiere_id = ?'
|
|
)
|
|
|
|
try {
|
|
let matiereSemestre = query.all(matiere_id)
|
|
let response = []
|
|
let allSTudent = []
|
|
let allMention_id = []
|
|
let realSponse = []
|
|
let now = dayjs().format('YYYY')
|
|
|
|
realSponse = await database.transaction(async () => {
|
|
let parcours = parcourMatiereQuery.all(Number(matiere_id))
|
|
for (let index = 0; index < matiereSemestre.length; index++) {
|
|
response.push(await matiereSystemReverse(matiereSemestre[index].nom))
|
|
allMention_id.push(matiereSemestre[index].mention_id)
|
|
}
|
|
|
|
let newResponse = []
|
|
for (let index = 0; index < response.length; index++) {
|
|
if (response[index] != response[index + 1]) {
|
|
newResponse.push(response[index])
|
|
}
|
|
}
|
|
|
|
for (let index = 0; index < newResponse.length; index++) {
|
|
allSTudent = allStudentQuery.all(`%${newResponse[index]}%`, `%${now}%`)
|
|
}
|
|
|
|
let studentFiltredMention = []
|
|
for (let index = 0; index < allSTudent.length; index++) {
|
|
if (allMention_id.includes(allSTudent[index].mention_id)) {
|
|
studentFiltredMention.push(allSTudent[index])
|
|
}
|
|
}
|
|
let allData = []
|
|
|
|
for (let j = 0; j < parcours.length; j++) {
|
|
for (let index = 0; index < studentFiltredMention.length; index++) {
|
|
if (parcours[j].parcour_id == 1) {
|
|
if (
|
|
studentFiltredMention[index].parcours == null ||
|
|
studentFiltredMention[index].parcours == parcours[j].nom
|
|
) {
|
|
allData.push(studentFiltredMention[index])
|
|
}
|
|
} else {
|
|
if (studentFiltredMention[index].parcours == parcours[j].nom) {
|
|
allData.push(studentFiltredMention[index])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return allData
|
|
})()
|
|
|
|
return realSponse
|
|
} catch (error) {
|
|
return error
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
insertParcour,
|
|
getParcours,
|
|
getSingleParcours,
|
|
deletes,
|
|
updateparcour,
|
|
parcourMatiere,
|
|
extractFiche,
|
|
getParcourMatiere
|
|
}
|
|
|