Files
whatsapp/api/get_scheduled_messages.php
T
2026-02-03 21:30:55 -05:00

114 lines
3.0 KiB
PHP

<?php
/**
* API - Obtener mensajes programados
*/
require_once '../config/config.php';
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
header('Access-Control-Allow-Headers: Content-Type');
requireAuthentication();
try {
$db = Database::getInstance();
// Parámetros de filtro
$userId = isset($_GET['user_id']) ? intval($_GET['user_id']) : null;
$status = $_GET['status'] ?? null;
$dateFrom = $_GET['date_from'] ?? null;
$dateTo = $_GET['date_to'] ?? null;
$limit = isset($_GET['limit']) ? intval($_GET['limit']) : 100;
$offset = isset($_GET['offset']) ? intval($_GET['offset']) : 0;
// Construir query
$sql = "SELECT * FROM scheduled_messages_view WHERE 1=1";
$params = [];
if ($userId) {
$sql .= " AND user_id = ?";
$params[] = $userId;
}
if ($status) {
$sql .= " AND status = ?";
$params[] = $status;
}
if ($dateFrom) {
$sql .= " AND scheduled_date >= ?";
$params[] = $dateFrom;
}
if ($dateTo) {
$sql .= " AND scheduled_date <= ?";
$params[] = $dateTo;
}
// Ordenar por fecha más cercana primero
$sql .= " ORDER BY scheduled_date ASC, scheduled_time ASC";
// Paginación
$sql .= " LIMIT ? OFFSET ?";
$params[] = $limit;
$params[] = $offset;
$messages = $db->fetchAll($sql, $params);
error_log('📋 get_scheduled_messages.php - Encontrados: ' . count($messages) . ' mensajes');
error_log('🔍 SQL ejecutado: ' . $sql);
error_log('📊 Parámetros: ' . json_encode($params));
// Decodificar parámetros JSON
foreach ($messages as &$message) {
if ($message['template_parameters']) {
$message['template_parameters'] = json_decode($message['template_parameters'], true);
}
}
// Contar total
$countSql = "SELECT COUNT(*) as total FROM scheduled_messages WHERE 1=1";
$countParams = [];
if ($userId) {
$countSql .= " AND user_id = ?";
$countParams[] = $userId;
}
if ($status) {
$countSql .= " AND status = ?";
$countParams[] = $status;
}
if ($dateFrom) {
$countSql .= " AND scheduled_date >= ?";
$countParams[] = $dateFrom;
}
if ($dateTo) {
$countSql .= " AND scheduled_date <= ?";
$countParams[] = $dateTo;
}
$countResult = $db->fetch($countSql, $countParams);
$total = $countResult['total'] ?? 0;
echo json_encode([
'success' => true,
'data' => $messages,
'total' => $total,
'limit' => $limit,
'offset' => $offset
]);
} catch (Exception $e) {
error_log("Error in get_scheduled_messages.php: " . $e->getMessage());
http_response_code(500);
echo json_encode([
'success' => false,
'error' => 'Error obteniendo mensajes programados'
]);
}