// É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 += `