feat: Refactoring de la fonction de création de profil sur guardian côté

FRONT
This commit is contained in:
N3WT DE COMPET
2025-03-11 21:58:09 +01:00
parent 023b46e16e
commit 753a8d647e
18 changed files with 326 additions and 386 deletions

View File

@ -369,164 +369,85 @@ useEffect(()=>{
const allFeesIds = [...selectedRegistrationFeesIds, ...selectedTuitionFeesIds];
const allDiscountsds = [...selectedRegistrationDiscountsIds, ...selectedTuitionDiscountsIds];
if (updatedData.selectedGuardians.length !== 0) {
const selectedGuardiansIds = updatedData.selectedGuardians.map(guardianId => guardianId)
const guardianEmail = updatedData.guardianEmail
const data = {
student: {
last_name: updatedData.studentLastName,
first_name: updatedData.studentFirstName,
const data = {
student: {
last_name: updatedData.studentLastName,
first_name: updatedData.studentFirstName,
guardians: updatedData.selectedGuardians.length !== 0 ? updatedData.selectedGuardians.map(guardianId => ({ id: guardianId })) : [{
profile_role: {
establishment: selectedEstablishmentId,
role_type: 2,
is_active: false,
profile: {
email: updatedData.guardianEmail,
password: 'Provisoire01!',
username: updatedData.guardianEmail,
}
},
idGuardians: selectedGuardiansIds,
fees: allFeesIds,
discounts: allDiscountsds,
fileGroup: selectedFileGroup,
establishment: ESTABLISHMENT_ID
};
last_name: updatedData.guardianLastName,
first_name: updatedData.guardianFirstName,
birth_date: updatedData.guardianBirthDate,
address: updatedData.guardianAddress,
phone: updatedData.guardianPhone,
profession: updatedData.guardianProfession
}],
sibling: []
},
fees: allFeesIds,
discounts: allDiscountsds,
fileGroup: selectedFileGroup,
establishment: selectedEstablishmentId
};
createRegisterForm(data, csrfToken)
.then(data => {
// Cloner les templates pour chaque templateMaster du fileGroup
const masters = templateMasters.filter(file => file.groups.includes(selectedFileGroup));
const clonePromises = masters.map((templateMaster, index) => {
return cloneTemplate(templateMaster.id, guardianEmail, templateMaster.is_required)
.then(clonedDocument => {
// Sauvegarde des templates clonés dans la base de données
const cloneData = {
name: `clone_${clonedDocument.id}`,
slug: clonedDocument.slug,
id: clonedDocument.id,
master: templateMaster.id,
registration_form: data.student.id
};
return createRegistrationTemplates(cloneData, csrfToken)
.then(response => {
logger.debug('Template enregistré avec succès:', response);
})
.catch(error => {
logger.error('Erreur lors de l\'enregistrement du template:', error);
});
})
.catch(error => {
logger.error('Error during cloning or sending:', error);
});
});
// Attendre que tous les clones soient créés
Promise.all(clonePromises)
.then(() => {
// Mise à jour immédiate des données
setRegistrationFormsDataPending(prevState => [...(prevState || []), data]);
setTotalPending(prev => prev + 1);
if (updatedData.autoMail) {
sendConfirmRegisterForm(data.student.id, updatedData.studentLastName, updatedData.studentFirstName);
}
closeModal();
// Forcer le rechargement complet des données
setReloadFetch(true);
})
.catch(error => {
logger.error('Error during cloning or sending:', error);
});
})
.catch((error) => {
logger.error('Error:', error);
});
} else {
const data = {
email: updatedData.guardianEmail,
password: 'Provisoire01!',
username: updatedData.guardianEmail,
is_active: 0,
droit: 2
}
createProfile(data, csrfToken)
.then(response => {
if (response.id) {
const data = {
student: {
last_name: updatedData.studentLastName,
first_name: updatedData.studentFirstName,
guardians: [{
email: updatedData.guardianEmail,
phone: updatedData.guardianPhone,
associated_profile: response.id
}],
sibling: []
},
fees: allFeesIds,
discounts: allDiscountsds,
fileGroup: selectedFileGroup,
establishment: ESTABLISHMENT_ID
createRegisterForm(data, csrfToken)
.then(data => {
// Cloner les templates pour chaque templateMaster du fileGroup
const masters = templateMasters.filter(file => file.groups.includes(selectedFileGroup));
const clonePromises = masters.map((templateMaster, index) => {
return cloneTemplate(templateMaster.id, updatedData.guardianEmail, templateMaster.is_required)
.then(clonedDocument => {
// Sauvegarde des templates clonés dans la base de données
const cloneData = {
name: `clone_${clonedDocument.id}`,
slug: clonedDocument.slug,
id: clonedDocument.id,
master: templateMaster.id,
registration_form: data.student.id
};
createRegisterForm(data, csrfToken)
.then(data => {
// Cloner les templates pour chaque templateMaster du fileGroup
const masters = templateMasters.filter(file => file.groups.includes(selectedFileGroup));
const clonePromises = masters.map((templateMaster, index) => {
return cloneTemplate(templateMaster.id, updatedData.guardianEmail, templateMaster.is_required)
.then(clonedDocument => {
// Sauvegarde des templates clonés dans la base de données
const cloneData = {
name: `clone_${clonedDocument.id}`,
slug: clonedDocument.slug,
id: clonedDocument.id,
master: templateMaster.id,
registration_form: data.student.id
};
return createRegistrationTemplates(cloneData, csrfToken)
.then(response => {
logger.debug('Template enregistré avec succès:', response);
})
.catch(error => {
logger.error('Erreur lors de l\'enregistrement du template:', error);
});
})
.catch(error => {
logger.error('Error during cloning or sending:', error);
});
});
// Attendre que tous les clones soient créés
Promise.all(clonePromises)
.then(() => {
// Mise à jour immédiate des données
setRegistrationFormsDataPending(prevState => [...(prevState || []), data]);
setTotalPending(prev => prev + 1);
if (updatedData.autoMail) {
sendConfirmRegisterForm(data.student.id, updatedData.studentLastName, updatedData.studentFirstName);
}
closeModal();
logger.debug('Success:', data);
// Forcer le rechargement complet des données
setReloadFetch(true);
})
.catch(error => {
logger.error('Error during cloning or sending:', error);
});
return createRegistrationTemplates(cloneData, csrfToken)
.then(response => {
logger.debug('Template enregistré avec succès:', response);
})
.catch((error) => {
logger.error('Error:', error);
deleteProfile(response.id, csrfToken)
.then(() => {
logger.debug('Profile deleted due to RF creation failure');
})
.catch(deleteError => {
logger.error('Error deleting profile:', deleteError);
});
.catch(error => {
logger.error('Erreur lors de l\'enregistrement du template:', error);
});
})
.catch(error => {
logger.error('Error during cloning or sending:', error);
});
});
// Attendre que tous les clones soient créés
Promise.all(clonePromises)
.then(() => {
// Mise à jour immédiate des données
setRegistrationFormsDataPending(prevState => [...(prevState || []), data]);
setTotalPending(prev => prev + 1);
if (updatedData.autoMail) {
sendConfirmRegisterForm(data.student.id, updatedData.studentLastName, updatedData.studentFirstName);
}
closeModal();
// Forcer le rechargement complet des données
setReloadFetch(true);
})
.catch(error => {
logger.error('Error:', error);
logger.error('Error during cloning or sending:', error);
});
}
})
.catch((error) => {
logger.error('Error:', error);
});
}
const columns = [