Files
whatsapp/modules/turnero/api/comentarios.php
T
2026-06-16 19:54:04 -05:00

96 lines
3.2 KiB
PHP

<?php
/**
* POST/GET /modules/turnero/api/comentarios.php
*
* GET: obtener comentarios de un turno
* ?turno_id=X&incluir_examenes=1&incluir_consentimientos=1
*
* POST: guardar comentario
* { turno_id, comentario, tipo: 'recepcion|muestras|general' }
*/
require_once __DIR__ . '/_helpers.php';
requireTurnero();
$pdo = db();
$userId = (int)adminId();
$userName = $_SESSION['admin_user']['full_name']
?? $_SESSION['admin_user']['username']
?? 'Usuario';
// ── GET: Obtener comentarios y datos relacionados ──
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$turnoId = (int)($_GET['turno_id'] ?? 0);
if ($turnoId <= 0) jsonError('turno_id requerido.');
$datos = [];
// Comentarios del turno
$stmtCom = $pdo->prepare(
"SELECT id, usuario_nombre, comentario, tipo, creado_at
FROM turnero_comentarios
WHERE turno_id = ?
ORDER BY creado_at DESC"
);
$stmtCom->execute([$turnoId]);
$datos['comentarios'] = $stmtCom->fetchAll(PDO::FETCH_ASSOC);
// Exámenes solicitados (si lo pide)
if (!empty($_GET['incluir_examenes'])) {
$stmtExam = $pdo->prepare(
"SELECT DISTINCT et.nombre, et.codigo
FROM turnero_examen_items tei
JOIN exam_tipos et ON et.id = tei.exam_tipo_id
WHERE tei.solicitud_id = (
SELECT id FROM turnero_solicitudes
WHERE turno_id = ? LIMIT 1
)
ORDER BY et.nombre ASC"
);
$stmtExam->execute([$turnoId]);
$datos['examenes'] = $stmtExam->fetchAll(PDO::FETCH_ASSOC);
}
// Consentimientos (si lo pide)
if (!empty($_GET['incluir_consentimientos'])) {
$stmtCons = $pdo->prepare(
"SELECT tc.id, f.nombre, tc.estado, tc.firmado_at, tc.firma_profesional_svg
FROM turnero_consentimientos tc
LEFT JOIN lab_formularios f ON f.id = tc.formulario_id
WHERE tc.turno_id = ?
ORDER BY tc.estado DESC, tc.firmado_at DESC"
);
$stmtCons->execute([$turnoId]);
$datos['consentimientos'] = $stmtCons->fetchAll(PDO::FETCH_ASSOC);
}
jsonOk($datos);
}
// ── POST: Guardar comentario ──
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$datos = inputJson();
$turnoId = (int)($datos['turno_id'] ?? 0);
$comentario = trim($datos['comentario'] ?? '');
$tipo = $datos['tipo'] ?? 'general';
if ($turnoId <= 0) jsonError('turno_id requerido.');
if (!$comentario) jsonError('Comentario vacío.');
if (!in_array($tipo, ['recepcion','muestras','general'], true)) $tipo = 'general';
// Validar que el turno existe
$stmtTurno = $pdo->prepare("SELECT id FROM turnero_turnos WHERE id = ?");
$stmtTurno->execute([$turnoId]);
if (!$stmtTurno->fetch()) jsonError('Turno no encontrado.', 404);
// Guardar comentario
$stmtIns = $pdo->prepare(
"INSERT INTO turnero_comentarios (turno_id, usuario_id, usuario_nombre, comentario, tipo)
VALUES (?, ?, ?, ?, ?)"
);
$stmtIns->execute([$turnoId, $userId, $userName, $comentario, $tipo]);
$comId = (int)$pdo->lastInsertId();
jsonOk(['id' => $comId, 'creado_at' => date('c')]);
}