function initSubmenuForm() { // Accéder aux informations stockées du parcours const parcours = JSON.parse(sessionStorage.getItem('parcours')); } // Exposer initSubmenuForm globalement pour y accéder depuis l'extérieur window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollution de l'espace global (function(){ // Variables globales du module let parcours, contrat, client, intermediaire, matricule; // Initialisation du formulaire et des données function init() { const token = localStorage.getItem('jwtToken'); if (token) { const decoded = jwt_decode(token); matricule = decoded.userMatricule; } // Accéder aux informations stockées du parcours parcours = JSON.parse(sessionStorage.getItem('parcours')); contrat = JSON.parse(sessionStorage.getItem('contrat')); client = contrat?.["@expand"]?.client || null; intermediaire = contrat?.["@expand"]?.intermediaire || null; console.log("Initialisation pour formulaire intermédiaire :", parcours); // Materialize init Modal var modals = document.querySelectorAll('.modal'); M.Modal.init(modals); // Appel des différentes fonctions d'initialisation setupEventListeners(); populateFormData(); toggleAdditionalChoice(); updateSubmitButtonState('intermediaireForm'); } // Configuration des écouteurs d'événements function setupEventListeners() { document.getElementById('intermediaireFormBtn').addEventListener('click', function (event) { handleSubmitForm(event, 'tarif') } ); document.getElementById('intermediaireFormBtnProjet').addEventListener('click', function (event) { handleSubmitForm(event, 'projet') } ); document.getElementById('agent').addEventListener('change', toggleAdditionalChoice); document.getElementById('courtier').addEventListener('change', toggleAdditionalChoice); document.getElementById('cl063-intermediaire').addEventListener('click', (event) => handleExtractIntermediaire(event)); document.getElementById('modalExtraireIntermediaire').addEventListener('click', (event) => handleModalExtract(event)); // Handler modal mutualiste document.getElementById('btnMutualiste').addEventListener('click', function(){ const elem = document.getElementById('modalMutualiste'); const instance = M.Modal.getInstance(elem); instance.open(); }); // Controle de saisie sur les champs du formulaire document.getElementById('numPortefeuille').addEventListener('input', function(){ validateField('numPortefeuille', true); }); document.getElementById('nomIntermediaire').addEventListener('input', function(){ validateField('nomIntermediaire', true); }); document.getElementById('numTelIntermediaire').addEventListener('input', function(){ validateField('numTelIntermediaire', true); }); document.getElementById('emailIntermediaire').addEventListener('input', function(){ validateField('emailIntermediaire', true); }); document.getElementById('adresseIntermediaire').addEventListener('input', function(){ validateField('adresseIntermediaire', true); }); document.getElementById('codePostalIntermediaire').addEventListener('input', function(){ validateField('codePostalIntermediaire', true); }); document.getElementById('villeIntermediaire').addEventListener('input', function(){ validateField('villeIntermediaire', true); }); document.getElementById('numOrias').addEventListener('input', function(){ validateField('numOrias', true); }); document.querySelectorAll('input').forEach((input) => { input.addEventListener('input', function(){ if (document.querySelector('[name="type"]:checked')?.value) { document.getElementById('message-typeInter').style.display = 'none'; updateSubmitButtonState('intermediaireForm'); } else { document.getElementById('message-typeInter').style.display = 'block'; document.getElementById('intermediaireFormBtn').disabled = true; document.getElementById('intermediaireFormBtnProjet').disabled = true; } }); }); } // Peupler le formulaire avec les données function populateFormData() { if (intermediaire) { document.getElementById('nomIntermediaire').value = intermediaire.nom || ''; document.getElementById('numPortefeuille').value = intermediaire.numPortefeuille || ''; document.getElementById('numTelIntermediaire').value = intermediaire.numTelephone || ''; document.getElementById('emailIntermediaire').value = intermediaire.mail || ''; document.getElementById('adresseIntermediaire').value = intermediaire.adresse || ''; document.getElementById('codePostalIntermediaire').value = intermediaire.codePostal || ''; document.getElementById('villeIntermediaire').value = intermediaire.ville || ''; document.getElementById('numOrias').value = intermediaire.numOrias || ''; if (intermediaire.type) { document.querySelector('[id="message-typeInter"]').style.display = 'none'; if (intermediaire.type == 'COURTIER') { document.getElementById('courtier').checked = true; document.getElementById('additionalChoice').style.display = 'none'; } else { document.getElementById('agent').checked = true; document.getElementById('additionalChoice').style.display = 'block'; if (intermediaire.type == 'AGENT MUTUALISTE') { document.getElementById('mutualiste').checked = true; } else if (intermediaire.type == 'AGENT NON MUTUALISTE') { document.getElementById('non_mutualiste').checked = true; } } } } const intermediaireStorage = JSON.parse(sessionStorage.getItem('tmp')); if (intermediaireStorage) { document.getElementById('numPortefeuille').value = intermediaireStorage.numAgent || ''; document.getElementById('nomIntermediaire').value = intermediaireStorage.nomAgent || ''; document.getElementById('numTelIntermediaire').value = intermediaireStorage.telAgent || ''; document.getElementById('adresseIntermediaire').value = intermediaireStorage.adresseAgent || ''; document.getElementById('codePostalIntermediaire').value = intermediaireStorage.postalAgent || ''; document.getElementById('villeIntermediaire').value = intermediaireStorage.villeAgent || ''; } validateField('numPortefeuille', true); validateField('nomIntermediaire', true); validateField('numTelIntermediaire', true); validateField('adresseIntermediaire', true); validateField('codePostalIntermediaire', true); validateField('villeIntermediaire', true); updateSubmitButtonState('intermediaireForm'); } // Fonction toggle Agent/Courtier function toggleAdditionalChoice() { // Affichez les choix supplémentaires uniquement si l'Agent est sélectionné const displayStyle = document.getElementById('agent').checked ? 'block' : 'none'; document.getElementById('additionalChoice').style.display = displayStyle; } // Gérer l'extraction axaPAC async function handleExtractIntermediaire(event) { event.preventDefault(); // Affiche le modal const elem = document.getElementById('modalExtractAxAPAC'); const instance = M.Modal.getInstance(elem); instance.open(); } async function handleModalExtract() { document.getElementById('modalExtraireIntermediaire').disabled = true; if (typeof window.showLoader === 'function') { window.showLoader(); } try { const response = await fetch(`/client/extract`, { method: 'POST', body: JSON.stringify({ "matricule": matricule, "numClient": document.getElementById("modalNumClient").value }), headers: { 'Content-Type': 'application/json', }, }); const res = await response.json(); if (res.valid) { document.getElementById("error-extract").style.display = "none"; document.getElementById('modalExtraireIntermediaire').disabled = false; console.log(res); // Save sessionStorage for Intermediaire sessionStorage.setItem('tmp', JSON.stringify(res.data)); // Populate data document.getElementById("numPortefeuille").value = (res.data.numAgent) ? res.data.numAgent : null; document.getElementById("nomIntermediaire").value = (res.data.nomAgent) ? res.data.nomAgent : null; document.getElementById("numTelIntermediaire").value = (res.data.telAgent) ? res.data.telAgent : null; document.getElementById("adresseIntermediaire").value = (res.data.adresseAgent) ? res.data.adresseAgent : null; document.getElementById("codePostalIntermediaire").value = (res.data.postalAgent) ? res.data.postalAgent : null; document.getElementById("villeIntermediaire").value = (res.data.villeAgent) ? res.data.villeAgent : null; validateField('numPortefeuille', true); validateField('nomIntermediaire', true); validateField('numTelIntermediaire', true); validateField('adresseIntermediaire', true); validateField('codePostalIntermediaire', true); validateField('villeIntermediaire', true); updateSubmitButtonState('intermediaireForm'); // close le modal const elem = document.getElementById('modalExtractAxAPAC'); const instance = M.Modal.getInstance(elem); instance.close(); } else { document.getElementById("error-extract").style.display = "block"; document.getElementById('modalExtraireIntermediaire').disabled = false; console.log("Problème rencontré lors de l'extraction cl063 AxA PAC :", res.error); if (typeof window.showError === 'function') { window.showError("Erreur lors de l'extraction des données intermédiaire."); } } } catch (error) { console.error("Erreur lors de l'extraction intermédiaire:", error); if (typeof window.showError === 'function') { window.showError("Erreur lors de l'extraction. Vérifiez votre connexion."); } } finally { document.getElementById('modalExtraireIntermediaire').disabled = false; if (typeof window.hideLoader === 'function') { window.hideLoader(); } } } // Gérer la soumission du formulaire async function handleSubmitForm(event, redirection) { event.preventDefault(); if (typeof window.showLoader === 'function') { window.showLoader(); } try { let idIntermediaire = intermediaire?.id; const numPortefeuille = document.getElementById('numPortefeuille').value; let responseIntermediaire; if (numPortefeuille) { responseIntermediaire = await fetch(`/intermediaire/read/${numPortefeuille}`, { method: 'GET', headers: {'Content-Type': 'application/json'}, }); } const dataIntermediaire = await responseIntermediaire.json(); if (dataIntermediaire.valid) { idIntermediaire = dataIntermediaire.idIntermediaire; } else { // Créez l'intermediaire ici si non trouvé const responseCreateIntermediaire = await fetch(`/intermediaire/create`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, }); const dataCreateIntermediaire = await responseCreateIntermediaire.json(); if (dataCreateIntermediaire.valid) { idIntermediaire = dataCreateIntermediaire.intermediaire.id; } } console.log(idIntermediaire); // // Mettre à jour le contrat avec l'ID du intermediaire if (idIntermediaire) { let type if (document.getElementById('courtier').checked == true) { type = "COURTIER" } else { if (document.getElementById('mutualiste').checked == true) { type = "AGENT MUTUALISTE" } else { type = "AGENT NON MUTUALISTE" } } const response = await fetch(`/intermediaire/update/${idIntermediaire}`, { method: 'POST', body: JSON.stringify({ "numPortefeuille": document.getElementById('numPortefeuille').value, "nom": document.getElementById('nomIntermediaire').value.toUpperCase(), "numTelephone": document.getElementById('numTelIntermediaire').value, "mail": document.getElementById('emailIntermediaire').value, "adresse": document.getElementById('adresseIntermediaire').value.toUpperCase(), "codePostal": document.getElementById('codePostalIntermediaire').value, "ville": document.getElementById('villeIntermediaire').value.toUpperCase(), "numOrias": document.getElementById('numOrias').value, "type": type }), headers: { 'Content-Type': 'application/json', }, }); const data = await response.json(); if (data.valid) { const idContrat = contrat?.id; fetch(`/contrat/update/intermediaire/${idContrat}/${idIntermediaire}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, }) .then(response => response.json()) .then(data => { if (data.valid) { // Update Session storage const intermediaireStorage = JSON.parse(sessionStorage.getItem('tmp')); if (intermediaireStorage) { intermediaireStorage.numAgent = document.getElementById('numPortefeuille').value.toUpperCase(); intermediaireStorage.nomAgent = document.getElementById('nomIntermediaire').value; intermediaireStorage.telAgent = document.getElementById('numTelIntermediaire').value.toUpperCase(); intermediaireStorage.adresseAgent = document.getElementById('adresseIntermediaire').value; intermediaireStorage.postalAgent = document.getElementById('codePostalIntermediaire').value.toUpperCase(); intermediaireStorage.villeAgent = document.getElementById('villeIntermediaire').value.toUpperCase(); sessionStorage.setItem('tmp', JSON.stringify(intermediaireStorage)) } if (redirection == "tarif"){ window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=tarif`; } else if (redirection == "projet"){ window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=projet`; } } else { console.log('Echec lors de la mise à jour de la relation id contrat - id client :', data); if (typeof window.hideLoader === 'function') { window.hideLoader(); } if (typeof window.showError === 'function') { window.showError("Erreur lors de la mise à jour du contrat."); } } }) .catch(error => { console.error("Erreur lors de la mise à jour du contrat:", error); if (typeof window.hideLoader === 'function') { window.hideLoader(); } if (typeof window.showError === 'function') { window.showError("Erreur lors de la mise à jour. Vérifiez votre connexion."); } }); } else { if (typeof window.hideLoader === 'function') { window.hideLoader(); } } } catch (error) { console.error("Erreur lors de la soumission du formulaire intermédiaire:", error); if (typeof window.hideLoader === 'function') { window.hideLoader(); } if (typeof window.showError === 'function') { window.showError("Erreur lors de la soumission. Vérifiez votre connexion."); } } } // Exposer init globalement pour y accéder depuis l'extérieur window.initSubmenuForm = init; })();