mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-04-05 20:51:26 +00:00
fix: Upload document
This commit is contained in:
@ -55,6 +55,11 @@ export default function DynamicFormsList({
|
||||
return cleaned;
|
||||
};
|
||||
|
||||
const isDynamicForm = (template) =>
|
||||
template.formTemplateData &&
|
||||
Array.isArray(template.formTemplateData.fields) &&
|
||||
template.formTemplateData.fields.length > 0;
|
||||
|
||||
const hasLocalCompletion = (templateId) => {
|
||||
if (formsValidation[templateId] === true) return true;
|
||||
|
||||
@ -65,11 +70,22 @@ export default function DynamicFormsList({
|
||||
}
|
||||
|
||||
const savedResponses = existingResponses[templateId];
|
||||
return !!(
|
||||
if (
|
||||
savedResponses &&
|
||||
typeof savedResponses === 'object' &&
|
||||
Object.keys(savedResponses).length > 0
|
||||
);
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Pour les formulaires non dynamiques (upload de fichier),
|
||||
// vérifier si un fichier a déjà été uploadé sur le template
|
||||
const template = schoolFileTemplates.find((tpl) => tpl.id === templateId);
|
||||
if (template && template.file && !isDynamicForm(template)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
// Initialiser les données avec les réponses existantes
|
||||
@ -233,11 +249,6 @@ export default function DynamicFormsList({
|
||||
}
|
||||
};
|
||||
|
||||
const isDynamicForm = (template) =>
|
||||
template.formTemplateData &&
|
||||
Array.isArray(template.formTemplateData.fields) &&
|
||||
template.formTemplateData.fields.length > 0;
|
||||
|
||||
if (!schoolFileTemplates || schoolFileTemplates.length === 0) {
|
||||
return (
|
||||
<div className="text-center py-8">
|
||||
@ -497,10 +508,10 @@ export default function DynamicFormsList({
|
||||
{/* Cas non validé : bouton télécharger + upload */}
|
||||
{currentTemplate.isValidated !== true && (
|
||||
<div className="flex flex-col items-center gap-4 w-full">
|
||||
{/* Bouton télécharger le document source */}
|
||||
{currentTemplate.file && (
|
||||
{/* Bouton télécharger le document source (fichier maître) */}
|
||||
{(currentTemplate.master_file_url || currentTemplate.file) && (
|
||||
<a
|
||||
href={getSecureFileUrl(currentTemplate.file)}
|
||||
href={getSecureFileUrl(currentTemplate.master_file_url || currentTemplate.file)}
|
||||
className="flex items-center gap-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition"
|
||||
download
|
||||
>
|
||||
@ -517,6 +528,7 @@ export default function DynamicFormsList({
|
||||
onFileSelect={(file) =>
|
||||
handleUpload(file, currentTemplate)
|
||||
}
|
||||
existingFile={currentTemplate.file_url || currentTemplate.file}
|
||||
required
|
||||
enable={true}
|
||||
/>
|
||||
|
||||
@ -67,11 +67,17 @@ const FilesModal = ({
|
||||
: null,
|
||||
schoolFiles: fetchedSchoolFiles.map((file) => ({
|
||||
name: file.name || 'Document scolaire',
|
||||
url: file.file ? getSecureFileUrl(file.file) : null,
|
||||
url:
|
||||
file.file_url || file.file
|
||||
? getSecureFileUrl(file.file_url || file.file)
|
||||
: null,
|
||||
})),
|
||||
parentFiles: parentFiles.map((file) => ({
|
||||
name: file.master_name || 'Document parent',
|
||||
url: file.file ? getSecureFileUrl(file.file) : null,
|
||||
url:
|
||||
file.file_url || file.file
|
||||
? getSecureFileUrl(file.file_url || file.file)
|
||||
: null,
|
||||
})),
|
||||
sepaFile: selectedRegisterForm.sepa_file
|
||||
? {
|
||||
|
||||
@ -11,6 +11,7 @@ import {
|
||||
} from '@/app/actions/subscriptionAction';
|
||||
import {
|
||||
editRegistrationSchoolFileTemplates,
|
||||
editRegistrationParentFileTemplates,
|
||||
} from '@/app/actions/registerFileGroupAction';
|
||||
import {
|
||||
fetchRegistrationPaymentModes,
|
||||
@ -415,7 +416,8 @@ export default function InscriptionFormShared({
|
||||
const templateData = await fetchFormResponses(template.id);
|
||||
if (templateData && templateData.formTemplateData) {
|
||||
if (templateData.formTemplateData.responses) {
|
||||
responsesMap[template.id] = templateData.formTemplateData.responses;
|
||||
responsesMap[template.id] =
|
||||
templateData.formTemplateData.responses;
|
||||
} else {
|
||||
// Extraire les réponses depuis les champs
|
||||
const responses = {};
|
||||
@ -554,7 +556,7 @@ export default function InscriptionFormShared({
|
||||
const updateData = new FormData();
|
||||
updateData.append('file', file, finalFileName);
|
||||
|
||||
return editRegistrationSchoolFileTemplates(
|
||||
return editRegistrationParentFileTemplates(
|
||||
selectedFile.id,
|
||||
updateData,
|
||||
csrfToken
|
||||
@ -596,6 +598,46 @@ export default function InscriptionFormShared({
|
||||
});
|
||||
};
|
||||
|
||||
const handleSchoolFileUpload = (file, selectedFile) => {
|
||||
if (!file || !selectedFile) {
|
||||
logger.error('Données manquantes pour le téléversement.');
|
||||
return Promise.reject(
|
||||
new Error('Données manquantes pour le téléversement.')
|
||||
);
|
||||
}
|
||||
|
||||
const updateData = new FormData();
|
||||
updateData.append('file', file);
|
||||
|
||||
return editRegistrationSchoolFileTemplates(
|
||||
selectedFile.id,
|
||||
updateData,
|
||||
csrfToken
|
||||
)
|
||||
.then((response) => {
|
||||
logger.debug('School file template mis à jour avec succès :', response);
|
||||
|
||||
// Mettre à jour uniquement schoolFileTemplates
|
||||
setSchoolFileTemplates((prevTemplates) =>
|
||||
prevTemplates.map((template) =>
|
||||
template.id === selectedFile.id
|
||||
? {
|
||||
...template,
|
||||
file: response.data.file,
|
||||
file_url: response.data.file_url,
|
||||
}
|
||||
: template
|
||||
)
|
||||
);
|
||||
|
||||
return response;
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error('Erreur lors de la mise à jour du school file :', error);
|
||||
throw error;
|
||||
});
|
||||
};
|
||||
|
||||
const handleDeleteFile = (templateId) => {
|
||||
const fileToDelete = uploadedFiles.find(
|
||||
(file) => parseInt(file.id) === templateId && file.fileName
|
||||
@ -827,7 +869,7 @@ export default function InscriptionFormShared({
|
||||
onFormSubmit={handleDynamicFormSubmit}
|
||||
onValidationChange={handleDynamicFormsValidationChange}
|
||||
enable={enable}
|
||||
onFileUpload={handleFileUpload}
|
||||
onFileUpload={handleSchoolFileUpload}
|
||||
/>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user