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`,
|
LIMIT 1`,
|
||||||
[userId],
|
[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) {
|
} catch (error) {
|
||||||
next(error);
|
next(error);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,15 +96,15 @@ export default function UsuariosPage() {
|
|||||||
const [savingAccesos, setSavingAccesos] = useState(false);
|
const [savingAccesos, setSavingAccesos] = useState(false);
|
||||||
|
|
||||||
// Edit supervisor modal (para auxiliares)
|
// 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 [selectedSupervisorId, setSelectedSupervisorId] = useState<string>('');
|
||||||
const [savingSupervisor, setSavingSupervisor] = useState(false);
|
const [savingSupervisor, setSavingSupervisor] = useState(false);
|
||||||
|
|
||||||
const openEditSupervisor = async (userId: string, nombre: string) => {
|
const openEditSupervisor = async (userId: string, nombre: string) => {
|
||||||
try {
|
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 ?? '');
|
setSelectedSupervisorId(res.data.supervisorUserId ?? '');
|
||||||
setEditingSupervisorUser({ id: userId, nombre });
|
setEditingSupervisorUser({ id: userId, nombre, supervisorNombre: res.data.supervisorNombre });
|
||||||
} catch {
|
} catch {
|
||||||
alert('Error al cargar supervisor');
|
alert('Error al cargar supervisor');
|
||||||
}
|
}
|
||||||
@@ -483,7 +483,9 @@ export default function UsuariosPage() {
|
|||||||
<div className="space-y-2 py-2">
|
<div className="space-y-2 py-2">
|
||||||
{supervisores && supervisores.length > 0 ? (
|
{supervisores && supervisores.length > 0 ? (
|
||||||
<Select value={selectedSupervisorId || 'none'} onValueChange={(v) => setSelectedSupervisorId(v === 'none' ? '' : v)}>
|
<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>
|
<SelectContent>
|
||||||
<SelectItem value="none">Sin supervisor asignado</SelectItem>
|
<SelectItem value="none">Sin supervisor asignado</SelectItem>
|
||||||
{supervisores.map(s => (
|
{supervisores.map(s => (
|
||||||
@@ -491,6 +493,12 @@ export default function UsuariosPage() {
|
|||||||
{s.nombre} — {s.email}
|
{s.nombre} — {s.email}
|
||||||
</SelectItem>
|
</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>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
Reference in New Issue
Block a user