<?php
// Configuração inicial
session_start();
date_default_timezone_set('America/Sao_Paulo');

// Função para registrar logs
function logDebug($message) {
    $logFile = __DIR__.'/authqr_debug.log';
    $timestamp = date('Y-m-d H:i:s');
    file_put_contents($logFile, "[$timestamp] $message\n", FILE_APPEND);
}

logDebug('=== INÍCIO DA REQUISIÇÃO ===');

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        // Verificação básica dos campos obrigatórios
        if (empty($_POST['id']) || empty($_POST['dns']) || empty($_POST['usuario']) || empty($_POST['senha'])) {
            throw new Exception("Todos os campos são obrigatórios");
        }

        $id = $_POST['id'];
        $playlistTitle = empty($_POST['nomePlaylist']) ? 'Playlist Padrão' : $_POST['nomePlaylist'];
        $dns = $_POST['dns'];
        $username = $_POST['usuario'];
        $password = $_POST['senha'];

        logDebug("Dados recebidos - ID: $id, DNS: $dns, Usuário: $username");

        // Conexão com banco de dados de clientes
        $databaseFileClientes = './api/db/studiolivecode_clientes.db';
        $connClientes = new PDO("sqlite:$databaseFileClientes");
        $connClientes->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        // Busca MAC address
        $stmt = $connClientes->prepare("SELECT mac_address FROM ibo WHERE key = :id");
        $stmt->execute([':id' => $id]);
        $iboRow = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$iboRow) {
            throw new Exception("ID inválido ou não encontrado");
        }

        $macAddress = $iboRow['mac_address'];
        logDebug("MAC address encontrado: $macAddress");

        // Busca URL do DNS
        $databaseFileDns = './api/db/studiolivecode_dns.db';
        $connDns = new PDO("sqlite:$databaseFileDns");
        $connDns->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $connDns->prepare("SELECT url FROM dns WHERE title = :dns");
        $stmt->execute([':dns' => $dns]);
        $dnsRow = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$dnsRow) {
            throw new Exception("DNS não encontrado: $dns");
        }

        $dnsUrl = rtrim($dnsRow['url'], '/');
        logDebug("URL do DNS: $dnsUrl");

        // Cria a URL da playlist sem validação
        $m3uUrl = "$dnsUrl/get.php?username=$username&password=$password&type=m3u_plus&output=ts";
        $expireDate = date('Y-m-d H:i:s', strtotime('+30 days')); // Data padrão de 30 dias

        // Atualização do banco de dados
        $stmt = $connClientes->prepare("
            UPDATE ibo SET 
                username = :username, 
                password = :password, 
                url = :url, 
                title = :title, 
                expire_date = :expire_date, 
                dns = :dns
            WHERE mac_address = :mac_address
        ");

        $success = $stmt->execute([
            ':mac_address' => $macAddress,
            ':title' => $playlistTitle,
            ':url' => $m3uUrl,
            ':username' => $username,
            ':password' => $password,
            ':expire_date' => $expireDate,
            ':dns' => $dnsUrl
        ]);

        if ($success) {
            $_SESSION['success_message'] = "Dados inseridos com sucesso!";
            logDebug("Dados inseridos no banco de dados");
        } else {
            throw new Exception("Erro ao atualizar banco de dados");
        }

    } catch (Exception $e) {
        $errorMsg = $e->getMessage();
        logDebug("ERRO: $errorMsg");
        $_SESSION['error_message'] = $errorMsg;
    }

    header("Location: loginqr.php");
    exit();
}

header("Location: loginqr.php");
exit();
?>