diff --git a/dental-server/dental-client/src/components/TransformModal.jsx b/dental-server/dental-client/src/components/TransformModal.jsx index a7de3cc..e4787b6 100644 --- a/dental-server/dental-client/src/components/TransformModal.jsx +++ b/dental-server/dental-client/src/components/TransformModal.jsx @@ -65,8 +65,9 @@ export default function TransformModal({ isOpen, onClose, image, onSaved }) { const loadGtos = async (patientName) => { setLoadingGtos(true); try { - const { data } = await api.get(`/gtos?patient=${encodeURIComponent(patientName)}`); - setGtos(data || []); + const { data } = await api.get(`/gtos?patient=${encodeURIComponent(patientName)}&limit=100`); + // Suporta tanto o formato novo { rows } quanto o antigo array (retrocompatibilidade) + setGtos(Array.isArray(data) ? data : (data.rows || [])); } catch { setGtos([]); } finally { diff --git a/dental-server/routes/gtos.js b/dental-server/routes/gtos.js index a43adf9..60749ce 100644 --- a/dental-server/routes/gtos.js +++ b/dental-server/routes/gtos.js @@ -12,17 +12,24 @@ const db = require('../database'); // ================================================================ router.get('/', async (req, res) => { try { - const search = (req.query.search || '').trim(); - const filter = req.query.filter || 'all'; - const page = Math.max(1, parseInt(req.query.page) || 1); - const limit = Math.min(100, parseInt(req.query.limit) || 20); - const offset = (page - 1) * limit; + const search = (req.query.search || '').trim(); + const patient = (req.query.patient || '').trim(); // match exato (usado pelo TransformModal) + const filter = req.query.filter || 'all'; + const page = Math.max(1, parseInt(req.query.page) || 1); + const limit = Math.min(200, parseInt(req.query.limit) || 20); + const offset = (page - 1) * limit; let params = []; let where = []; let i = 1; - if (search) { + // Match exato por paciente (TransformModal: mostra só as GTOs deste paciente) + if (patient) { + where.push(`g.patient_name = $${i}`); + params.push(patient); + i++; + } else if (search) { + // Busca ILIKE por nome ou número (GtosPage) where.push(`(g.patient_name ILIKE $${i} OR g.gto_number ILIKE $${i})`); params.push(`%${search}%`); i++;