fix: Application du formattage sur les fichiers modifiés

This commit is contained in:
N3WT DE COMPET
2025-04-27 09:48:28 +02:00
parent 905b95f3a3
commit 001a5bc83c
10 changed files with 486 additions and 306 deletions

View File

@ -9,7 +9,13 @@ import { createRegistrationParentFileTemplate } from '@/app/actions/registerFile
import { useCsrfToken } from '@/context/CsrfContext';
import SectionHeader from '@/components/SectionHeader';
export default function ParentFilesSection({ parentFiles, groups, handleCreate, handleEdit, handleDelete }) {
export default function ParentFilesSection({
parentFiles,
groups,
handleCreate,
handleEdit,
handleDelete,
}) {
const [editingDocumentId, setEditingDocumentId] = useState(null);
const [formData, setFormData] = useState(null);
const [selectedGroups, setSelectedGroups] = useState([]); // Gestion des groupes sélectionnés
@ -17,9 +23,9 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
const [guardianDetails, setGuardianDetails] = useState([]);
const [popupVisible, setPopupVisible] = useState(false);
const [popupMessage, setPopupMessage] = useState("");
const [popupMessage, setPopupMessage] = useState('');
const [removePopupVisible, setRemovePopupVisible] = useState(false);
const [removePopupMessage, setRemovePopupMessage] = useState("");
const [removePopupMessage, setRemovePopupMessage] = useState('');
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
const csrfToken = useCsrfToken();
@ -60,15 +66,18 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
// Création des templates
const data = {
master: createdDocument?.id,
registration_form: guardian.registration_form
registration_form: guardian.registration_form,
};
console.log(guardian)
console.log(guardian);
createRegistrationParentFileTemplate(data, csrfToken)
.then(response => {
.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(
"Erreur lors de l'enregistrement du template:",
error
);
});
});
});
@ -101,26 +110,28 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
const handleGroupChange = (selected) => {
setSelectedGroups(selected);
console.log('selected : ', selected)
console.log('selected : ', selected);
// Extraire les guardians associés aux register_forms des groupes sélectionnés
const details = selected.flatMap(group =>
group.registration_forms.flatMap(form =>
form.guardians.map(guardian => ({
const details = selected.flatMap((group) =>
group.registration_forms.flatMap((form) =>
form.guardians.map((guardian) => ({
email: guardian.associated_profile_email,
last_name: form.last_name, // Extraire depuis form
first_name: form.first_name, // Extraire depuis form
registration_form: form.student_id // Utiliser student_id comme ID du register_form
registration_form: form.student_id, // Utiliser student_id comme ID du register_form
}))
)
);
console.log("Guardians associés : ", details);
console.log('Guardians associés : ', details);
setGuardianDetails(details); // Mettre à jour la variable d'état avec les détails des guardians
};
const renderRequiredDocumentCell = (document, column) => {
const isEditing = editingDocumentId === document.id || (editingDocumentId === 'new' && !document.id);
const isEditing =
editingDocumentId === document.id ||
(editingDocumentId === 'new' && !document.id);
if (isEditing) {
switch (column) {
@ -129,7 +140,9 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
<InputText
name="name"
value={formData.name}
onChange={(e) => setFormData({ ...formData, name: e.target.value })}
onChange={(e) =>
setFormData({ ...formData, name: e.target.value })
}
placeholder="Nom de la pièce"
className="w-full"
/>
@ -139,12 +152,14 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
<InputText
name="description"
value={formData.description}
onChange={(e) => setFormData({ ...formData, description: e.target.value })}
onChange={(e) =>
setFormData({ ...formData, description: e.target.value })
}
placeholder="Description"
className="w-full"
/>
);
case 'Dossiers d\'inscription':
case "Dossiers d'inscription":
return (
<MultiSelect
name="groups"
@ -183,11 +198,15 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
return <span>{document.name}</span>;
case 'Description':
return <span>{document.description}</span>;
case 'Dossiers d\'inscription':
case "Dossiers d'inscription":
return (
<span>
{document.groups
.map((groupId) => groups.find((group) => group.id === groupId)?.name || 'Dossiers d\'inscription inconnu')
.map(
(groupId) =>
groups.find((group) => group.id === groupId)?.name ||
"Dossiers d'inscription inconnu"
)
.join(', ')}
</span>
);
@ -211,13 +230,20 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
setRemovePopupOnConfirm(() => () => {
handleRemoveDocument(document.id)
.then(() => {
setPopupMessage(`Le document "${document.name}" a été correctement supprimé.`);
setPopupMessage(
`Le document "${document.name}" a été correctement supprimé.`
);
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch((error) => {
logger.error('Erreur lors de la suppression du document:', error);
setPopupMessage(`Erreur lors de la suppression du document "${document.name}".`);
logger.error(
'Erreur lors de la suppression du document:',
error
);
setPopupMessage(
`Erreur lors de la suppression du document "${document.name}".`
);
setPopupVisible(true);
setRemovePopupVisible(false);
});
@ -236,10 +262,23 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
};
const columnsRequiredDocuments = [
{ name: 'Nom de la pièce', transform: (row) => renderRequiredDocumentCell(row, 'Nom de la pièce') },
{ name: 'Description', transform: (row) => renderRequiredDocumentCell(row, 'Description') },
{ name: 'Dossiers d\'inscription', transform: (row) => renderRequiredDocumentCell(row, 'Dossiers d\'inscription') },
{ name: 'Actions', transform: (row) => renderRequiredDocumentCell(row, 'Actions') },
{
name: 'Nom de la pièce',
transform: (row) => renderRequiredDocumentCell(row, 'Nom de la pièce'),
},
{
name: 'Description',
transform: (row) => renderRequiredDocumentCell(row, 'Description'),
},
{
name: "Dossiers d'inscription",
transform: (row) =>
renderRequiredDocumentCell(row, "Dossiers d'inscription"),
},
{
name: 'Actions',
transform: (row) => renderRequiredDocumentCell(row, 'Actions'),
},
];
return (
@ -252,7 +291,9 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
onClick={handleAddEmptyRequiredDocument}
/>
<Table
data={editingDocumentId === 'new' ? [formData, ...parentFiles] : parentFiles}
data={
editingDocumentId === 'new' ? [formData, ...parentFiles] : parentFiles
}
columns={columnsRequiredDocuments}
/>
<Popup
@ -270,4 +311,4 @@ export default function ParentFilesSection({ parentFiles, groups, handleCreate,
/>
</div>
);
}
}