mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
refactor: Document Ecole/Parent
This commit is contained in:
@ -102,7 +102,7 @@ export default function FileUploadDocuSeal({ handleCreateTemplateMaster, handleE
|
||||
logger.debug('creation du clone avec required : ', is_required)
|
||||
cloneTemplate(templateMaster?.id, guardian.email, is_required)
|
||||
.then(clonedDocument => {
|
||||
// Sauvegarde des templates clonés dans la base de données
|
||||
// Sauvegarde des schoolFileTemplates clonés dans la base de données
|
||||
const data = {
|
||||
name: `${uploadedFileName}_${guardian.first_name}_${guardian.last_name}`,
|
||||
slug: clonedDocument.slug,
|
||||
|
||||
@ -5,27 +5,32 @@ import Table from '@/components/Table';
|
||||
import FileUploadDocuSeal from '@/components/Structure/Files/FileUploadDocuSeal';
|
||||
import { BASE_URL } from '@/utils/Url';
|
||||
import {
|
||||
// GET
|
||||
fetchRegistrationFileGroups,
|
||||
fetchRegistrationSchoolFileMasters,
|
||||
fetchRegistrationSchoolFileTemplates,
|
||||
fetchRegistrationParentFileMasters,
|
||||
// POST
|
||||
createRegistrationFileGroup,
|
||||
deleteRegistrationFileGroup,
|
||||
createRegistrationSchoolFileMaster,
|
||||
createRegistrationParentFileMaster,
|
||||
// PUT
|
||||
editRegistrationFileGroup,
|
||||
fetchRegistrationTemplateMaster,
|
||||
createRegistrationTemplateMaster,
|
||||
editRegistrationTemplateMaster,
|
||||
deleteRegistrationTemplateMaster,
|
||||
fetchRegistrationTemplates,
|
||||
fetchRegistrationParentFiles,
|
||||
createRegistrationParentFiles,
|
||||
editRegistrationParentFiles,
|
||||
deleteRegistrationParentFiles
|
||||
editRegistrationSchoolFileMaster,
|
||||
editRegistrationParentFileMaster,
|
||||
// DELETE
|
||||
deleteRegistrationFileGroup,
|
||||
deleteRegistrationSchoolFileMaster,
|
||||
deleteRegistrationParentFileMaster,
|
||||
} from '@/app/actions/registerFileGroupAction';
|
||||
import RegistrationFileGroupForm from '@/components/Structure/Files/RegistrationFileGroupForm';
|
||||
import logger from '@/utils/logger';
|
||||
import ParentFilesSection from '@/components/Structure/Files/ParentFilesSection';
|
||||
|
||||
export default function FilesGroupsManagement({ csrfToken, selectedEstablishmentId }) {
|
||||
const [templateMasters, setTemplateMasters] = useState([]);
|
||||
const [templates, setTemplates] = useState([]);
|
||||
const [schoolFileMasters, setSchoolFileMasters] = useState([]);
|
||||
const [schoolFileTemplates, setSchoolFileTemplates] = useState([]);
|
||||
const [parentFiles, setParentFileMasters] = useState([]);
|
||||
const [groups, setGroups] = useState([]);
|
||||
const [selectedGroup, setSelectedGroup] = useState(null);
|
||||
const [isModalOpen, setIsModalOpen] = useState(false);
|
||||
@ -37,8 +42,6 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
const [editingDocumentId, setEditingDocumentId] = useState(null);
|
||||
const [formData, setFormData] = useState({});
|
||||
|
||||
const [parentFiles, setParentFiles] = useState([]);
|
||||
|
||||
const handleReloadTemplates = () => {
|
||||
setReloadTemplates(true);
|
||||
}
|
||||
@ -54,17 +57,17 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
useEffect(() => {
|
||||
if (selectedEstablishmentId) {
|
||||
Promise.all([
|
||||
fetchRegistrationTemplateMaster(),
|
||||
fetchRegistrationSchoolFileMasters(),
|
||||
fetchRegistrationFileGroups(selectedEstablishmentId),
|
||||
fetchRegistrationTemplates(),
|
||||
fetchRegistrationParentFiles()
|
||||
]).then(([filesTemplateMasters, groupsData, filesTemplates, filesParentFiles]) => {
|
||||
fetchRegistrationSchoolFileTemplates(),
|
||||
fetchRegistrationParentFileMasters()
|
||||
]).then(([dataSchoolFileMasters, groupsData, dataSchoolFileTemplates, dataParentFileMasters]) => {
|
||||
setGroups(groupsData);
|
||||
setTemplates(filesTemplates);
|
||||
setParentFiles(filesParentFiles);
|
||||
setSchoolFileTemplates(dataSchoolFileTemplates);
|
||||
setParentFileMasters(dataParentFileMasters);
|
||||
// Transformer chaque fichier pour inclure les informations complètes du groupe
|
||||
const transformedFiles = filesTemplateMasters.map(file => transformFileData(file, groupsData));
|
||||
setTemplateMasters(transformedFiles);
|
||||
const transformedFiles = dataSchoolFileMasters.map(file => transformFileData(file, groupsData));
|
||||
setSchoolFileMasters(transformedFiles);
|
||||
}).catch(err => {
|
||||
console.log(err.message);
|
||||
}).finally(() => {
|
||||
@ -75,7 +78,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
|
||||
const deleteTemplateMaster = (templateMaster) => {
|
||||
// Supprimer les clones associés via l'API DocuSeal
|
||||
const removeClonesPromises = templates
|
||||
const removeClonesPromises = schoolFileTemplates
|
||||
.filter(template => template.master === templateMaster.id)
|
||||
.map(template => removeTemplate(template.id));
|
||||
|
||||
@ -90,10 +93,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
logger.debug('Master et clones supprimés avec succès de DocuSeal.');
|
||||
|
||||
// Supprimer le template master de la base de données
|
||||
deleteRegistrationTemplateMaster(templateMaster.id, csrfToken)
|
||||
deleteRegistrationSchoolFileMaster(templateMaster.id, csrfToken)
|
||||
.then(response => {
|
||||
if (response.ok) {
|
||||
setTemplateMasters(templateMasters.filter(fichier => fichier.id !== templateMaster.id));
|
||||
setSchoolFileMasters(schoolFileMasters.filter(fichier => fichier.id !== templateMaster.id));
|
||||
alert('Fichier supprimé avec succès.');
|
||||
} else {
|
||||
alert('Erreur lors de la suppression du fichier dans la base de données.');
|
||||
@ -151,11 +154,11 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
};
|
||||
logger.debug(data);
|
||||
|
||||
createRegistrationTemplateMaster(data, csrfToken)
|
||||
createRegistrationSchoolFileMaster(data, csrfToken)
|
||||
.then(data => {
|
||||
// Transformer le nouveau fichier avec les informations du groupe
|
||||
const transformedFile = transformFileData(data, groups);
|
||||
setTemplateMasters(prevFiles => [...prevFiles, transformedFile]);
|
||||
setSchoolFileMasters(prevFiles => [...prevFiles, transformedFile]);
|
||||
setIsModalOpen(false);
|
||||
})
|
||||
.catch(error => {
|
||||
@ -172,11 +175,11 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
};
|
||||
logger.debug(data);
|
||||
|
||||
editRegistrationTemplateMaster(id, data, csrfToken)
|
||||
editRegistrationSchoolFileMaster(id, data, csrfToken)
|
||||
.then(data => {
|
||||
// Transformer le fichier mis à jour avec les informations du groupe
|
||||
const transformedFile = transformFileData(data, groups);
|
||||
setTemplateMasters(prevFichiers =>
|
||||
setSchoolFileMasters(prevFichiers =>
|
||||
prevFichiers.map(f => f.id === id ? transformedFile : f)
|
||||
);
|
||||
setIsModalOpen(false);
|
||||
@ -224,10 +227,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
};
|
||||
|
||||
const handleGroupDelete = (groupId) => {
|
||||
// Vérifier si des templateMasters utilisent ce groupe
|
||||
const filesInGroup = templateMasters.filter(file => file.group && file.group.id === groupId);
|
||||
// Vérifier si des schoolFileMasters utilisent ce groupe
|
||||
const filesInGroup = schoolFileMasters.filter(file => file.group && file.group.id === groupId);
|
||||
if (filesInGroup.length > 0) {
|
||||
alert('Impossible de supprimer ce groupe car il contient des templateMasters. Veuillez d\'abord retirer tous les templateMasters de ce groupe.');
|
||||
alert('Impossible de supprimer ce groupe car il contient des schoolFileMasters. Veuillez d\'abord retirer tous les schoolFileMasters de ce groupe.');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -329,10 +332,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
};
|
||||
|
||||
const handleCreate = (newParentFile) => {
|
||||
return createRegistrationParentFiles(newParentFile, csrfToken)
|
||||
return createRegistrationParentFileMaster(newParentFile, csrfToken)
|
||||
.then((createdFile) => {
|
||||
// Ajouter le nouveau fichier parent à la liste existante
|
||||
setParentFiles((prevFiles) => [...prevFiles, createdFile]);
|
||||
setParentFileMasters((prevFiles) => [...prevFiles, createdFile]);
|
||||
logger.debug('Document parent créé avec succès:', createdFile);
|
||||
})
|
||||
.catch((error) => {
|
||||
@ -342,11 +345,11 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
};
|
||||
|
||||
const handleEdit = (id, updatedFile) => {
|
||||
return editRegistrationParentFiles(id, updatedFile, csrfToken)
|
||||
return editRegistrationParentFileMaster(id, updatedFile, csrfToken)
|
||||
.then((response) => {
|
||||
const modifiedFile = response.data; // Extraire les données mises à jour
|
||||
// Mettre à jour la liste des fichiers parents
|
||||
setParentFiles((prevFiles) =>
|
||||
setParentFileMasters((prevFiles) =>
|
||||
prevFiles.map((file) => (file.id === id ? modifiedFile : file))
|
||||
);
|
||||
logger.debug('Document parent mis à jour avec succès:', modifiedFile);
|
||||
@ -360,10 +363,10 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
};
|
||||
|
||||
const handleDelete = (id) => {
|
||||
return deleteRegistrationParentFiles(id, csrfToken)
|
||||
return deleteRegistrationParentFileMaster(id, csrfToken)
|
||||
.then(() => {
|
||||
// Mettre à jour la liste des fichiers parents en supprimant l'élément correspondant
|
||||
setParentFiles((prevFiles) => prevFiles.filter((file) => file.id !== id));
|
||||
setParentFileMasters((prevFiles) => prevFiles.filter((file) => file.id !== id));
|
||||
logger.debug('Document parent supprimé avec succès:', id);
|
||||
})
|
||||
.catch((error) => {
|
||||
@ -371,7 +374,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
});
|
||||
};
|
||||
|
||||
const filteredFiles = templateMasters.filter(file => {
|
||||
const filteredFiles = schoolFileMasters.filter(file => {
|
||||
if (!selectedGroup) return true;
|
||||
return file.groups && file.groups.some(group => group.id === parseInt(selectedGroup));
|
||||
});
|
||||
@ -444,7 +447,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
<Modal
|
||||
isOpen={isGroupModalOpen}
|
||||
setIsOpen={setIsGroupModalOpen}
|
||||
title={groupToEdit ? 'Modifier le groupe' : 'Ajouter un groupe de templateMasters'}
|
||||
title={groupToEdit ? 'Modifier le groupe' : 'Ajouter un groupe de schoolFileMasters'}
|
||||
ContentComponent={() => (
|
||||
<RegistrationFileGroupForm
|
||||
onSubmit={handleGroupSubmit}
|
||||
@ -513,7 +516,7 @@ export default function FilesGroupsManagement({ csrfToken, selectedEstablishment
|
||||
{/* Section Pièces à fournir */}
|
||||
<ParentFilesSection
|
||||
parentFiles={parentFiles}
|
||||
setParentFiles={setParentFiles}
|
||||
setParentFileMasters={setParentFileMasters}
|
||||
groups={groups}
|
||||
handleCreate={handleCreate}
|
||||
handleEdit={handleEdit}
|
||||
|
||||
Reference in New Issue
Block a user