0) {
return date('d/m/Y H:i:s', $timestamp);
}
return $fecha_oracle;
}
// Manejo de b煤squeda
$busqueda = isset($_GET['busqueda']) ? trim($_GET['busqueda']) : '';
// Manejo de paginaci贸n
$limite = 10;
$pagina = isset($_GET['pagina']) ? (int)$_GET['pagina'] : 1;
$offset = ($pagina - 1) * $limite;
// Construir condiciones con binds
$binds = [];
$whereConditions = [
"s.estado = 'realizada'",
"s.fecha_respuesta >= SYSDATE - 30",
"s.tipo_solicitud NOT IN ('VALIDACION_PERSONAL', 'REPORTE_ACCIDENTE', 'CAMBIO_INFORMACION', 'PLATAFORMA')"
];
if (!empty($busqueda)) {
$busquedaTerm = '%' . $busqueda . '%';
$whereConditions[] = "(s.codigo_ticket LIKE :busq1 OR s.nombre_sitio LIKE :busq2 OR s.id_sitio LIKE :busq3)";
$binds[':busq1'] = $busquedaTerm;
$binds[':busq2'] = $busquedaTerm;
$binds[':busq3'] = $busquedaTerm;
}
$whereClause = implode(' AND ', $whereConditions);
// --- CONTAR TOTAL DE RESULTADOS ---
$sqlCount = "SELECT COUNT(*) AS TOTAL
FROM solicitudes s
JOIN usuarios u ON u.id = s.usuario_id
WHERE $whereClause";
$rowsCount = db_select_to_array($sqlCount, $binds);
$totalResultado = isset($rowsCount[0]['TOTAL']) ? (int)$rowsCount[0]['TOTAL'] : 0;
$totalPaginas = ceil($totalResultado / $limite);
// --- OBTENER SOLICITUDES CON PAGINACI脫N ---
$sql = "SELECT * FROM (
SELECT a.*, ROWNUM as rnum FROM (
SELECT s.*, u.nombre AS nombre_usuario,
TO_CHAR(s.fecha_respuesta, 'DD/MM/YYYY HH24:MI:SS') AS fecha_respuesta_fmt,
TO_CHAR(s.fecha_creacion, 'DD/MM/YYYY HH24:MI:SS') AS fecha_creacion_fmt
FROM solicitudes s
JOIN usuarios u ON u.id = s.usuario_id
WHERE $whereClause
ORDER BY TO_NUMBER(s.codigo_ticket) DESC, s.fecha_respuesta DESC
) a
) WHERE rnum > :offset AND rnum <= :offset + :limit";
$binds[':offset'] = $offset;
$binds[':limit'] = $limite;
$rows = db_select_to_array($sql, $binds);
$resultado = $rows;
?>
Solicitudes Realizadas
Solicitudes Realizadas