<?php
// StudioLiveCodeUpdate.php

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization, User-Agent');

// Permitir requisições OPTIONS
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Log para debug
error_log("OTA Update Request received: " . date('Y-m-d H:i:s'));

// Verificar se é POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode([
        'error' => 'Método não permitido. Use POST.'
    ]);
    exit();
}

// Ler dados JSON do input
$json_input = file_get_contents('php://input');
$input = json_decode($json_input, true);

if (!$input || json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    echo json_encode([
        'error' => 'Dados JSON inválidos',
        'json_error' => json_last_error_msg()
    ]);
    exit();
}

// CORREÇÃO: Caminho correto para o banco de dados
$db_path = __DIR__ . '/.db.db'; // Agora está na mesma pasta

try {
    // Verificar se o banco existe
    if (!file_exists($db_path)) {
        http_response_code(500);
        echo json_encode([
            'error' => 'Banco de dados não configurado',
            'db_path' => $db_path
        ]);
        exit();
    }
    
    $db = new SQLite3($db_path);
    
    // Obter dados da requisição
    $requestPackageName = $input['packageName'] ?? '';
    $requestVersionCode = intval($input['versionCode'] ?? 0);
    $requestVersionName = $input['versionName'] ?? '';
    
    error_log("Request: package=$requestPackageName, versionCode=$requestVersionCode, versionName=$requestVersionName");
    
    // Buscar atualização no banco
    $stmt = $db->prepare("SELECT package_name, version_code, version_name, apk_url, release_notes, mandatory, enabled FROM app_updates WHERE id = 1");
    $result = $stmt->execute();
    
    if ($row = $result->fetchArray(SQLITE3_ASSOC)) {
        // Verificar se as atualizações estão habilitadas
        if (!$row['enabled']) {
            echo json_encode([
                'status' => 'no_updates',
                'message' => 'Não há atualizações disponíveis no momento',
                'enabled' => false
            ]);
            exit();
        }
        
        // Verificar se o package name corresponde
        if ($row['package_name'] !== $requestPackageName) {
            http_response_code(400);
            echo json_encode([
                'error' => 'Package name não corresponde',
                'requestPackage' => $requestPackageName,
                'dbPackage' => $row['package_name']
            ]);
            exit();
        }
        
        // Verificar se há uma atualização disponível
        if ($row['version_code'] > $requestVersionCode) {
            echo json_encode([
                'packageName' => $row['package_name'],
                'versionCode' => (int)$row['version_code'],
                'versionName' => $row['version_name'],
                'url' => $row['apk_url'],
                'releaseNotes' => $row['release_notes'] ?? 'Melhorias de performance e correções de bugs',
                'mandatory' => (bool)$row['mandatory'],
                'enabled' => (bool)$row['enabled']
            ]);
        } else {
            echo json_encode([
                'status' => 'up_to_date',
                'message' => 'O aplicativo já está na versão mais recente',
                'currentVersion' => $requestVersionCode,
                'latestVersion' => $row['version_code'],
                'enabled' => (bool)$row['enabled']
            ]);
        }
    } else {
        http_response_code(404);
        echo json_encode([
            'error' => 'Nenhuma atualização configurada no sistema'
        ]);
    }
    
    $db->close();
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'error' => 'Erro ao conectar com o banco de dados',
        'details' => $e->getMessage(),
        'db_path' => $db_path
    ]);
}
?>