<?php
// includes/track-conversion.php

require_once 'config.php';
require_once 'db.php';
require_once 'functions.php';
require_once 'unique-visits-tracker.php';

// Só aceita POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'error' => 'Método não permitido']);
    exit;
}

// Lê dados JSON
$input = file_get_contents('php://input');
$data = json_decode($input, true);

if (!$data) {
    http_response_code(400);
    echo json_encode(['success' => false, 'error' => 'Dados inválidos']);
    exit;
}

try {
    $pageId = $data['page_id'] ?? null;
    $conversionType = $data['conversion_type'] ?? '';
    $conversionValue = $data['conversion_value'] ?? null;
    $conversionData = $data['conversion_data'] ?? null;
    
    if (empty($conversionType)) {
        throw new Exception('Tipo de conversão é obrigatório');
    }
    
    // Determina o pages_visitor_id
    $pagesVisitorId = null;
    
    if ($pageId) {
        // Busca pelo page_id
        $db->query("SELECT id FROM pages_visitor WHERE page_id = :page_id");
        $db->bind(':page_id', $pageId);
        $result = $db->single();
        $pagesVisitorId = $result['id'] ?? null;
    }
    
    if (!$pagesVisitorId) {
        // Tenta encontrar pela URL atual
        $currentUrl = $conversionData['page_url'] ?? $_SERVER['REQUEST_URI'] ?? '';
        $cleanUrl = strtok($currentUrl, '?'); // Remove query params
        
        $db->query("SELECT id FROM pages_visitor WHERE page_url = :page_url");
        $db->bind(':page_url', $cleanUrl);
        $result = $db->single();
        $pagesVisitorId = $result['id'] ?? null;
    }
    
    if (!$pagesVisitorId) {
        // Cria uma nova entrada se não encontrar
        $pageTitle = $conversionData['page_title'] ?? 'Página não identificada';
        $pageUrl = $conversionData['page_url'] ?? '/';
        
        $db->query("
            INSERT INTO pages_visitor (
                page_id, page_url, page_title, page_type, page_category,
                auto_created, first_detected, last_activity, is_active
            ) VALUES (
                :page_id, :page_url, :page_title, 'static', 'conversion_page',
                1, NOW(), NOW(), 1
            )
        ");
        
        $db->bind(':page_id', $pageId);
        $db->bind(':page_url', $pageUrl);
        $db->bind(':page_title', $pageTitle);
        
        $db->execute();
        $pagesVisitorId = $db->lastInsertId();
    }
    
    // Registra a conversão
    $success = $uniqueVisitsTracker->trackConversion(
        $pagesVisitorId,
        $conversionType,
        $conversionValue,
        $conversionData
    );
    
    if ($success) {
        echo json_encode([
            'success' => true,
            'pages_visitor_id' => $pagesVisitorId,
            'conversion_type' => $conversionType
        ]);
    } else {
        throw new Exception('Falha ao registrar conversão');
    }
    
} catch (Exception $e) {
    error_log("Erro ao registrar conversão: " . $e->getMessage());
    
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'error' => $e->getMessage()
    ]);
}
?>