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
,deleteTeamMember
delteamService
.
-
Componentes internos:
AddMemberModal
EditMemberModal
DeleteConfirmModal
-
Í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
telefono
ydireccion
son placeholder ("0000000000"
y"pendiente"
). - Se actualiza el estado del usuario (
refreshUsuario()
) tras agregar o editar. - El campo
perfilCompleto
se 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.