personnal/ecole/public/js/index.js

231 lines
11 KiB
JavaScript

// Événement de récupération du parcours souscripteur à partir de l'id
document.addEventListener('DOMContentLoaded', function () {
/* ---------- Init ------------ */
const token = localStorage.getItem('jwtToken');
if (token) {
const decoded = jwt_decode(token);
const userFirstName = decoded.userFirstName;
const userLastName = decoded.userLastName;
const userMatricule = decoded.userMatricule;
document.getElementById("firstNameItem").innerHTML = userFirstName;
document.getElementById("lastNameItem").innerHTML = userLastName;
document.getElementById("userMatricule").innerHTML = userMatricule;
}
/* ---------- EVENNEMENT ------------ */
// Écoute de l'événement du bouton nouveau parcours
document.getElementById('nouveauParcoursBtn').addEventListener('click', function (event) {
// Empêche le comportement par défaut du formulaire
event.preventDefault();
const userMatricule = document.getElementById('userMatricule').innerHTML;
//Envoie de la requete pour creer le nouveau parcours et l'attribuer au souscripteur
(async () => {
try {
const data = await fetchWithJson(`/parcours/create/${userMatricule}`, 'POST');
if (data.valid) {
window.location.href = `/parcours?numParcours=${data.numParcours}`;
} else {
console.log("Erreur dans la création d'un nouveau parcours")
}
} catch (error) {
console.error("Erreur serveur lors de la création d'un nouveau parcours :", error);
}
})();
});
// Ecoute de l'événement 'input' au champ numParcours
document.getElementById('numParcours').addEventListener('input', function () {
validateField('numParcours', true);
updateSubmitButtonState('parcoursForm');
});
// Fonction de génération de projet
document.getElementById('btnGenCP').addEventListener('click', function () {
const numParcours = document.getElementById('numParcours').value;
const produit = document.getElementById('produit').innerHTML.replace(/\s/g, '');
let filename;
// Envoi de la requête POST au serveur pour générer le projet
fetch(`/generate/${produit}/projet/${numParcours}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
.then(response => {
if (!response.ok) {
throw new Error('Erreur réseau ou serveur');
}
const disposition = response.headers.get('content-disposition');
filename = disposition.split(';')[1].trim().split('=')[1];
return response.blob(); // On attend une réponse sous forme de blob pour un fichier
})
.then(blob => {
// Crée un URL pour le blob
const url = window.URL.createObjectURL(blob);
// Crée un élément a temporaire pour simuler un clic pour téléchargement
const a = document.createElement('a');
a.href = url;
a.download = filename; // Nomme le fichier téléchargé
document.body.appendChild(a); // Ajoute l'élément au document
a.click(); // Simule un clic sur l'élément pour déclencher le téléchargement
window.URL.revokeObjectURL(url); // Nettoie l'URL objet
a.remove(); // Supprime l'élément a du document
})
.catch(error => console.error('Erreur lors de la génération du projet:', error));
});
// Écoute de l'événement de soumission du formulaire
document.getElementById('parcoursForm').addEventListener('submit', function (event) {
// Empêche le comportement par défaut du formulaire
event.preventDefault();
// Supression mémoire tampon Client/Inter
sessionStorage.removeItem('tmp');
const numParcours = document.getElementById('numParcours').value;
// Envoi de la requête pour avoir le parcours
(async () => {
try {
await loadParcours(numParcours);
// Accéder aux informations stockées du parcours
const parcours = JSON.parse(sessionStorage.getItem('parcours'));
if (parcours) {
// Affiche un modal si le parcours est valide
const elem = document.getElementById('goodParcoursModal');
const instance = M.Modal.getInstance(elem);
const contratId = parcours?.["@expand"]?.contrat?.id || null;
await loadContrat(contratId);
const contrat = JSON.parse(sessionStorage.getItem('contrat'));
const client = contrat?.["@expand"]?.client || null;
const intermediaire = contrat?.["@expand"]?.intermediaire || null;
let produit = parcours["@expand"].contrat.produit
const produitObj = contrat?.["@expand"]?.enCours || null;
const tarif = produitObj?.["@expand"]?.tarif || null;
const projet = produitObj?.["@expand"]?.projet || null;
if (client) { document.getElementById("sectionClient").style.display = "block"; }
if (intermediaire) { document.getElementById("sectionIntermediaire").style.display = "block"; }
if (produit == "RC") { //A MODIFIER UNE FOIS QUE RC SERA ADAPTé AU PARCOURS
document.getElementById('btnGenTarif').disabled = true;
if (Object.keys(contrat?.["@expand"]?.enCours).length > 1) {
document.getElementById('btnGenCP').disabled = false;
} else {
document.getElementById('btnGenCP').disabled = true;
}
} else {
// Enable / disable bouton generate project
if (parcours["@expand"].contrat.client != '' && parcours["@expand"].contrat.intermediaire != '' && produitObj != undefined && projet != null) {
document.getElementById('btnGenCP').disabled = false;
} else {
document.getElementById('btnGenCP').disabled = true;
}
// Enable / disable bouton generate déclinaison
if (parcours["@expand"].contrat.client != '' && parcours["@expand"].contrat.intermediaire != '' && produitObj != undefined && tarif != null) {
document.getElementById('btnGenTarif').disabled = false;
} else {
document.getElementById('btnGenTarif').disabled = true;
}
}
// Gestion des informations du parcours
document.getElementById('displayedNumParcours').innerText = numParcours;
document.getElementById('dateCreaParcours').innerText = parcours.created
? new Date(parcours.created).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' })
: 'N/A';
document.getElementById('dateModiParcours').innerText = parcours.updated
? new Date(parcours.updated).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' })
: 'N/A';
const dernierUtilisateur = parcours["@expand"]?.dernierUtilisateur;
document.getElementById('souscripteurParcours').innerText = dernierUtilisateur
? `${dernierUtilisateur.matricule}, ${dernierUtilisateur.prenom} ${dernierUtilisateur.nom}`
: 'Information non disponible';
document.getElementById('updateParcours').addEventListener('click', function () {
window.location.href = `/navParcours?numParcours=${numParcours}&submenu=client`;
});
// Gestion des informations du contrat
if (contrat) {
document.getElementById('numContrat').innerText = (contrat.numContrat) ? contrat.numContrat : 'N/A';
document.getElementById('numSaisine').innerText = (contrat.numSaisine) ? contrat.numSaisine : 'N/A';
document.getElementById('produit').innerText = (contrat.produit) ? contrat.produit : 'N/A';
document.getElementById('type').innerText = (contrat.type) ? contrat.type : 'N/A';
}
// Gestion des informations client
if (client) {
document.getElementById('numClient').innerText = (client.numClient) ? client.numClient : 'N/A';
document.getElementById('nomClient').innerText = (client.nom) ? client.nom : 'N/A';
document.getElementById('adresseClient').innerText = (client.adresse || client.codePostal || client.ville)
? `${client.adresse}, ${client.codePostal}, ${client.ville}`
: 'N/A';
document.getElementById('mailClient').innerText = (client.mail) ? client.mail : 'N/A';
document.getElementById('noteClient').innerText = (client.noteFinanciere) ? client.noteFinanciere : 'N/A';
}
// Gestion des informations de l'intermédiaire
if (intermediaire) {
document.getElementById('numPortefeuille').innerText = (intermediaire.numPortefeuille) ? intermediaire.numPortefeuille : 'N/A';
document.getElementById('numOrias').innerText = (intermediaire.numOrias) ? intermediaire.numOrias : 'N/A';
document.getElementById('typeIntermediaire').innerText = (intermediaire.type) ? intermediaire.type : 'N/A';
document.getElementById('nomIntermediaire').innerText = (intermediaire.nom) ? intermediaire.nom : 'N/A';
document.getElementById('adresseIntermediaire').innerText = (intermediaire.adresse || intermediaire.codePostal || intermediaire.ville)
? `${intermediaire.adresse}, ${intermediaire.codePostal}, ${intermediaire.ville}`
: 'N/A';
document.getElementById('numTelephoneIntermediaire').innerText = (intermediaire.numTelephone) ? intermediaire.numTelephone : 'N/A';
document.getElementById('mailIntermediaire').innerText = (intermediaire.mail) ? intermediaire.mail : 'N/A';
}
instance.open();
} else {
// Affiche un modal si le parcours est invalide
const elem = document.getElementById('wrongParcoursModal');
const instance = M.Modal.getInstance(elem);
const admins = JSON.parse(sessionStorage.getItem('admins'));
// Met à jour le parcours affiché dans le modal
document.getElementById('displayedNumParcoursWrong').innerText = numParcours;
const adminListElement = document.getElementById('adminList');
adminListElement.innerHTML = "";
admins.items.forEach(admin => {
adminListElement.innerHTML +=
`<tr>
<td>${admin.matricule}</td>
<td>${admin.nom}</td>
<td>${admin.prenom}</td>
<td>${admin.mail}</td>
</tr>`
})
instance.open();
}
} catch (error) {
console.error("Erreur lors de la récupération des informations du parcours :", error);
}
})();
});
updateSubmitButtonState('parcoursForm');
});