fix(usuarios): mostrar nombre del supervisor al editar auxiliar
- Backend getSupervisor ahora devuelve supervisorNombre buscando en Prisma - Frontend usa supervisorNombre para mostrar en Select cuando el supervisor no está en la lista de carteras/supervisores
This commit is contained in:
@@ -139,7 +139,16 @@ export async function getSupervisor(req: Request, res: Response, next: NextFunct
|
||||
LIMIT 1`,
|
||||
[userId],
|
||||
);
|
||||
res.json({ supervisorUserId: rows[0]?.supervisor_user_id ?? null });
|
||||
const supervisorUserId = rows[0]?.supervisor_user_id ?? null;
|
||||
let supervisorNombre: string | null = null;
|
||||
if (supervisorUserId) {
|
||||
const u = await prisma.user.findUnique({
|
||||
where: { id: supervisorUserId },
|
||||
select: { nombre: true },
|
||||
});
|
||||
supervisorNombre = u?.nombre ?? null;
|
||||
}
|
||||
res.json({ supervisorUserId, supervisorNombre });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
|
||||
@@ -96,15 +96,15 @@ export default function UsuariosPage() {
|
||||
const [savingAccesos, setSavingAccesos] = useState(false);
|
||||
|
||||
// Edit supervisor modal (para auxiliares)
|
||||
const [editingSupervisorUser, setEditingSupervisorUser] = useState<{ id: string; nombre: string } | null>(null);
|
||||
const [editingSupervisorUser, setEditingSupervisorUser] = useState<{ id: string; nombre: string; supervisorNombre?: string | null } | null>(null);
|
||||
const [selectedSupervisorId, setSelectedSupervisorId] = useState<string>('');
|
||||
const [savingSupervisor, setSavingSupervisor] = useState(false);
|
||||
|
||||
const openEditSupervisor = async (userId: string, nombre: string) => {
|
||||
try {
|
||||
const res = await apiClient.get<{ supervisorUserId: string | null }>(`/usuarios/${userId}/supervisor`);
|
||||
const res = await apiClient.get<{ supervisorUserId: string | null; supervisorNombre: string | null }>(`/usuarios/${userId}/supervisor`);
|
||||
setSelectedSupervisorId(res.data.supervisorUserId ?? '');
|
||||
setEditingSupervisorUser({ id: userId, nombre });
|
||||
setEditingSupervisorUser({ id: userId, nombre, supervisorNombre: res.data.supervisorNombre });
|
||||
} catch {
|
||||
alert('Error al cargar supervisor');
|
||||
}
|
||||
@@ -483,7 +483,9 @@ export default function UsuariosPage() {
|
||||
<div className="space-y-2 py-2">
|
||||
{supervisores && supervisores.length > 0 ? (
|
||||
<Select value={selectedSupervisorId || 'none'} onValueChange={(v) => setSelectedSupervisorId(v === 'none' ? '' : v)}>
|
||||
<SelectTrigger><SelectValue placeholder="Selecciona un supervisor..." /></SelectTrigger>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="Selecciona un supervisor..." />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="none">Sin supervisor asignado</SelectItem>
|
||||
{supervisores.map(s => (
|
||||
@@ -491,6 +493,12 @@ export default function UsuariosPage() {
|
||||
{s.nombre} — {s.email}
|
||||
</SelectItem>
|
||||
))}
|
||||
{/* Si el supervisor actual no está en la lista de carteras, mostrarlo igual */}
|
||||
{selectedSupervisorId && !supervisores.some(s => s.userId === selectedSupervisorId) && (
|
||||
<SelectItem value={selectedSupervisorId}>
|
||||
{editingSupervisorUser?.supervisorNombre || selectedSupervisorId}
|
||||
</SelectItem>
|
||||
)}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
) : (
|
||||
|
||||
Reference in New Issue
Block a user