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.
 
 
 

107 lines
2.9 KiB

// here the data from the local and web server become one for etudiants table
/**
* our get and insert etudiants function, don't touch it
*/
const { getAllEtudiants, insertEtudiant } = require('../Models/Etudiants')
/**
* URL fro the server web, you can modify it like your Domain name
*/
const { URL } = require('./Config')
/**
* function to get the all etudiants
*
* @returns promise
*/
async function getAllEtudiantsFetch() {
const etudiants = await getAllEtudiants()
return etudiants
}
async function verifyEtudiantTableWeb() {
/**
* class AJAX, don't touch it
*/
const XHR = new XMLHttpRequest()
let etudiants = await getAllEtudiantsFetch()
XHR.onreadystatechange = () => {
if (XHR.readyState === 4) {
if (XHR.status === 200) {
// nothing here because the statement is in the server web
} else {
console.log('impossible de contacter le server pour la syncronisation')
}
}
}
const data = new FormData()
data.append('Verification', JSON.stringify(etudiants))
XHR.open('POST', `${URL}/verifywebEtudiants`, true)
XHR.setRequestHeader('x-requested-with', 'xmlhttprequest')
XHR.send(data)
}
async function verifyTableLocalEtudiants() {
/**
* class AJAX, don't touch it
*/
const XHR = new XMLHttpRequest()
let etudiants = await getAllEtudiantsFetch()
XHR.onreadystatechange = () => {
if (XHR.readyState === 4) {
if (XHR.status === 200) {
const etudiantFromWeb = JSON.parse(XHR.responseText)
// set all email from base local in Array numInscArray
let numInscArray = []
for (let index = 0; index < etudiants.length; index++) {
numInscArray.push(etudiants[index]['num_inscription'])
}
// search if the email from user from server is in local or not
// if not, then insert it
for (let index = 0; index < etudiantFromWeb.length; index++) {
if (numInscArray.includes(etudiantFromWeb[index]['num_inscription']) === false) {
insertEtudiant(
etudiantFromWeb[index]['nom'],
etudiantFromWeb[index]['prenom'],
etudiantFromWeb[index]['photos'],
etudiantFromWeb[index]['date_de_naissances'],
etudiantFromWeb[index]['niveau'],
etudiantFromWeb[index]['annee_scolaire'],
etudiantFromWeb[index]['num_inscription']
)
}
}
} else {
console.log('impossible de contacter le server pour la syncronisation')
}
}
}
XHR.open('GET', `${URL}/verifylocalEtudiants`, true)
XHR.setRequestHeader('x-requested-with', 'xmlhttprequest')
XHR.send()
}
// Call both functions sequentially or in parallel as needed
async function synchronizeDataEtudiants() {
try {
await verifyEtudiantTableWeb()
await verifyTableLocalEtudiants()
} catch (error) {
console.error('Error during synchronization:', error)
}
}
module.exports = {
synchronizeDataEtudiants
}