<?php
// logs.php - Sistema de auditoria
require_once __DIR__ . '/config.php';

function registrarLog($acao, $tabela = null, $registro_id = null, $detalhes = null) {
    global $pdo;
    $usuario_id = $_SESSION['usuario_id'] ?? null;
    $ip = $_SERVER['REMOTE_ADDR'] ?? null;
    $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? null;
    
    $sql = "INSERT INTO logs (usuario_id, acao, tabela, registro_id, detalhes, ip, user_agent) 
            VALUES (:usuario_id, :acao, :tabela, :registro_id, :detalhes, :ip, :user_agent)";
    
    $stmt = $pdo->prepare($sql);
    return $stmt->execute([
        ':usuario_id' => $usuario_id,
        ':acao' => $acao,
        ':tabela' => $tabela,
        ':registro_id' => $registro_id,
        ':detalhes' => $detalhes ? json_encode($detalhes) : null,
        ':ip' => $ip,
        ':user_agent' => $user_agent
    ]);
}

function getLogs($filtros = [], $limite = 100) {
    global $pdo;
    $sql = "SELECT l.*, u.nome as usuario_nome 
            FROM logs l 
            LEFT JOIN usuarios u ON l.usuario_id = u.id 
            WHERE 1=1";
    $params = [];
    
    if (!empty($filtros['usuario_id'])) {
        $sql .= " AND l.usuario_id = :usuario_id";
        $params[':usuario_id'] = $filtros['usuario_id'];
    }
    if (!empty($filtros['acao'])) {
        $sql .= " AND l.acao = :acao";
        $params[':acao'] = $filtros['acao'];
    }
    if (!empty($filtros['data_inicio'])) {
        $sql .= " AND l.created_at >= :data_inicio";
        $params[':data_inicio'] = $filtros['data_inicio'];
    }
    if (!empty($filtros['data_fim'])) {
        $sql .= " AND l.created_at <= :data_fim";
        $params[':data_fim'] = $filtros['data_fim'] . ' 23:59:59';
    }
    
    $sql .= " ORDER BY l.created_at DESC LIMIT :limite";
    $params[':limite'] = $limite;
    
    $stmt = $pdo->prepare($sql);
    foreach ($params as $key => &$val) {
        $stmt->bindParam($key, $val);
    }
    $stmt->execute();
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}