mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
fix: Application du formattage sur les fichiers modifiés
This commit is contained in:
@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user