mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 16:03:21 +00:00
feat: Création de clones lors de la création de RF [#22]
This commit is contained in:
@ -28,7 +28,10 @@ import {
|
||||
editRegisterForm } from "@/app/actions/subscriptionAction"
|
||||
|
||||
import {
|
||||
fetchRegistrationTemplateMaster
|
||||
fetchRegistrationTemplateMaster,
|
||||
createRegistrationTemplates,
|
||||
fetchRegistrationFileGroups,
|
||||
cloneTemplate
|
||||
} from "@/app/actions/registerFileGroupAction";
|
||||
|
||||
import {
|
||||
@ -38,7 +41,7 @@ import {
|
||||
fetchRegistrationFees,
|
||||
fetchTuitionFees } from '@/app/actions/schoolAction';
|
||||
|
||||
import { createProfile } from '@/app/actions/authAction';
|
||||
import { createProfile, deleteProfile } from '@/app/actions/authAction';
|
||||
|
||||
import {
|
||||
BASE_URL,
|
||||
@ -46,7 +49,6 @@ import {
|
||||
|
||||
import DjangoCSRFToken from '@/components/DjangoCSRFToken'
|
||||
import { useCsrfToken } from '@/context/CsrfContext';
|
||||
import { fetchRegistrationFileGroups } from '@/app/actions/registerFileGroupAction';
|
||||
import { ESTABLISHMENT_ID } from '@/utils/Url';
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
@ -71,7 +73,7 @@ export default function Page({ params: { locale } }) {
|
||||
const [totalArchives, setTotalArchives] = useState(0);
|
||||
const [itemsPerPage, setItemsPerPage] = useState(5); // Définir le nombre d'éléments par page
|
||||
|
||||
const [fichiers, setFichiers] = useState([]);
|
||||
const [templateMasters, setTemplateMasters] = useState([]);
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const [isOpenAffectationClasse, setIsOpenAffectationClasse] = useState(false);
|
||||
const [student, setStudent] = useState('');
|
||||
@ -202,7 +204,7 @@ useEffect(() => {
|
||||
.then((data)=> {
|
||||
logger.debug(data);
|
||||
|
||||
setFichiers(data)
|
||||
setTemplateMasters(data)
|
||||
})
|
||||
.catch((err)=>{ err = err.message; logger.debug(err);})
|
||||
fetchRegistrationDiscounts()
|
||||
@ -258,7 +260,7 @@ useEffect(() => {
|
||||
.then(registerFormArchivedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegistrationTemplateMaster()
|
||||
.then((data)=> {setFichiers(data)})
|
||||
.then((data)=> {setTemplateMasters(data)})
|
||||
.catch((err)=>{ err = err.message; logger.debug(err);});
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
@ -365,6 +367,8 @@ useEffect(()=>{
|
||||
|
||||
if (updatedData.selectedGuardians.length !== 0) {
|
||||
const selectedGuardiansIds = updatedData.selectedGuardians.map(guardianId => guardianId)
|
||||
const guardianEmail = updatedData.guardianEmail
|
||||
|
||||
const data = {
|
||||
student: {
|
||||
last_name: updatedData.studentLastName,
|
||||
@ -379,15 +383,48 @@ useEffect(()=>{
|
||||
|
||||
createRegisterForm(data, csrfToken)
|
||||
.then(data => {
|
||||
// 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);
|
||||
// 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.template_id, guardianEmail)
|
||||
.then(clonedDocument => {
|
||||
// Sauvegarde des templates clonés dans la base de données
|
||||
const cloneData = {
|
||||
name: `clone_${clonedDocument.id}`,
|
||||
template_id: clonedDocument.id,
|
||||
master: templateMaster.template_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);
|
||||
@ -423,20 +460,60 @@ useEffect(()=>{
|
||||
|
||||
createRegisterForm(data, csrfToken)
|
||||
.then(data => {
|
||||
// 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);
|
||||
// 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.template_id, updatedData.guardianEmail)
|
||||
.then(clonedDocument => {
|
||||
// Sauvegarde des templates clonés dans la base de données
|
||||
const cloneData = {
|
||||
name: `clone_${clonedDocument.id}`,
|
||||
template_id: clonedDocument.id,
|
||||
master: templateMaster.template_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);
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error('Error:', error);
|
||||
//deleteProfile(response.id, csrfToken);
|
||||
deleteProfile(response.id, csrfToken)
|
||||
.then(() => {
|
||||
logger.debug('Profile deleted due to RF creation failure');
|
||||
})
|
||||
.catch(deleteError => {
|
||||
logger.error('Error deleting profile:', deleteError);
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user