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 e.*, m.uniter AS mentionUnite, m.nom As nomMention FROM etudiants e JOIN mentions m ON e.mention_id = m.id 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 e.*, m.uniter AS mentionUnite, m.nom As nomMention FROM etudiants e JOIN mentions m ON e.mention_id = m.id WHERE e.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 e.*, m.uniter AS mentionUnite, m.nom As nomMention FROM etudiants e JOIN mentions m ON e.mention_id = m.id 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 Univesitaire non trouvé.'
}
}
return {
success : true ,
message : 'Année Univesitaire 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 Univesitaire 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 Univesitaire non trouvé.'
}
}
return {
success : true ,
message : 'Année Univesitaire 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 Univesitaire non trouvé.'
}
}
return {
success : true ,
message : 'Année Univesitaire 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 ] )
console . log ( 'resultat tranche:' , result ) ;
if ( result . affectedRows === 0 ) {
return {
success : false ,
message : 'Année Univesitaire non trouvé.'
}
}
return {
success : true ,
message : 'Année Univesitaire supprimé avec succès.'
}
} catch ( error ) {
console . log ( 'resultat error:' , 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 Univesitaire non trouvé.'
}
}
return {
success : true ,
message : 'Année Univesitaire supprimé avec succès.'
}
} catch ( error ) {
return error
}
}
async function deleteEtudiant ( id ) {
console . log ( "id: " , id ) ;
const sql = 'DELETE FROM etudiants WHERE id = ?' ;
try {
let [ result ] = await pool . query ( sql , [ id ] ) ;
console . log ( "Résultat DELETE:" , result ) ;
if ( result . affectedRows === 0 ) {
return {
success : false ,
message : 'Etudiant non trouvée.'
} ;
}
return {
success : true ,
message : 'Matière supprimée avec succès.'
} ;
} catch ( error ) {
console . log ( "err: " , + error )
return { success : false , error : 'Erreur, veuillez réessayer: ' + 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 ,
deleteEtudiant ,
getSingleTranche
}