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.
 
 
 

62 lines
1.6 KiB

const { pool } = require('../database')
async function getAllConfigEcolage() {
const sql = `
SELECT c.*, m.nom AS mention_nom, m.uniter AS mention_uniter, n.nom AS niveau_nom
FROM configecolage c
LEFT JOIN mentions m ON c.mention_id = m.id
LEFT JOIN niveaus n ON c.niveau_id = n.id
ORDER BY n.nom, m.nom
`
try {
const [rows] = await pool.query(sql)
return rows
} catch (error) {
return []
}
}
async function getConfigEcolageByMentionNiveau(mention_id, niveau_nom) {
const sql = `
SELECT c.montant_total
FROM configecolage c
LEFT JOIN niveaus n ON c.niveau_id = n.id
WHERE c.mention_id = ? AND n.nom = ?
`
try {
const [rows] = await pool.query(sql, [mention_id, niveau_nom])
return rows.length > 0 ? rows[0] : null
} catch (error) {
return null
}
}
async function upsertConfigEcolage(mention_id, niveau_id, montant_total) {
const sql = `
INSERT INTO configecolage (mention_id, niveau_id, montant_total)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE montant_total = ?
`
try {
await pool.query(sql, [mention_id, niveau_id, montant_total, montant_total])
return { success: true }
} catch (error) {
return { success: false, error: error.message }
}
}
async function deleteConfigEcolage(id) {
try {
await pool.query('DELETE FROM configecolage WHERE id = ?', [id])
return { success: true }
} catch (error) {
return { success: false, error: error.message }
}
}
module.exports = {
getAllConfigEcolage,
getConfigEcolageByMentionNiveau,
upsertConfigEcolage,
deleteConfigEcolage
}