Gestión de Equipo
Este componente permite a las empresas gestionar a los miembros de su equipo dentro de la plataforma. Facilita operaciones como agregar, editar, eliminar miembros y visualizar su información detallada, todo dentro de una interfaz intuitiva y responsiva.
🔍 Ubicación
src/pages/equipo/TeamManagement.tsx
📦 Dependencias
-
Contextos y hooks personalizados:
useUser– Proporciona información del usuario autenticado.useToast– Muestra notificaciones emergentes.
-
Servicios:
getAllTeamMembers,createTeamMember,updateTeamMember,deleteTeamMemberdelteamService.
-
Componentes internos:
AddMemberModalEditMemberModalDeleteConfirmModal
-
Íconos de Lucide React:
Plus,Edit,Trash2,Mail,Phone,User,Search
🧩 Props
Este componente no recibe props directamente. Opera según el contexto de sesión del usuario empresarial autenticado (useUser).
🧱 Estructuras de datos
interface TeamMember {
id: string;
name: string;
email: string;
role: "LECTOR" | "COMENTARISTA" | "EDITOR";
estado?: string;
phone?: string;
}
interface CreateTeamMemberDTO {
username: string;
correo: string;
password: string;
nombreCompleto: string;
rolEquipo: "LECTOR" | "COMENTARISTA" | "EDITOR";
telefono: string;
direccion: string;
empresaId: number;
perfilCompleto: boolean;
}
⚙️ Lógica interna
📌 Estado local:
searchTerm: término de búsqueda para filtrar por nombre/correo.teamMembers: lista de miembros del equipo.isAddModalOpen,isEditModalOpen,isDeleteModalOpen: control de visibilidad de los modales.selectedMember: miembro actualmente seleccionado para editar o eliminar.
🔁 Efectos:
useEffect: carga los miembros al detectar que el usuario ya está autenticado y cargado (fetchMembers).
📤 Funciones principales:
fetchMembers: carga los miembros activos del equipo, filtrados por empresa y rol.handleAddMember: crea un nuevo miembro en el backend y actualiza el estado.handleEditMember: actualiza nombre, correo y rol del miembro seleccionado.handleDeleteMember: elimina lógicamente un miembro (soft delete).filteredMembers: filtro local de búsqueda por nombre o correo.
🎨 Interfaz y diseño
-
Vista inicial sin miembros:
- Muestra un mensaje de bienvenida con ícono y botón “Crear Primer Miembro”.
- Permite abrir el modal de
AddMemberModal.
-
Vista principal:
-
Encabezado con título y botón “Nuevo Miembro”.
-
Campo de búsqueda con ícono (
Search). -
Lista de tarjetas por miembro:
- Nombre, correo, rol, teléfono.
- Botones de editar (
Edit) y eliminar (Trash2).
-
-
Modales:
AddMemberModal: formulario para agregar.EditMemberModal: permite editar datos básicos.DeleteConfirmModal: confirmación antes de eliminar.
🔐 Reglas de acceso
-
Solo disponible para usuarios con:
tipoUsuario === "EMPRESARIAL"yrol === "USUARIO"
-
Si el usuario no cumple estas condiciones, se muestra:
Acceso no autorizado
Esta sección está disponible solo para empresas con rol de usuario.
💡 Consideraciones adicionales
- La creación de usuarios usa
correo.split("@")[0]para generar elusername. - Datos como
telefonoydireccionson placeholder ("0000000000"y"pendiente"). - Se actualiza el estado del usuario (
refreshUsuario()) tras agregar o editar. - El campo
perfilCompletose incluye pero es opcional.
🧪 Ruta protegida
Este componente corresponde a la ruta:
/equipo/TeamManagement
Es utilizado para que una empresa gestione los miembros de su equipo y colabore en tareas dentro del sistema.