mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
fix: Ajout d'un message de confirmation lors de la suppression d'un
master template docuseal
This commit is contained in:
@ -27,6 +27,8 @@ import RegistrationFileGroupForm from '@/components/Structure/Files/Registration
|
|||||||
import logger from '@/utils/logger';
|
import logger from '@/utils/logger';
|
||||||
import ParentFilesSection from '@/components/Structure/Files/ParentFilesSection';
|
import ParentFilesSection from '@/components/Structure/Files/ParentFilesSection';
|
||||||
import SectionHeader from '@/components/SectionHeader';
|
import SectionHeader from '@/components/SectionHeader';
|
||||||
|
import Popup from '@/components/Popup';
|
||||||
|
import Loader from '@/components/Loader';
|
||||||
|
|
||||||
export default function FilesGroupsManagement({
|
export default function FilesGroupsManagement({
|
||||||
csrfToken,
|
csrfToken,
|
||||||
@ -43,10 +45,13 @@ export default function FilesGroupsManagement({
|
|||||||
const [isGroupModalOpen, setIsGroupModalOpen] = useState(false);
|
const [isGroupModalOpen, setIsGroupModalOpen] = useState(false);
|
||||||
const [groupToEdit, setGroupToEdit] = useState(null);
|
const [groupToEdit, setGroupToEdit] = useState(null);
|
||||||
const [reloadTemplates, setReloadTemplates] = useState(false);
|
const [reloadTemplates, setReloadTemplates] = useState(false);
|
||||||
const [editingDocumentId, setEditingDocumentId] = useState(null);
|
|
||||||
const [formData, setFormData] = useState({});
|
|
||||||
|
|
||||||
const [uploadedFileName, setUploadedFileName] = useState('');
|
const [popupVisible, setPopupVisible] = useState(false);
|
||||||
|
const [popupMessage, setPopupMessage] = useState('');
|
||||||
|
const [removePopupVisible, setRemovePopupVisible] = useState(false);
|
||||||
|
const [removePopupMessage, setRemovePopupMessage] = useState('');
|
||||||
|
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
|
||||||
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
|
||||||
const handleReloadTemplates = () => {
|
const handleReloadTemplates = () => {
|
||||||
setReloadTemplates(true);
|
setReloadTemplates(true);
|
||||||
@ -101,55 +106,79 @@ export default function FilesGroupsManagement({
|
|||||||
}, [reloadTemplates, selectedEstablishmentId]);
|
}, [reloadTemplates, selectedEstablishmentId]);
|
||||||
|
|
||||||
const deleteTemplateMaster = (templateMaster) => {
|
const deleteTemplateMaster = (templateMaster) => {
|
||||||
// Supprimer les clones associés via l'API DocuSeal
|
setRemovePopupVisible(true);
|
||||||
const removeClonesPromises = schoolFileTemplates
|
setRemovePopupMessage(
|
||||||
.filter((template) => template.master === templateMaster.id)
|
`Attentions ! \nVous êtes sur le point de supprimer le document "${templateMaster.name}".\nÊtes-vous sûr(e) de vouloir poursuivre l'opération ?`
|
||||||
.map((template) => removeTemplate(template.id));
|
);
|
||||||
|
setRemovePopupOnConfirm(() => () => {
|
||||||
|
setIsLoading(true);
|
||||||
|
// Supprimer les clones associés via l'API DocuSeal
|
||||||
|
const removeClonesPromises = schoolFileTemplates
|
||||||
|
.filter((template) => template.master === templateMaster.id)
|
||||||
|
.map((template) => removeTemplate(template.id));
|
||||||
|
|
||||||
// Ajouter la suppression du master à la liste des promesses
|
// Ajouter la suppression du master à la liste des promesses
|
||||||
removeClonesPromises.push(removeTemplate(templateMaster.id));
|
removeClonesPromises.push(removeTemplate(templateMaster.id));
|
||||||
|
|
||||||
// Attendre que toutes les suppressions dans DocuSeal soient terminées
|
// Attendre que toutes les suppressions dans DocuSeal soient terminées
|
||||||
Promise.all(removeClonesPromises)
|
Promise.all(removeClonesPromises)
|
||||||
.then((responses) => {
|
.then((responses) => {
|
||||||
const allSuccessful = responses.every((response) => response.ok);
|
const allSuccessful = responses.every((response) => response.ok);
|
||||||
if (allSuccessful) {
|
if (allSuccessful) {
|
||||||
logger.debug('Master et clones supprimés avec succès de DocuSeal.');
|
logger.debug('Master et clones supprimés avec succès de DocuSeal.');
|
||||||
|
|
||||||
// Supprimer le template master de la base de données
|
// Supprimer le template master de la base de données
|
||||||
deleteRegistrationSchoolFileMaster(templateMaster.id, csrfToken)
|
deleteRegistrationSchoolFileMaster(templateMaster.id, csrfToken)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
setSchoolFileMasters(
|
setSchoolFileMasters(
|
||||||
schoolFileMasters.filter(
|
schoolFileMasters.filter(
|
||||||
(fichier) => fichier.id !== templateMaster.id
|
(fichier) => fichier.id !== templateMaster.id
|
||||||
)
|
)
|
||||||
|
);
|
||||||
|
setPopupMessage(
|
||||||
|
`Le document "${templateMaster.name}" a été correctement supprimé.`
|
||||||
|
);
|
||||||
|
setPopupVisible(true);
|
||||||
|
setRemovePopupVisible(false);
|
||||||
|
setIsLoading(false);
|
||||||
|
} else {
|
||||||
|
setPopupMessage(
|
||||||
|
`Erreur lors de la suppression du document "${templateMaster.name}".`
|
||||||
|
);
|
||||||
|
setPopupVisible(true);
|
||||||
|
setRemovePopupVisible(false);
|
||||||
|
setIsLoading(false);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('Error deleting file from database:', error);
|
||||||
|
setPopupMessage(
|
||||||
|
`Erreur lors de la suppression du document "${templateMaster.name}".`
|
||||||
);
|
);
|
||||||
alert('Fichier supprimé avec succès.');
|
setPopupVisible(true);
|
||||||
} else {
|
setRemovePopupVisible(false);
|
||||||
alert(
|
setIsLoading(false);
|
||||||
'Erreur lors de la suppression du fichier dans la base de données.'
|
});
|
||||||
);
|
} else {
|
||||||
}
|
setPopupMessage(
|
||||||
})
|
`Erreur lors de la suppression du document "${templateMaster.name}".`
|
||||||
.catch((error) => {
|
);
|
||||||
console.error('Error deleting file from database:', error);
|
setPopupVisible(true);
|
||||||
alert(
|
setRemovePopupVisible(false);
|
||||||
'Erreur lors de la suppression du fichier dans la base de données.'
|
setIsLoading(false);
|
||||||
);
|
}
|
||||||
});
|
})
|
||||||
} else {
|
.catch((error) => {
|
||||||
alert(
|
console.error('Error removing template from DocuSeal:', error);
|
||||||
'Erreur lors de la suppression du master ou des clones dans DocuSeal.'
|
setPopupMessage(
|
||||||
|
`Erreur lors de la suppression du document "${templateMaster.name}".`
|
||||||
);
|
);
|
||||||
}
|
setPopupVisible(true);
|
||||||
})
|
setRemovePopupVisible(false);
|
||||||
.catch((error) => {
|
setIsLoading(false);
|
||||||
console.error('Error removing template from DocuSeal:', error);
|
});
|
||||||
alert(
|
});
|
||||||
'Erreur lors de la suppression du master ou des clones dans DocuSeal.'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const removeTemplate = (templateId) => {
|
const removeTemplate = (templateId) => {
|
||||||
@ -428,6 +457,10 @@ export default function FilesGroupsManagement({
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (isLoading) {
|
||||||
|
return <Loader />;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full mx-auto mt-6">
|
<div className="w-full mx-auto mt-6">
|
||||||
{/* Modal pour les fichiers */}
|
{/* Modal pour les fichiers */}
|
||||||
@ -506,6 +539,20 @@ export default function FilesGroupsManagement({
|
|||||||
handleEdit={handleEdit}
|
handleEdit={handleEdit}
|
||||||
handleDelete={handleDelete}
|
handleDelete={handleDelete}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<Popup
|
||||||
|
visible={popupVisible}
|
||||||
|
message={popupMessage}
|
||||||
|
onConfirm={() => setPopupVisible(false)}
|
||||||
|
onCancel={() => setPopupVisible(false)}
|
||||||
|
uniqueConfirmButton={true}
|
||||||
|
/>
|
||||||
|
<Popup
|
||||||
|
visible={removePopupVisible}
|
||||||
|
message={removePopupMessage}
|
||||||
|
onConfirm={removePopupOnConfirm}
|
||||||
|
onCancel={() => setRemovePopupVisible(false)}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user