const { pool } = require('../database') /** * function to insert etudiant into databases */ async function insertEtudiant( nom, prenom, photos, date_de_naissances, niveau, annee_scolaire, status, num_inscription, mention_id, sexe, nationaliter, cin, date_delivrence, annee_bacc, serie, boursier, domaine, contact, parcours ) { const sql = 'INSERT INTO etudiants (nom, prenom, photos, date_de_naissances, niveau, annee_scolaire, status, mention_id, num_inscription, sexe, cin, date_delivrance, nationalite, annee_bacc, serie, boursier, domaine, contact, parcours) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' try { let [result] = await pool.query(sql, [ nom, prenom, photos, date_de_naissances, niveau, annee_scolaire, status, mention_id, num_inscription, sexe, cin, date_delivrence, nationaliter, annee_bacc, serie, boursier, domaine, contact, parcours ]) return { success: true, id: result.insertId } } catch (error) { return error } } /** * function to get all etudiants * * @returns JSON */ async function getAllEtudiants() { const sql = 'SELECT * FROM etudiants ORDER BY annee_scolaire DESC' try { let [rows] = await pool.query(sql) return rows } catch (error) { return error } } /** * function to return a single etudiant * and display it on the screen * * @param {int} id * @returns Promise */ async function getSingleEtudiant(id) { const sql = 'SELECT * FROM etudiants WHERE id = ?' try { const [rows] = await pool.query(sql, [id]) return rows[0] } catch (error) { return error } } /** * function to get all etudiants M2 * * @returns JSON */ async function FilterDataByNiveau(niveau) { const sql = 'SELECT * FROM etudiants WHERE niveau = ? ORDER BY annee_scolaire DESC' try { let [rows] = await pool.query(sql, [niveau]) return rows } catch (error) { return error } } /** * function to update etudiants * * @param {*} nom * @param {*} prenom * @param {*} photos * @param {*} date_de_naissances * @param {*} niveau * @param {*} annee_scolaire * @param {*} status * @param {*} num_inscription * @param {*} id * @returns promise */ async function updateEtudiant( nom, prenom, photos, date_de_naissances, niveau, annee_scolaire, status, mention_id, num_inscription, id, sexe, nationalite, cin, date_delivrence, annee_bacc, serie, boursier, domaine, contact, parcours ) { const sql = 'UPDATE etudiants SET nom = ?, prenom = ?, photos = ?, date_de_naissances = ?, niveau = ?, annee_scolaire = ?, status = ?, mention_id = ?, num_inscription = ?, sexe = ?, cin = ?, date_delivrance = ?, nationalite = ?, annee_bacc = ?, serie = ?, boursier = ?, domaine = ?, contact = ?, parcours = ? WHERE id = ?' try { let [result] = await pool.query(sql, [ nom, prenom, photos, date_de_naissances, niveau, annee_scolaire, status, mention_id, num_inscription, sexe, cin, date_delivrence, nationalite, annee_bacc, serie, boursier, domaine, contact, parcours, id ]) if (result.affectedRows === 0) { return { success: false, message: 'Année universitaire non trouvé.' } } return { success: true, message: 'Année universitaire supprimé avec succès.' } } catch (error) { return error } } /** * function to return the needed data in dashboard * * @returns promise */ async function getDataToDashboard() { const query = 'SELECT * FROM niveaus' const query2 = 'SELECT * FROM etudiants' const query3 = 'SELECT DISTINCT annee_scolaire FROM etudiants' // get all année scolaire sans doublan try { let [rows] = await pool.query(query) let niveau = rows ;[rows] = await pool.query(query2) let etudiants = rows ;[rows] = await pool.query(query3) let anne_scolaire = rows return { niveau, etudiants, anne_scolaire } } catch (error) { return error } } async function changePDP(photos, id) { const sql = 'UPDATE etudiants SET photos = ? WHERE id = ?' try { let [result] = await pool.query(sql, [photos, id]) if (result.affectedRows === 0) { return { success: false, message: 'Année universitaire non trouvé.' } } return { success: true, message: 'Année universitaire supprimé avec succès.' } } catch (error) { return error } } async function updateParcours(parcours, id) { const sql = 'UPDATE etudiants SET parcours = ? WHERE id = ?' try { let [result] = await pool.query(sql, [parcours, id]) if (result.affectedRows === 0) { return { success: false, message: 'Année universitaire non trouvé.' } } return { success: true, message: 'Année universitaire supprimé avec succès.' } } catch (error) { return error } } async function createTranche(etudiant_id, tranchename, montant) { const sql = 'INSERT INTO trancheecolage (etudiant_id, tranchename, montant) VALUES (?, ?, ?)' try { let [result] = await pool.query(sql, [etudiant_id, tranchename, montant]) return { success: true, id: result.insertId } } catch (error) { return error } } async function getTranche(id) { const sql = 'SELECT * FROM trancheecolage WHERE etudiant_id = ?' try { let [rows] = await pool.query(sql, [id]) return rows } catch (error) { return error } } async function updateTranche(id, tranchename, montant) { const sql = 'UPDATE trancheecolage SET tranchename = ?, montant = ? WHERE id = ?' try { const [result] = await pool.query(sql, [tranchename, montant, id]) if (result.affectedRows === 0) { return { success: false, message: 'Année universitaire non trouvé.' } } return { success: true, message: 'Année universitaire supprimé avec succès.' } } catch (error) { return error } } async function deleteTranche(id) { const sql = 'DELETE FROM trancheecolage WHERE id = ?' try { let [result] = await pool.query(sql, [id]) if (result.affectedRows === 0) { return { success: false, message: 'Année universitaire non trouvé.' } } return { success: true, message: 'Année universitaire supprimé avec succès.' } } catch (error) { return error } } async function getSingleTranche(id) { const sql = 'SELECT * FROM trancheecolage WHERE id = ?' try { const [rows] = await pool.query(sql, [id]) return rows[0] } catch (error) { return error } } module.exports = { insertEtudiant, getAllEtudiants, FilterDataByNiveau, getSingleEtudiant, updateEtudiant, getDataToDashboard, changePDP, updateParcours, createTranche, getTranche, updateTranche, deleteTranche, getSingleTranche }