From f904ef1cf9386d6b683a3be6525f761040dd8744 Mon Sep 17 00:00:00 2001 From: Sergio Nicolas Lavaise Date: Tue, 14 Apr 2026 14:29:29 -0300 Subject: [PATCH] Fix: Orden de camas en Mapa de Camas --- src/sections/MapaCamas.tsx | 65 ++++++++++++++------------------------ 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/src/sections/MapaCamas.tsx b/src/sections/MapaCamas.tsx index bb1c427..ced31f4 100644 --- a/src/sections/MapaCamas.tsx +++ b/src/sections/MapaCamas.tsx @@ -114,51 +114,34 @@ export function MapaCamas({ const pa = parseBedNumber(a.numero); const pb = parseBedNumber(b.numero); - if (pa.sala >= 200 && pa.sala < 300) { - const salaImpar = [221, 217, 215, 213, 209, 205, 203, 201]; - const salaPar = [204, 214]; - - if (salaImpar.includes(pa.sala)) { - if (salaImpar.includes(pb.sala)) { - if (pa.sala === pb.sala) { - return pa.cama - pb.cama; - } - return salaImpar.indexOf(pa.sala) - salaImpar.indexOf(pb.sala); - } - return -1; + const getOrden = (sala: number) => { + const grupo = Math.floor(sala / 100); + const esPar = sala % 2 === 0; + + if (grupo === 2) { + if (esPar) return { grupo: 2, suborden: 0, sala }; // 2XX pares, menor a mayor + return { grupo: 1, suborden: 1, sala }; // 2XX impares, mayor a menor } - if (salaImpar.includes(pb.sala)) return 1; - - if (salaPar.includes(pa.sala)) { - if (salaPar.includes(pb.sala)) { - if (pa.sala === pb.sala) { - return pa.cama - pb.cama; - } - return pa.sala - pb.sala; - } - return -1; + if (grupo === 3) { + if (esPar) return { grupo: 3, suborden: 0, sala }; // 3XX pares, menor a mayor + return { grupo: 4, suborden: 1, sala }; // 3XX impares, mayor a menor } - if (salaPar.includes(pb.sala)) return 1; + if (grupo === 4) { + if (esPar) return { grupo: 6, suborden: 0, sala }; // 4XX pares, menor a mayor + return { grupo: 5, suborden: 1, sala }; // 4XX impares, mayor a menor + } + return { grupo: 10, suborden: 1, sala }; + }; - return pa.cama - pb.cama; + const oa = getOrden(pa.sala); + const ob = getOrden(pb.sala); + + if (oa.grupo !== ob.grupo) return oa.grupo - ob.grupo; + if (oa.suborden === ob.suborden) { + if (oa.suborden === 0) return (oa.sala || pa.sala) - (ob.sala || pb.sala); + return (ob.sala || 0) - (oa.sala || 0); } - - if (pa.sala >= 300 && pa.sala < 400) { - const salaPiso3 = [308, 310, 312]; - if (salaPiso3.includes(pa.sala)) { - if (salaPiso3.includes(pb.sala)) { - if (pa.sala === pb.sala) { - return pa.cama - pb.cama; - } - return salaPiso3.indexOf(pa.sala) - salaPiso3.indexOf(pb.sala); - } - return -1; - } - if (salaPiso3.includes(pb.sala)) return 1; - return pa.cama - pb.cama; - } - - return a.numero.localeCompare(b.numero); + return oa.suborden - ob.suborden; }); const handleOcuparCama = () => {