import React, { useState } from 'react'; import { Trash2, Eye, EyeOff, ToggleLeft, ToggleRight } from 'lucide-react'; import Table from '@/components/Table'; import Popup from '@/components/Popup'; import StatusLabel from '@/components/StatusLabel'; import SpecialityItem from '@/components/Structure/Configuration/SpecialityItem'; const roleTypeToLabel = (roleType) => { switch (roleType) { case 0: return 'ECOLE'; case 1: return 'ADMIN'; case 2: return 'PARENT'; default: return 'UNKNOWN'; } }; const roleTypeToBadgeClass = (roleType) => { switch (roleType) { case 0: return 'bg-blue-100 text-blue-600'; case 1: return 'bg-red-100 text-red-600'; case 2: return 'bg-green-100 text-green-600'; default: return 'bg-gray-100 text-gray-600'; } }; const ProfileDirectory = ({ profileRoles, handleActivateProfile, handleDeleteProfile }) => { const parentProfiles = profileRoles.filter(profileRole => profileRole.role_type === 2); const schoolAdminProfiles = profileRoles.filter(profileRole => profileRole.role_type !== 2); const [popupVisible, setPopupVisible] = useState(false); const [popupMessage, setPopupMessage] = useState(""); const [confirmPopupVisible, setConfirmPopupVisible] = useState(false); const [confirmPopupMessage, setConfirmPopupMessage] = useState(""); const [confirmPopupOnConfirm, setConfirmPopupOnConfirm] = useState(() => {}); const handleConfirmActivateProfile = (profileRole) => { setConfirmPopupMessage(`Êtes-vous sûr de vouloir ${profileRole.is_active ? 'désactiver' : 'activer'} ce profil ?`); setConfirmPopupOnConfirm(() => () => { handleActivateProfile(profileRole) .then(() => { setPopupMessage(`Le profil a été ${profileRole.is_active ? 'désactivé' : 'activé'} avec succès.`); setPopupVisible(true); }) .catch(error => { setPopupMessage(`Erreur lors de la ${profileRole.is_active ? 'désactivation' : 'activation'} du profil.`); setPopupVisible(true); }); setConfirmPopupVisible(false); }); setConfirmPopupVisible(true); }; const handleConfirmDeleteProfile = (id) => { setConfirmPopupMessage("Êtes-vous sûr de vouloir supprimer ce profil ?"); setConfirmPopupOnConfirm(() => () => { handleDeleteProfile(id) .then(() => { setPopupMessage("Le profil a été supprimé avec succès."); setPopupVisible(true); }) .catch(error => { setPopupMessage("Erreur lors de la suppression du profil."); setPopupVisible(true); }); setConfirmPopupVisible(false); }); setConfirmPopupVisible(true); }; const parentColumns = [ { name: 'Identifiant', transform: (row) => row.associated_profile_email }, { name: 'Rôle', transform: (row) => ( {roleTypeToLabel(row.role_type)} ) }, { name: 'Utilisateur', transform: (row) => row.associated_person?.guardian_name }, { name: 'Elève(s) associé(s)', transform: (row) => (
{row.associated_person?.students?.map(student => ( {student.student_name} ))}
) }, { name: 'Etat du dossier d\'inscription', transform: (row) => (
{row.associated_person?.students?.map(student => ( ))}
) }, { name: 'Actions', transform: (row) => (
) } ]; const schoolAdminColumns = [ { name: 'Identifiant', transform: (row) => row.associated_profile_email }, { name: 'Rôle', transform: (row) => ( {roleTypeToLabel(row.role_type)} ) }, { name: 'Utilisateur', transform: (row) => row.associated_person?.teacher_name }, { name: 'Classe(s) associée(s)', transform: (row) => (
{row.associated_person?.classes?.map(classe => ( {classe.name} ))}
) }, { name: 'Spécialités', transform: (row) => (
{row.associated_person?.specialities?.map(speciality => ( ))}
) }, { name: 'Actions', transform: (row) => (
) } ]; return (
{parentProfiles.length === 0 ? (
Aucun profil trouvé
) : ( )}
{schoolAdminProfiles.length === 0 ? (
Aucun profil trouvé
) : (
)} setPopupVisible(false)} uniqueConfirmButton={true} /> setConfirmPopupVisible(false)} /> ); }; export default ProfileDirectory;