236 lines
8.4 KiB
JavaScript
236 lines
8.4 KiB
JavaScript
document.addEventListener('DOMContentLoaded', async function () {
|
|
const numParcours = getNumParcoursFromURL();
|
|
|
|
// Initialisation des modals Materialize
|
|
const modals = document.querySelectorAll('.modal');
|
|
M.Modal.init(modals);
|
|
|
|
// Récupération des informations du parcours
|
|
(async () => {
|
|
try {
|
|
const data = await fetchWithJson(`/parcours/read/${numParcours}`, 'GET');
|
|
|
|
if (data.valid) {
|
|
const contrat = data.parcours["@expand"].contrat;
|
|
|
|
if (contrat) {
|
|
document.getElementById('idContrat').value = isNullOrUndefined(contrat.id) ? '' : contrat.id;
|
|
document.getElementById('numContrat').value = isNullOrUndefined(contrat.numContrat) ? '' : contrat.numContrat;
|
|
document.getElementById('numSaisine').value = isNullOrUndefined(contrat.numSaisine) ? '' : contrat.numSaisine;
|
|
|
|
if (contrat.produit) {
|
|
document.getElementById('typeProjet').value = contrat.produit;
|
|
}
|
|
|
|
if (contrat.type) {
|
|
document.getElementById('typeProduit').value = contrat.type;
|
|
}
|
|
}
|
|
|
|
checkNumberProductProject()
|
|
}
|
|
} catch (error) {
|
|
console.error("Erreur lors de la récupération des informations du parcours:", error);
|
|
}
|
|
})();
|
|
|
|
// Vérification des informations contrats dans la base
|
|
document.getElementById('checkNumsBtn').addEventListener('click', function (event) {
|
|
// Empêche le comportement par défaut du formulaire
|
|
event.preventDefault();
|
|
|
|
const numContratElement = document.getElementById('numContrat');
|
|
const numSaisineElement = document.getElementById('numSaisine');
|
|
|
|
const numContratValue = numContratElement ? numContratElement.value.trim() : "";
|
|
const numSaisineValue = numSaisineElement ? numSaisineElement.value.trim() : "";
|
|
|
|
if (numContratValue) {
|
|
fetchContractDetails(`/contrat/read/numContrat/${numContratValue}`, numContratValue);
|
|
} else {
|
|
fetchContractDetails(`/contrat/read/numSaisine/${numSaisineValue}`, numSaisineValue);
|
|
}
|
|
});
|
|
|
|
// Ajouts des informations contrats au parcours
|
|
document.getElementById('btnYes').addEventListener('click', function (event) {
|
|
const idContrat = document.getElementById('idContrat').value;
|
|
|
|
// Update Parcours avec ID contrat
|
|
fetch(`/parcours/update/${numParcours}/${idContrat}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.valid) {
|
|
window.location.reload();
|
|
} else {
|
|
console.log("Echec lors de la mise à jour de la relation id contrat - id parcours :", data);
|
|
}
|
|
});
|
|
});
|
|
|
|
// Ecoute de l'événement 'input' au champ numParcours
|
|
document.getElementById('numContrat').addEventListener('input', function () {
|
|
validateField('numContrat', true);
|
|
});
|
|
|
|
// Ecoute de l'événement 'input' au champ numParcours
|
|
document.getElementById('numSaisine').addEventListener('input', function () {
|
|
validateField('numSaisine', true);
|
|
});
|
|
|
|
// Ecoute de l'événement 'input' sur l'ensemble des champs du formulaire
|
|
document.getElementById('projetForm').addEventListener('input', function () {
|
|
checkNumberProductProject()
|
|
});
|
|
|
|
//Submit Event "Enregistrer et continuer"
|
|
document.getElementById('projetForm').addEventListener('submit', async function (event) {
|
|
// Empêche le comportement par défaut du formulaire
|
|
event.preventDefault();
|
|
|
|
// Supression mémoire tampon Client/Inter
|
|
sessionStorage.removeItem('tmp');
|
|
|
|
// Extraction des valeurs du formulaire
|
|
const numContrat = document.getElementById('numContrat').value;
|
|
const numSaisine = document.getElementById('numSaisine').value;
|
|
const typeProjet = document.getElementById('typeProjet').value;
|
|
const typeProduit = document.getElementById('typeProduit').value;
|
|
let idContrat = "";
|
|
|
|
if (numSaisine != "") {
|
|
const response = await fetch(`/contrat/read/numSaisine/${numSaisine}`, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
const data = await response.json();
|
|
|
|
if (data.valid) {
|
|
idContrat = data.contrat.id;
|
|
}
|
|
}
|
|
|
|
if (numContrat != "" && idContrat == "") {
|
|
const response = await fetch(`/contrat/read/numContrat/${numContrat}`, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
const data = await response.json();
|
|
|
|
if (data.valid) {
|
|
idContrat = data.contrat.id;
|
|
}
|
|
}
|
|
|
|
if (idContrat == "") {
|
|
const response = await fetch(`/contrat/create`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
const data = await response.json();
|
|
|
|
if (data.valid) {
|
|
idContrat = data.contrat.id;
|
|
}
|
|
}
|
|
|
|
const response = await fetch(`/contrat/update/${idContrat}`, {
|
|
method: 'POST',
|
|
body: JSON.stringify({
|
|
"numContrat": numContrat,
|
|
"numSaisine": numSaisine,
|
|
"produit": typeProjet,
|
|
"type": typeProduit
|
|
}),
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
const data = await response.json();
|
|
|
|
if (data.valid) {
|
|
fetch(`/parcours/update/${numParcours}/${idContrat}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.valid) {
|
|
window.location.href = `/navParcours?numParcours=${getNumParcoursFromURL()}&submenu=client`;
|
|
} else {
|
|
console.log('Echec lors de la mise à jour de la relation id contrat - id parcours :', data);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Fonction fetch des informations contrat
|
|
function fetchContractDetails(endpoint, value) {
|
|
fetch(endpoint, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.valid) {
|
|
// Affiche un modal
|
|
const elem = document.getElementById('matchSaisineContrat');
|
|
const instance = M.Modal.getInstance(elem);
|
|
|
|
const contrat = data.contrat;
|
|
const client = contrat && contrat["@expand"] ? contrat["@expand"].client : null;
|
|
const intermediaire = contrat && contrat["@expand"] ? contrat["@expand"].intermediaire : null;
|
|
|
|
document.getElementById('idContrat').value = contrat.id ? contrat.id : null;
|
|
document.getElementById('displayedNumContrat').innerText = contrat.numContrat ? contrat.numContrat : null;
|
|
document.getElementById('displayedNumSaisine').innerText = contrat.numSaisine ? contrat.numSaisine : null;
|
|
document.getElementById('dateCreaContrat').innerText = contrat.created
|
|
? new Date(contrat.created).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' })
|
|
: null;
|
|
document.getElementById('dateModiContrat').innerText = contrat.updated
|
|
? new Date(contrat.updated).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' })
|
|
: null;
|
|
document.getElementById('displayedTypeContrat').innerText = contrat.type ? contrat.type : null;
|
|
document.getElementById('displayedProduitContrat').innerText = contrat.produit ? contrat.produit : null;
|
|
document.getElementById('nomClientContrat').innerText = client && client.nom ? client.nom : null;
|
|
document.getElementById('nomInterContrat').innerText = intermediaire && intermediaire.nom ? intermediaire.nom : null;
|
|
|
|
instance.open();
|
|
} else {
|
|
// Affiche un modal
|
|
const elem = document.getElementById('noMatchSaisineContrat');
|
|
const instance = M.Modal.getInstance(elem);
|
|
|
|
instance.open();
|
|
}
|
|
});
|
|
}
|
|
|
|
//Vérifie si le numero de contrat OU le numero de saisine, en plus du choix du produit et projet, ont été selectionnés
|
|
//Active le bouton submit en fonction
|
|
function checkNumberProductProject() {
|
|
const isNumContratValid = (document.getElementById('numContrat').value !== "" && validateField('numContrat', true))
|
|
const isNumSaisineValid = (document.getElementById('numSaisine').value !== "" && validateField('numSaisine', true))
|
|
|
|
if ((isNumContratValid || isNumSaisineValid) && (document.getElementById('typeProjet').value !== "") && (document.getElementById('typeProduit').value !== "")) {
|
|
document.getElementById('infoClientBtn').disabled = false
|
|
} else {
|
|
document.getElementById('infoClientBtn').disabled = true
|
|
}
|
|
} |