Confirmar egreso como unico evento para cerrar internacion y liberar cama
This commit is contained in:
@@ -358,17 +358,23 @@ const agregarCama = useCallback(async (cama: Omit<Cama, 'id'>) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
// Si hay una internación activa asociada a esta cama, remover la asociación en el servidor
|
||||||
|
const activeInternacion = state.internaciones.find(i => i.camaId === id && i.activa);
|
||||||
|
if (activeInternacion) {
|
||||||
|
await apiCall('PUT', `/internaciones/${activeInternacion.id}`, { camaId: '' });
|
||||||
|
}
|
||||||
|
|
||||||
await apiCall('DELETE', `/camas/${id}`);
|
await apiCall('DELETE', `/camas/${id}`);
|
||||||
setState(prev => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
camas: prev.camas.filter(c => c.id !== id),
|
camas: prev.camas.filter(c => c.id !== id),
|
||||||
internaciones: prev.internaciones.map(i => i.camaId === id ? { ...i, activa: false } : i),
|
internaciones: prev.internaciones.map(i => i.camaId === id ? { ...i, camaId: undefined } : i),
|
||||||
}));
|
}));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Error al eliminar cama:', err);
|
console.error('Error al eliminar cama:', err);
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
}, [state.currentUser, apiCall]);
|
}, [state.currentUser, state.internaciones, apiCall]);
|
||||||
|
|
||||||
// Acciones de internaciones
|
// Acciones de internaciones
|
||||||
const iniciarInternacion = useCallback(async (internacion: Omit<Internacion, 'id' | 'activa'>) => {
|
const iniciarInternacion = useCallback(async (internacion: Omit<Internacion, 'id' | 'activa'>) => {
|
||||||
|
|||||||
@@ -400,7 +400,7 @@ export function MapaCamas({
|
|||||||
</Dialog>
|
</Dialog>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{cama.estado !== 'Disponible' && canEditCama(cama.id) && (
|
{cama.estado !== 'Disponible' && cama.estado !== 'Ocupada' && canEditCama(cama.id) && (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="w-full"
|
className="w-full"
|
||||||
@@ -411,7 +411,7 @@ export function MapaCamas({
|
|||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{cama.estado !== 'Reparacion' && canEditCama(cama.id) && (
|
{cama.estado !== 'Reparacion' && cama.estado !== 'Ocupada' && canEditCama(cama.id) && (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="w-full"
|
className="w-full"
|
||||||
@@ -422,7 +422,7 @@ export function MapaCamas({
|
|||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{cama.estado !== 'Reservada' && canEditCama(cama.id) && (
|
{cama.estado !== 'Reservada' && cama.estado !== 'Ocupada' && canEditCama(cama.id) && (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="w-full"
|
className="w-full"
|
||||||
|
|||||||
Reference in New Issue
Block a user