refactor: Refactoring de la section ClassSection

This commit is contained in:
N3WT DE COMPET
2025-02-07 08:01:47 +01:00
parent 72dd7699d6
commit 1a8ef26f58
11 changed files with 642 additions and 486 deletions

View File

@ -9,6 +9,7 @@ import { DndProvider, useDrag, useDrop } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import InputText from '@/components/InputText';
import SpecialityItem from '@/components/Structure/Configuration/SpecialityItem';
import TeacherItem from './TeacherItem';
const ItemTypes = {
SPECIALITY: 'speciality',
@ -149,11 +150,11 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
};
const handleUpdateTeacher = (id, updatedData) => {
console.log('UpdatedData:', updatedData);
console.log(updatedData)
const data = {
email: updatedData.email,
username: updatedData.email,
droit: updatedData.droit.id,
droit: updatedData.droit,
};
updateProfile(updatedData.associated_profile, data, csrfToken)
.then(response => {
@ -171,9 +172,15 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
};
const handleChange = (e) => {
const { name, value } = e.target;
const { name, value, type, checked } = e.target;
let parsedValue = value;
if (type === 'checkbox') {
parsedValue = checked ? 1 : 0;
}
console.log(`handleChange - name: ${name}, parsedValue: ${parsedValue}, type: ${type}, checked: ${checked}`);
if (editingTeacher) {
setFormData((prevData) => ({
...prevData,
@ -216,25 +223,26 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
if (isEditing || isCreating) {
switch (column) {
case 'NOM':
case 'NOM - PRENOM':
return (
<InputText
name="last_name"
value={currentData.last_name}
onChange={handleChange}
placeholder="Nom de l'enseignant"
errorMsg={localErrors && localErrors.last_name && Array.isArray(localErrors.last_name) ? localErrors.last_name[0] : ''}
/>
);
case 'PRENOM':
return (
<InputText
name="first_name"
value={currentData.first_name}
onChange={handleChange}
placeholder="Prénom de l'enseignant"
errorMsg={localErrors && localErrors.first_name && Array.isArray(localErrors.firstname) ? localErrors.firstname[0] : ''}
/>
<div className="flex justify-center space-x-2">
<InputText
name="last_name"
label="nom"
value={currentData.last_name}
onChange={handleChange}
placeholder="Nom de l'enseignant"
errorMsg={localErrors && localErrors.last_name && Array.isArray(localErrors.last_name) ? localErrors.last_name[0] : ''}
/>
<InputText
name="first_name"
label="prénom"
value={currentData.first_name}
onChange={handleChange}
placeholder="Prénom de l'enseignant"
errorMsg={localErrors && localErrors.first_name && Array.isArray(localErrors.firstname) ? localErrors.firstname[0] : ''}
/>
</div>
);
case 'EMAIL':
return (
@ -250,14 +258,16 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
return (
<SpecialitiesDropZone teacher={currentData} handleSpecialitiesChange={handleSpecialitiesChange} specialities={specialities} isEditing={isEditing || isCreating} />
);
// case 'PROFIL':
// return (
// <ToggleSwitch
// name="profile"
// checked={currentData.profile}
// onChange={handleChange}
// />
// );
case 'ADMINISTRATEUR':
return (
<div className="flex justify-center">
<ToggleSwitch
name="droit"
checked={currentData.droit === 1}
onChange={handleChange}
/>
</div>
);
case 'ACTIONS':
return (
<div className="flex justify-center space-x-2">
@ -282,10 +292,10 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
}
} else {
switch (column) {
case 'NOM':
return teacher.last_name;
case 'PRENOM':
return teacher.first_name;
case 'NOM - PRENOM':
return (
<TeacherItem key={teacher.id} teacher={teacher} />
);
case 'EMAIL':
return teacher.email;
case 'SPECIALITES':
@ -296,13 +306,14 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
))}
</div>
);
case 'PROFIL':
case 'ADMINISTRATEUR':
if (teacher.associated_profile) {
const badgeClass = teacher.droit.label === 'ECOLE' ? 'bg-blue-100 text-blue-600' : 'bg-red-100 text-red-600';
const badgeClass = teacher.droit === 1 ? 'bg-red-100 text-red-600' : 'bg-blue-100 text-blue-600';
const label = teacher.droit === 1 ? 'OUI' : 'NON';
return (
<div key={teacher.id} className="flex justify-center items-center space-x-2">
<span className={`px-3 py-1 rounded-full font-bold ${badgeClass}`}>
{teacher.droit.label}
{label}
</span>
</div>
);
@ -337,11 +348,10 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
};
const columns = [
{ name: 'NOM', label: 'Nom' },
{ name: 'PRENOM', label: 'Prénom' },
{ name: 'NOM - PRENOM', label: 'Nom et prénom' },
{ name: 'EMAIL', label: 'Email' },
{ name: 'SPECIALITES', label: 'Spécialités' },
{ name: 'PROFIL', label: 'Profil' },
{ name: 'ADMINISTRATEUR', label: 'Profil' },
{ name: 'MISE A JOUR', label: 'Mise à jour' },
{ name: 'ACTIONS', label: 'Actions' }
];