<?php
// includes/track.php
// Arquivo para lidar com o rastreamento de conversões e redirecionamentos


// Define o tipo de resposta como JSON
header('Content-Type: application/json');

// Verifica se é uma requisição POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['success' => false, 'message' => 'Método não permitido']);
    exit;
}

// Verifica qual ação está sendo solicitada
$action = isset($_POST['action']) ? sanitizeInput($_POST['action']) : '';

try {
    switch ($action) {
        case 'redirect':
            // Registra redirecionamento
            $tipo = isset($_POST['tipo']) ? sanitizeInput($_POST['tipo']) : '';
            $pageId = isset($_POST['page_id']) ? intval($_POST['page_id']) : 0;
            
            if (empty($tipo) || $pageId <= 0) {
                throw new Exception('Parâmetros inválidos');
            }
            
            // Busca informações da página
            $db->query("SELECT type FROM pages WHERE id = :id");
            $db->bind(':id', $pageId);
            $page = $db->single();
            
            if (!$page) {
                throw new Exception('Página não encontrada');
            }
            
            // Registra o acesso/redirecionamento
            $sessionId = session_id();
            
            $db->query("INSERT INTO rastreamento (curso_id, pagina, ip, session_id, redirecionamento, data_acesso) 
                       VALUES (:curso_id, :pagina, :ip, :session_id, :redirecionamento, NOW())");
            
            $db->bind(':curso_id', isset($_POST['curso_id']) ? intval($_POST['curso_id']) : 1); // Default para curso 1 ou ID correto
            $db->bind(':pagina', $page['type']);
            $db->bind(':ip', $_SERVER['REMOTE_ADDR']);
            $db->bind(':session_id', $sessionId);
            $db->bind(':redirecionamento', $tipo);
            
            $db->execute();
            
            echo json_encode(['success' => true, 'message' => 'Redirecionamento registrado']);
            break;
            
        case 'pageview':
            // Registra visualização de página
            $pageId = isset($_POST['page_id']) ? intval($_POST['page_id']) : 0;
            
            if ($pageId <= 0) {
                throw new Exception('Página não encontrada');
            }
            
            $db->query("INSERT INTO page_views (page_id, visitor_ip, user_agent) 
                       VALUES (:page_id, :visitor_ip, :user_agent)");
            
            $db->bind(':page_id', $pageId);
            $db->bind(':visitor_ip', $_SERVER['REMOTE_ADDR']);
            $db->bind(':user_agent', $_SERVER['HTTP_USER_AGENT'] ?? '');
            
            $db->execute();
            
            echo json_encode(['success' => true, 'message' => 'Visualização registrada']);
            break;
            
        default:
            throw new Exception('Ação não reconhecida');
    }
} catch (Exception $e) {
    logError("Erro no rastreamento: " . $e->getMessage());
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}
