mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 16:03:21 +00:00
feat: Nommage des templates / Intégration dans formulaire d'inscription
parent [#22]
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user