271 lines
12 KiB
JavaScript
271 lines
12 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) {
|
|
try {
|
|
const decoded = jwt_decode(token);
|
|
const userFirstName = decoded?.userFirstName || '';
|
|
const userLastName = decoded?.userLastName || '';
|
|
const userMatricule = decoded?.userMatricule || '';
|
|
|
|
// Vérifier que les éléments HTML existent avant de les modifier
|
|
const firstNameItem = document.getElementById("firstNameItem");
|
|
const lastNameItem = document.getElementById("lastNameItem");
|
|
const userMatriculeItem = document.getElementById("userMatricule");
|
|
|
|
if (firstNameItem) {
|
|
firstNameItem.innerHTML = userFirstName;
|
|
}
|
|
if (lastNameItem) {
|
|
lastNameItem.innerHTML = userLastName;
|
|
}
|
|
if (userMatriculeItem) {
|
|
userMatriculeItem.innerHTML = userMatricule;
|
|
}
|
|
} catch (error) {
|
|
console.error("Erreur lors du décodage du token:", error);
|
|
// En cas d'erreur, ne pas afficher les informations utilisateur
|
|
}
|
|
}
|
|
|
|
/* ---------- 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");
|
|
if (typeof window.showError === 'function') {
|
|
window.showError("Erreur lors de la création du parcours. Veuillez réessayer.");
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error("Erreur serveur lors de la création d'un nouveau parcours :", error);
|
|
// L'erreur est déjà gérée par fetchWithJson avec le loader
|
|
}
|
|
})();
|
|
});
|
|
|
|
// 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;
|
|
|
|
// Activer le loader
|
|
if (typeof window.showLoader === 'function') {
|
|
window.showLoader();
|
|
}
|
|
|
|
// 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
|
|
|
|
// Désactiver le loader
|
|
if (typeof window.hideLoader === 'function') {
|
|
window.hideLoader();
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('Erreur lors de la génération du projet:', error);
|
|
// Désactiver le loader et afficher l'erreur
|
|
if (typeof window.hideLoader === 'function') {
|
|
window.hideLoader();
|
|
}
|
|
if (typeof window.showError === 'function') {
|
|
window.showError('Erreur lors de la génération du projet. Vérifiez votre connexion.');
|
|
}
|
|
});
|
|
});
|
|
|
|
// É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 {
|
|
// Le loader est déjà géré dans loadParcours via fetchWithJson
|
|
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');
|
|
}); |