384 lines
18 KiB
JavaScript
384 lines
18 KiB
JavaScript
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;
|
|
})();
|