feat: Validation document par document [N3WTS-2]

This commit is contained in:
N3WT DE COMPET
2026-02-19 18:53:33 +01:00
parent 3779a47417
commit 8fd1b62ec0
5 changed files with 240 additions and 117 deletions

View File

@ -10,6 +10,7 @@ import Loader from '@/components/Loader';
import { useEstablishment } from '@/context/EstablishmentContext';
import { FE_ADMIN_SUBSCRIPTIONS_URL } from '@/utils/Url';
import { useNotification } from '@/context/NotificationContext';
import { editRegistrationSchoolFileTemplates, editRegistrationParentFileTemplates } from '@/app/actions/registerFileGroupAction';
export default function Page() {
const [isLoadingRefuse, setIsLoadingRefuse] = useState(false);
@ -21,6 +22,7 @@ export default function Page() {
const studentId = searchParams.get('studentId');
const firstName = searchParams.get('firstName');
const lastName = searchParams.get('lastName');
const email = searchParams.get('email');
const level = searchParams.get('level');
const sepa_file =
searchParams.get('sepa_file') === 'null'
@ -86,12 +88,7 @@ export default function Page() {
};
const handleRefuseRF = (reason) => {
setIsLoadingRefuse(true);
const data = {
status: 6, // STATUS_ARCHIVED
notes: reason,
};
const handleRefuseRF = (data) => {
const formData = new FormData();
formData.append('data', JSON.stringify(data));
editRegisterForm(studentId, formData, csrfToken)
@ -108,6 +105,37 @@ export default function Page() {
});
};
// Validation/refus d'un document individuel (hors fiche élève)
const handleValidateOrRefuseDoc = ({ templateId, type, validated, csrfToken }) => {
if (!templateId) return;
let editFn = null;
if (type === 'school') {
editFn = editRegistrationSchoolFileTemplates;
} else if (type === 'parent') {
editFn = editRegistrationParentFileTemplates;
}
if (!editFn) return;
const updateData = new FormData();
updateData.append('data', JSON.stringify({ isValidated: validated }));
editFn(templateId, updateData, csrfToken)
.then((response) => {
logger.debug(`Document ${validated ? 'validé' : 'refusé'} (type: ${type}, id: ${templateId})`, response);
showNotification(
`Le document a bien été ${validated ? 'validé' : 'refusé'}.`,
'success',
'Succès'
);
})
.catch((error) => {
logger.error('Erreur lors de la validation/refus du document:', error);
showNotification(
`Erreur lors de la ${validated ? 'validation' : 'refus'} du document.`,
'error',
'Erreur'
);
});
};
if (isLoading) {
return <Loader />;
}
@ -117,12 +145,15 @@ export default function Page() {
studentId={studentId}
firstName={firstName}
lastName={lastName}
email={email}
sepa_file={sepa_file}
student_file={student_file}
onAccept={handleAcceptRF}
classes={classes}
onRefuse={handleRefuseRF}
isLoadingRefuse={isLoadingRefuse}
handleValidateOrRefuseDoc={handleValidateOrRefuseDoc}
csrfToken={csrfToken}
/>
);
}