feat(turnero): add chat plantillas API endpoints

- chat_get_plantillas.php: GET — returns enabled templates from
  turnero_chat_plantillas JOIN message_templates; auto-creates table
- chat_save_plantillas.php: POST {ids:[...]} — replaces all rows in
  turnero_chat_plantillas using DELETE + INSERT IGNORE in a transaction

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-03 14:41:24 -05:00
co-authored by Claude Sonnet 4.6
parent 548ad3140d
commit ccdc35932d
2 changed files with 72 additions and 0 deletions
@@ -0,0 +1,30 @@
<?php
/**
* GET — Plantillas habilitadas para el chat turnero.
* Crea la tabla si no existe aún.
*/
require_once __DIR__ . '/../../../config/config.php';
requireAuthentication();
header('Content-Type: application/json; charset=utf-8');
try {
$pdo = Database::getInstance()->getConnection();
$pdo->exec("CREATE TABLE IF NOT EXISTS turnero_chat_plantillas (
template_id INT NOT NULL,
PRIMARY KEY (template_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
$rows = $pdo->query(
"SELECT t.id, t.name, t.template_name, t.language_code, t.body_text,
t.header_text, t.header_type, t.footer_text, t.example_parameters, t.status
FROM turnero_chat_plantillas p
JOIN message_templates t ON t.id = p.template_id
ORDER BY t.name ASC"
)->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(['ok' => true, 'data' => $rows]);
} catch (Throwable $e) {
http_response_code(500);
echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
}
@@ -0,0 +1,42 @@
<?php
/**
* POST — Guarda la lista de plantillas habilitadas para el chat turnero.
* Body: { ids: [1, 2, 3] }
*/
require_once __DIR__ . '/../../../config/config.php';
requireAuthentication();
header('Content-Type: application/json; charset=utf-8');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['ok' => false, 'error' => 'Método no permitido']);
exit;
}
try {
$input = json_decode(file_get_contents('php://input'), true) ?: [];
$ids = array_map('intval', $input['ids'] ?? []);
$pdo = Database::getInstance()->getConnection();
$pdo->exec("CREATE TABLE IF NOT EXISTS turnero_chat_plantillas (
template_id INT NOT NULL,
PRIMARY KEY (template_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
$pdo->beginTransaction();
$pdo->exec("DELETE FROM turnero_chat_plantillas");
if (!empty($ids)) {
$ph = implode(',', array_fill(0, count($ids), '(?)'));
$stmt = $pdo->prepare("INSERT IGNORE INTO turnero_chat_plantillas (template_id) VALUES $ph");
$stmt->execute($ids);
}
$pdo->commit();
echo json_encode(['ok' => true]);
} catch (Throwable $e) {
if (isset($pdo) && $pdo->inTransaction()) $pdo->rollBack();
http_response_code(500);
echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
}