const { pool } = require ( '../database' )
const dayjs = require ( 'dayjs' )
async function updateCurrentYears ( ) {
const fullDate = dayjs ( ) . format ( 'YYYY-MM-DD' )
// Clear current year flag
const clearCurrent = 'UPDATE anneescolaire SET is_Current = 0 WHERE id > 0'
pool . query ( clearCurrent )
// Set the new current year
const updateCurrent = `
UPDATE anneescolaire
SET is_Current = 1
WHERE ? >= debut AND ? <= fin
`
// console.log();
pool . query ( updateCurrent , [ fullDate , fullDate ] )
// Check if the update was successful
const sql = `
SELECT * FROM anneescolaire
WHERE ? >= debut AND ? <= fin
`
const [ rows ] = await pool . query ( sql , [ fullDate , fullDate ] )
const check = rows [ 0 ]
if ( ! check ) return
// 2. Check if already in traitmentsystem
const searchSql = ` SELECT * FROM traitmentsystem WHERE code = ? `
const [ searchRows ] = await pool . query ( searchSql , [ check . code ] )
if ( searchRows . length === 0 ) {
// 3. Insert into traitmentsystem
const insertSql = `
INSERT INTO traitmentsystem ( code , debut , fin )
VALUES ( ? , ? , ? )
`
await pool . query ( insertSql , [ check . code , check . debut , check . fin ] )
} else {
console . log ( 'No active school year found for the current date.' )
}
}
// async function updateStudents() {
// const getInfinishedYears = database
// .prepare('SELECT * FROM traitmentsystem WHERE is_finished = 0 ORDER BY id ASC')
// .get()
// const allEtudiants = database
// .prepare('SELECT * FROM etudiants WHERE annee_scolaire = ?')
// .all(getInfinishedYears.code)
// function checkNull(params) {
// if (params == null || params == undefined) {
// return null
// }
// return params
// }
// function compareSessionNotes(session1, session2) {
// let notes
// if (session2) {
// if (session1 < session2.note) {
// notes = session2.note
// } else {
// notes = session1
// }
// } else {
// notes = session1
// }
// return notes
// }
// database.transaction(() => {
// // get all note of student
// const queryNotes = database.prepare(
// `SELECT DISTINCT etudiant_id FROM notes WHERE etudiant_niveau = ? AND annee_scolaire = ?`
// )
// let allEtudiantWithNotes = []
// let etudiantWithNotes = []
// let dataToMap = []
// let allEtudiantWithNotesRepech = []
// let etudiantWithNotesRepech = []
// for (const etudiant of allEtudiants) {
// const results = queryNotes.all(etudiant.niveau, etudiant.annee_scolaire)
// etudiantWithNotes.push(...results) // Avoid nested arrays
// }
// const uniqueId = etudiantWithNotes.filter(
// (item, index, self) => index === self.findIndex((t) => t.etudiant_id === item.etudiant_id)
// )
// const query2 = database.prepare(
// 'SELECT notes.*, etudiants.*, matieres.id, matieres.nom AS nomMat, matieres.credit FROM notes LEFT JOIN etudiants ON (notes.etudiant_id = etudiants.id) LEFT JOIN matieres ON (notes.matiere_id = matieres.id) WHERE notes.etudiant_id = ?'
// )
// for (let j = 0; j < uniqueId.length; j++) {
// allEtudiantWithNotes.push(query2.all(uniqueId[j].etudiant_id))
// }
// const query = database.prepare(
// `SELECT DISTINCT etudiant_id FROM notesrepech WHERE etudiant_niveau = ? AND annee_scolaire = ?`
// )
// for (const etudiant of allEtudiants) {
// const results = query.all(etudiant.niveau, etudiant.annee_scolaire)
// etudiantWithNotesRepech.push(...results) // Avoid nested arrays
// }
// const uniqueIdRepech = etudiantWithNotes.filter(
// (item, index, self) => index === self.findIndex((t) => t.etudiant_id === item.etudiant_id)
// )
// const query2Repech = database.prepare(
// 'SELECT notesrepech.*, etudiants.*, matieres.id, matieres.nom AS nomMat, matieres.credit FROM notesrepech INNER JOIN etudiants ON (notesrepech.etudiant_id = etudiants.id) INNER JOIN matieres ON (notesrepech.matiere_id = matieres.id) WHERE notesrepech.etudiant_id = ?'
// )
// for (let j = 0; j < uniqueIdRepech.length; j++) {
// allEtudiantWithNotesRepech.push(query2Repech.all(uniqueIdRepech[j].etudiant_id))
// }
// for (let index = 0; index < allEtudiantWithNotes.length; index++) {
// let total = 0
// let note = 0
// let totalCredit = 0
// // Create a new object for each student
// let modelJson = {
// id: '',
// nom: '',
// prenom: '',
// photos: '',
// moyenne: '',
// mention: '',
// niveau: '',
// annee_scolaire: ''
// }
// for (let j = 0; j < allEtudiantWithNotes[index].length; j++) {
// modelJson.id = allEtudiantWithNotes[index][j].etudiant_id
// modelJson.nom = allEtudiantWithNotes[index][j].nom
// modelJson.prenom = allEtudiantWithNotes[index][j].prenom
// modelJson.photos = allEtudiantWithNotes[index][j].photos
// modelJson.mention = allEtudiantWithNotes[index][j].mention_id
// modelJson.niveau = allEtudiantWithNotes[index][j].niveau
// modelJson.annee_scolaire = allEtudiantWithNotes[index][j].annee_scolaire
// // console.log(checkNull(session[index][j]));
// if (allEtudiantWithNotesRepech[index]) {
// note +=
// compareSessionNotes(
// allEtudiantWithNotes[index][j].note,
// checkNull(allEtudiantWithNotesRepech[index][j])
// ) * allEtudiantWithNotes[index][j].credit
// } else {
// note += allEtudiantWithNotes[index][j].note * allEtudiantWithNotes[index][j].credit
// }
// totalCredit += allEtudiantWithNotes[index][j].credit
// }
// total = note / totalCredit
// modelJson.moyenne = total.toFixed(2)
// // Add the new object to the array
// dataToMap.push(modelJson)
// }
// // update all etudiant
// let updated = false
// if (dataToMap.length != 0) {
// let noteSystem = database.prepare('SELECT * FROM notesystems').get()
// for (let index = 0; index < dataToMap.length; index++) {
// if (dataToMap[index].moyenne >= noteSystem.admis) {
// let updateQuery = database.prepare(
// 'UPDATE etudiants SET niveau = ?, annee_scolaire = ?, status = ? WHERE id = ?'
// )
// updateQuery.run(
// nextLevel(dataToMap[index].niveau),
// updateSchoolYear(dataToMap[index].annee_scolaire),
// 2,
// dataToMap[index].id
// )
// updated = true
// } else if (
// dataToMap[index].moyenne < noteSystem.admis &&
// dataToMap[index].moyenne >= noteSystem.redouble
// ) {
// let updateQuery = database.prepare(
// 'UPDATE etudiants SET niveau = ?, annee_scolaire = ? status = ? WHERE id = ?'
// )
// updateQuery.run(
// dataToMap[index].niveau,
// updateSchoolYear(dataToMap[index].annee_scolaire),
// 3,
// dataToMap[index].id
// )
// updated = true
// } else {
// let updateQuery = database.prepare(
// 'UPDATE etudiants SET niveau = ?, annee_scolaire = ? status = ? WHERE id = ?'
// )
// updateQuery.run(
// dataToMap[index].niveau,
// dataToMap[index].annee_scolaire,
// 4,
// dataToMap[index].id
// )
// updated = true
// }
// }
// }
// if (updated) {
// const updateInfinishedYears = database.prepare(
// 'UPDATE traitmentsystem SET is_finished = 1 WHERE id = ?'
// )
// updateInfinishedYears.run(getInfinishedYears.id)
// }
// })()
// }
// function nextLevel(niveau) {
// if (niveau == 'L1') {
// return 'L2'
// } else if (niveau == 'L2') {
// return 'L3'
// } else if (niveau == 'L3') {
// return 'M1'
// } else if (niveau == 'M1') {
// return 'M2'
// } else if (niveau == 'M2') {
// return 'D1'
// } else if (niveau == 'D1') {
// return 'D2'
// } else if (niveau == 'D2') {
// return 'D3'
// } else if (niveau == 'D3') {
// return 'PHD'
// }
// }
// function updateSchoolYear(year) {
// // Split the year into two parts
// const [startYear, endYear] = year.split('-').map(Number)
// // Increment both the start and end year by 1
// const newStartYear = startYear + 1
// const newEndYear = endYear + 1
// // Join the new years with a hyphen
// const newYear = `${newStartYear}-${newEndYear}`
// return newYear
// }
async function matiereSysteme ( etudiant_niveau ) {
let systeme
if ( etudiant_niveau == 'L1' ) {
systeme = [ 'S1' , 'S2' ]
} else if ( etudiant_niveau == 'L2' ) {
systeme = [ 'S3' , 'S4' ]
} else if ( etudiant_niveau == 'L3' ) {
systeme = [ 'S5' , 'S6' ]
} else if ( etudiant_niveau == 'M1' ) {
systeme = [ 'S7' , 'S8' ]
} else if ( etudiant_niveau == 'M2' ) {
systeme = [ 'S9' , 'S10' ]
} else if ( etudiant_niveau == 'D1' ) {
systeme = [ 'S11' , 'S12' ]
} else if ( etudiant_niveau == 'D2' ) {
systeme = [ 'S13' , 'S14' ]
} else if ( etudiant_niveau == 'D3' ) {
systeme = [ 'S15' , 'S16' ]
}
return systeme
}
async function matiereSystemReverse ( semestre ) {
if ( semestre == 'S1' || semestre == 'S2' ) {
return 'L1'
} else if ( semestre == 'S3' || semestre == 'S4' ) {
return 'L2'
} else if ( semestre == 'S5' || semestre == 'S6' ) {
return 'L3'
} else if ( semestre == 'S7' || semestre == 'S8' ) {
return 'M1'
} else if ( semestre == 'S9' || semestre == 'S10' ) {
return 'M2'
} else if ( semestre == 'S11' || semestre == 'S12' ) {
return 'D1'
} else if ( semestre == 'S13' || semestre == 'S14' ) {
return 'D2'
} else if ( semestre == 'S15' || semestre == 'S16' ) {
return 'D3'
}
}
// async function getNessesarytable() {
// try {
// const query = await database.prepare('SELECT * FROM nessesaryTable').get()
// return query
// } catch (error) {
// return error
// }
// }
// async function updateNessesaryTable(id, multiplicateur) {
// const query = database.prepare('UPDATE nessesaryTable SET uniter_heure = ? WHERE id = ?')
// try {
// let update = query.run(multiplicateur, id)
// return update
// } catch (error) {
// return error
// }
// }
module . exports = {
matiereSysteme ,
updateCurrentYears ,
// updateStudents,
// getNessesarytable,
// updateNessesaryTable,
matiereSystemReverse
}