false, 'error' => 'No autenticado: ' . $e->getMessage()]); exit; } // Verificar permiso if (!hasPermission('manage_templates', 'telegram')) { http_response_code(403); echo json_encode(['success' => false, 'error' => 'No tienes permiso para editar plantillas de Telegram.']); exit; } // Solo permitir método POST if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['success' => false, 'error' => 'Método no permitido']); exit; } // Obtener datos $data = json_decode(file_get_contents('php://input'), true); $id = $data['id'] ?? null; $nombre = trim($data['nombre'] ?? ''); $comando = trim($data['comando'] ?? ''); $contenido = $data['contenido'] ?? ''; // Validación if (!$id || !is_numeric($id)) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'ID de plantilla inválido o no proporcionado.']); exit; } if (empty($nombre) || empty($contenido)) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'El nombre y el contenido de la plantilla son obligatorios.']); exit; } try { $db = getDB(); // Obtener la plantilla actual para verificar permisos $stmt = $db->prepare("SELECT usuario_id FROM plantillas_telegram WHERE id = ?"); $stmt->execute([$id]); $plantillaExistente = $stmt->fetch(); if (!$plantillaExistente) { http_response_code(404); echo json_encode(['success' => false, 'error' => 'Plantilla no encontrada.']); exit; } // Verificar permisos: solo Admin o el propietario pueden editar if ($userData->rol !== 'Admin' && $plantillaExistente['usuario_id'] != $userData->userId) { http_response_code(403); // Forbidden echo json_encode(['success' => false, 'error' => 'No tiene permisos para editar esta plantilla.']); exit; } // Verificar si el comando ya existe (excepto para la plantilla actual) if (!empty($comando)) { $stmt = $db->prepare("SELECT id FROM plantillas_telegram WHERE comando = ? AND id != ?"); $stmt->execute([$comando, $id]); if ($stmt->fetch()) { http_response_code(409); // Conflict echo json_encode(['success' => false, 'error' => 'Ya existe otra plantilla con ese comando.']); exit; } } // Actualizar en la base de datos $stmt = $db->prepare(" UPDATE plantillas_telegram SET nombre = ?, comando = ?, contenido = ?, fecha_modificacion = NOW() WHERE id = ? "); $stmt->execute([ $nombre, empty($comando) ? null : $comando, $contenido, $id ]); logToFile('telegram/templates.log', "Plantilla editada: ID={$id}, por Usuario: {$userData->username}"); echo json_encode([ 'success' => true, 'message' => 'Plantilla actualizada correctamente.' ]); } catch (Exception $e) { http_response_code(500); logToFile('telegram/errors.log', 'Error editando plantilla: ' . $e->getMessage(), 'ERROR'); echo json_encode(['success' => false, 'error' => 'Ocurrió un error en el servidor al actualizar la plantilla.']); }