import React, { useEffect, useState } from "react"; import api from "../../api/axiosConfig"; import ErrorMessage from "../common/ErrorMessage"; import "../styles/ContentArea.css"; const TrainingGroupStudentManager = () => { const [groups, setGroups] = useState([]); const [students, setStudents] = useState([]); const [selectedGroupId, setSelectedGroupId] = useState(""); const [groupStudents, setGroupStudents] = useState([]); const [errorMsg, setErrorMsg] = useState(""); const [successMsg, setSuccessMsg] = useState(""); useEffect(() => { api.get("/training-groups/getAll").then((res) => setGroups(res.data)); api.get("/students/getAll").then((res) => setStudents(res.data)); }, []); const loadGroupStudents = async (groupId) => { setSelectedGroupId(groupId); setErrorMsg(""); setSuccessMsg(""); if (!groupId) return; try { const group = await api.get(`/training-groups/findById/${groupId}`); setGroupStudents(group.data.studentIds || []); } catch (err) { console.error("Error al cargar alumnos del grupo", err); const msg = err.response?.data?.message || "❌ Error al cargar alumnos del grupo."; setErrorMsg(msg); setGroupStudents([]); } }; const handleAssign = async (studentId) => { try { await api.put(`/training-groups/assign-student`, null, { params: { groupId: selectedGroupId, studentId, }, }); setSuccessMsg("✅ Alumno asignado correctamente."); setErrorMsg(""); loadGroupStudents(selectedGroupId); } catch (err) { console.error(err); const msg = err.response?.data?.message || "❌ No se pudo asignar el alumno."; setErrorMsg(msg); setSuccessMsg(""); } }; const handleRemove = async (studentId) => { try { await api.put(`/training-groups/remove-student`, null, { params: { groupId: selectedGroupId, studentId, }, }); setSuccessMsg("✅ Alumno eliminado del grupo."); setErrorMsg(""); loadGroupStudents(selectedGroupId); } catch (err) { console.error(err); const msg = err.response?.data?.message || "❌ Error al eliminar el alumno."; setErrorMsg(msg); setSuccessMsg(""); } }; return (

👥 Gestión de Alumnos por Grupo

{selectedGroupId && ( <>

📋 Alumnos Asignados

{groupStudents.length === 0 ? (

No hay alumnos asignados a este grupo.

) : (
    {groupStudents.map((id) => { const student = students.find((s) => s.id === id); return (
  • 🎓 {student?.user?.name} {student?.user?.surname}
  • ); })}
)}

➕ Añadir Alumnos Disponibles

    {students .filter((s) => !groupStudents.includes(s.id)) .map((s) => (
  • 👤 {s.user?.name} {s.user?.surname}
  • ))}
)}
); }; export default TrainingGroupStudentManager;