lab_formularios
This commit is contained in:
@@ -173,7 +173,7 @@ class Formulario {
|
||||
/**
|
||||
* Listar envíos (admin/enfermero).
|
||||
*/
|
||||
public function listarEnvios(array $filtros = []): array {
|
||||
public function listarEnvios(array $filtros = [], int $pagina = 1, int $porPagina = 20): array {
|
||||
$where = ['1=1'];
|
||||
$params = [];
|
||||
if (!empty($filtros['formulario_id'])) { $where[] = 'e.formulario_id = ?'; $params[] = $filtros['formulario_id']; }
|
||||
@@ -181,8 +181,22 @@ class Formulario {
|
||||
if (!empty($filtros['enviado_por'])) { $where[] = 'e.enviado_por = ?'; $params[] = $filtros['enviado_por']; }
|
||||
if (!empty($filtros['estado'])) { $where[] = 'e.estado = ?'; $params[] = $filtros['estado']; }
|
||||
if (!empty($filtros['fecha_desde'])) { $where[] = 'DATE(e.created_at) >= ?'; $params[] = $filtros['fecha_desde']; }
|
||||
$w = implode(' AND ', $where);
|
||||
return $this->db->fetchAll("
|
||||
if (!empty($filtros['fecha_hasta'])) { $where[] = 'DATE(e.created_at) <= ?'; $params[] = $filtros['fecha_hasta']; }
|
||||
if (!empty($filtros['paciente'])) { $where[] = 'p.nombre_completo LIKE ?'; $params[] = '%' . $filtros['paciente'] . '%'; }
|
||||
$w = implode(' AND ', $where);
|
||||
$offset = ($pagina - 1) * $porPagina;
|
||||
|
||||
$total = $this->db->fetch(
|
||||
"SELECT COUNT(*) AS n
|
||||
FROM lab_form_envios e
|
||||
JOIN lab_formularios f ON f.id = e.formulario_id
|
||||
LEFT JOIN lab_pacientes p ON p.id = e.paciente_id
|
||||
LEFT JOIN admin_users u ON u.id = e.enviado_por
|
||||
WHERE $w",
|
||||
$params
|
||||
)['n'] ?? 0;
|
||||
|
||||
$rows = $this->db->fetchAll("
|
||||
SELECT e.*, f.nombre AS form_nombre, f.categoria, f.esquema,
|
||||
p.nombre_completo AS paciente_nombre,
|
||||
u.full_name AS enviado_por_nombre
|
||||
@@ -192,8 +206,16 @@ class Formulario {
|
||||
LEFT JOIN admin_users u ON u.id = e.enviado_por
|
||||
WHERE $w
|
||||
ORDER BY e.created_at DESC
|
||||
LIMIT 200
|
||||
", $params);
|
||||
LIMIT ? OFFSET ?
|
||||
", array_merge($params, [$porPagina, $offset]));
|
||||
|
||||
return [
|
||||
'data' => $rows,
|
||||
'total' => (int)$total,
|
||||
'pagina' => $pagina,
|
||||
'por_pagina' => $porPagina,
|
||||
'paginas' => (int)ceil($total / max(1, $porPagina)),
|
||||
];
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user