Fix: carga áreas en modal de edición de usuarios
- Agrega endpoint GET /api/areas en servidor - Carga áreas desde API en GestionUsuarios en lugar de usar store
This commit is contained in:
@@ -254,6 +254,16 @@ app.put('/api/auth/update-email', async (req, res) => {
|
|||||||
|
|
||||||
// === GESTIÓN DE USUARIOS (ADMIN) ===
|
// === GESTIÓN DE USUARIOS (ADMIN) ===
|
||||||
|
|
||||||
|
app.get('/api/areas', async (req, res) => {
|
||||||
|
try {
|
||||||
|
const areas = await getAllAreas();
|
||||||
|
res.json(areas);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
res.status(500).json({ error: 'Error al obtener áreas' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
app.get('/api/usuarios', async (req, res) => {
|
app.get('/api/usuarios', async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const usuarios = await getAllUsuarios();
|
const usuarios = await getAllUsuarios();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { useHospitalStore } from '@/hooks/useHospitalStore';
|
import { useHospitalStore } from '@/hooks/useHospitalStore';
|
||||||
import type { Usuario, RolUsuario } from '@/types';
|
import type { Usuario, RolUsuario, Area } from '@/types';
|
||||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Input } from '@/components/ui/input';
|
import { Input } from '@/components/ui/input';
|
||||||
@@ -14,8 +14,9 @@ import { Plus, Pencil, Trash2, UserCog, Mail, Shield } from 'lucide-react';
|
|||||||
const API_BASE = 'http://localhost:4001/api';
|
const API_BASE = 'http://localhost:4001/api';
|
||||||
|
|
||||||
export function GestionUsuarios() {
|
export function GestionUsuarios() {
|
||||||
const { logout, areas } = useHospitalStore();
|
const { logout } = useHospitalStore();
|
||||||
const [usuarios, setUsuarios] = useState<Usuario[]>([]);
|
const [usuarios, setUsuarios] = useState<Usuario[]>([]);
|
||||||
|
const [areas, setAreas] = useState<Area[]>([]);
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
const [dialogOpen, setDialogOpen] = useState(false);
|
const [dialogOpen, setDialogOpen] = useState(false);
|
||||||
const [editUsuario, setEditUsuario] = useState<Usuario | null>(null);
|
const [editUsuario, setEditUsuario] = useState<Usuario | null>(null);
|
||||||
@@ -34,6 +35,7 @@ export function GestionUsuarios() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchUsuarios();
|
fetchUsuarios();
|
||||||
|
fetchAreas();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const fetchUsuarios = async () => {
|
const fetchUsuarios = async () => {
|
||||||
@@ -48,6 +50,16 @@ export function GestionUsuarios() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const fetchAreas = async () => {
|
||||||
|
try {
|
||||||
|
const res = await fetch(`${API_BASE}/areas`);
|
||||||
|
const data = await res.json();
|
||||||
|
setAreas(data);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
setForm({
|
setForm({
|
||||||
apellido: '',
|
apellido: '',
|
||||||
|
|||||||
Reference in New Issue
Block a user