feat: Nommage des templates / Intégration dans formulaire d'inscription

parent [#22]
This commit is contained in:
N3WT DE COMPET
2025-03-01 22:08:00 +01:00
parent b52b265835
commit eb81bbba92
12 changed files with 142 additions and 81 deletions

View File

@ -16,8 +16,7 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
const [templateMaster, setTemplateMaster] = useState(null);
const [uploadedFileName, setUploadedFileName] = useState('');
const [selectedGroups, setSelectedGroups] = useState([]);
const [guardianEmails, setGuardianEmails] = useState([]);
const [registrationFormIds, setRegistrationFormIds] = useState([]);
const [guardianDetails, setGuardianDetails] = useState([]);
const csrfToken = useCsrfToken();
@ -61,25 +60,22 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
const handleGroupChange = (selectedGroups) => {
setSelectedGroups(selectedGroups);
const emails = selectedGroups.flatMap(group => group.registration_forms.flatMap(form => form.guardians.map(guardian => guardian.email)));
setGuardianEmails(emails); // Mettre à jour la variable d'état avec les emails des guardians
const registrationFormIds = selectedGroups.flatMap(group => group.registration_forms.map(form => form.student_id));
setRegistrationFormIds(registrationFormIds); // Mettre à jour la variable d'état avec les IDs des dossiers d'inscription
logger.debug('Emails des Guardians associés aux groupes sélectionnés:', emails);
logger.debug('IDs des dossiers d\'inscription associés aux groupes sélectionnés:', registrationFormIds);
const details = selectedGroups.flatMap(group =>
group.registration_forms.flatMap(form =>
form.guardians.map(guardian => ({
email: guardian.email,
last_name: form.last_name,
first_name: form.first_name,
registration_form: form.student_id
}))
)
);
setGuardianDetails(details); // Mettre à jour la variable d'état avec les détails des guardians
};
const handleLoad = (detail) => {
const templateId = detail?.id;
setTemplateMaster(detail);
if (fileToEdit) {
logger.debug('Editing master ID :', templateId);
}
else {
logger.debug('Opening master ID :', templateId);
}
}
const handleUpload = (detail) => {
@ -87,6 +83,11 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
setUploadedFileName(detail.name);
};
const handleChange = (detail) => {
logger.debug(detail)
setUploadedFileName(detail.name);
}
const handleSubmit = () => {
if (fileToEdit) {
logger.debug('Modification du template master:', templateMaster?.id);
@ -95,8 +96,7 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
group_ids: selectedGroups.map(group => group.id),
template_id: templateMaster?.id
});
}
else {
} else {
logger.debug('Création du template master:', templateMaster?.id);
handleCreateTemplateMaster({
name: uploadedFileName,
@ -104,18 +104,17 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
template_id: templateMaster?.id
});
guardianEmails.forEach((email, index) => {
cloneTemplate(templateMaster?.id, email)
guardianDetails.forEach((guardian, index) => {
cloneTemplate(templateMaster?.id, guardian.email)
.then(clonedDocument => {
// Sauvegarde des templates clonés dans la base de données
const data = {
name: `clone_${clonedDocument.id}`,
template_id: clonedDocument.id,
name: `${uploadedFileName}_${guardian.first_name}_${guardian.last_name}`,
slug: clonedDocument.slug,
template_id: clonedDocument.template_id,
master: templateMaster?.id,
registration_form: registrationFormIds[index]
registration_form: guardian.registration_form
};
createRegistrationTemplates(data, csrfToken)
.then(response => {
logger.debug('Template enregistré avec succès:', response);
@ -125,16 +124,14 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
logger.error('Erreur lors de l\'enregistrement du template:', error);
});
// Logique pour envoyer chaque template au submitter
logger.debug('Sending template to:', email);
logger.debug('Sending template to:', guardian.email);
})
.catch(error => {
logger.error('Error during cloning or sending:', error);
});
});
}
};
return (
@ -164,6 +161,7 @@ export default function FileUpload({ handleCreateTemplateMaster, handleEditTempl
language={'fr'}
onLoad={handleLoad}
onUpload={handleUpload}
onChange={handleChange}
onSave={handleSubmit}
className="h-full overflow-auto" // Ajouter overflow-auto pour permettre le défilement
style={{ maxHeight: '70vh' }} // Limiter la hauteur maximale du composant