<?php
// Configurações
$db_path = __DIR__ . '/api/.db.db';
$upload_dir = __DIR__ . '/public/apk/';
$allowed_types = ['application/vnd.android.package-archive', 'application/octet-stream'];
$max_file_size = 100 * 1024 * 1024; // 100MB

// Criar diretórios se não existirem
if (!file_exists($upload_dir)) {
    mkdir($upload_dir, 0755, true);
}
if (!file_exists(dirname($db_path))) {
    mkdir(dirname($db_path), 0755, true);
}

// Conexão com o banco e criação da tabela se não existir
try {
    $db = new SQLite3($db_path);
    
    // Criar tabela se não existir
    $db->exec("CREATE TABLE IF NOT EXISTS app_updates (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        package_name TEXT NOT NULL DEFAULT 'com.example.unitv',
        version_code INTEGER NOT NULL DEFAULT 1,
        version_name TEXT NOT NULL DEFAULT '1.0.0',
        apk_url TEXT,
        apk_filename TEXT,
        release_notes TEXT,
        mandatory BOOLEAN DEFAULT 0,
        enabled BOOLEAN DEFAULT 1,
        updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
    )");
    
    // Verificar se a coluna 'enabled' existe, se não, adicionar
    $result = $db->query("PRAGMA table_info(app_updates)");
    $has_enabled = false;
    while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
        if ($row['name'] === 'enabled') {
            $has_enabled = true;
            break;
        }
    }
    
    if (!$has_enabled) {
        $db->exec("ALTER TABLE app_updates ADD COLUMN enabled BOOLEAN DEFAULT 1");
    }
    
    // Inserir registro padrão se não existir
    $result = $db->query("SELECT COUNT(*) as count FROM app_updates");
    $row = $result->fetchArray(SQLITE3_ASSOC);
    if ($row['count'] == 0) {
        $db->exec("INSERT INTO app_updates (package_name, version_code, version_name, enabled) 
                  VALUES ('com.example.unitv', 1, '1.0.0', 1)");
    }
    
} catch (Exception $e) {
    die("Erro ao conectar com o banco de dados: " . $e->getMessage());
}

// Carregar dados atuais
$res = $db->query("SELECT * FROM app_updates WHERE id = 1");
$row = $res->fetchArray(SQLITE3_ASSOC);

// Variáveis iniciais
$package_name = $row['package_name'] ?? 'com.example.unitv';
$version_code = $row['version_code'] ?? 1;
$version_name = $row['version_name'] ?? '1.0.0';
$apk_url = $row['apk_url'] ?? '';
$apk_filename = $row['apk_filename'] ?? '';
$release_notes = $row['release_notes'] ?? '';
$mandatory = $row['mandatory'] ?? 0;
$enabled = $row['enabled'] ?? 1;
$url_option = (!empty($apk_filename)) ? 'upload' : 'url';

$show_modal = false;
$modal_message = '';
$modal_type = '';

// Processar formulário
if (isset($_POST['submit'])) {
    $package_name = trim($_POST['package_name']);
    $version_code = intval($_POST['version_code']);
    $version_name = trim($_POST['version_name']);
    $release_notes = trim($_POST['release_notes']);
    $mandatory = isset($_POST['mandatory']) ? 1 : 0;
    $url_option = $_POST['url_option'];
    
    // Validar dados
    if (empty($package_name) || empty($version_name) || $version_code <= 0) {
        $show_modal = true;
        $modal_message = 'Por favor, preencha todos os campos corretamente.';
        $modal_type = 'error';
    } else {
        // Processar URL/Upload
        $final_url = '';
        $final_filename = '';
        
        if ($url_option === 'url') {
            $final_url = trim($_POST['custom_url']);
            if (empty($final_url)) {
                $show_modal = true;
                $modal_message = 'Por favor, informe a URL do APK.';
                $modal_type = 'error';
            }
        } else {
            // Processar upload
            if (isset($_FILES['apk_file']) && $_FILES['apk_file']['error'] === UPLOAD_ERR_OK) {
                $file = $_FILES['apk_file'];
                
                // Verificar tamanho
                if ($file['size'] > $max_file_size) {
                    $show_modal = true;
                    $modal_message = 'Arquivo muito grande. Tamanho máximo: 100MB.';
                    $modal_type = 'error';
                }
                // Verificar tipo MIME
                elseif (!in_array($file['type'], $allowed_types)) {
                    $show_modal = true;
                    $modal_message = 'Tipo de arquivo não permitido. Apenas arquivos APK são aceitos.';
                    $modal_type = 'error';
                }
                // Verificar extensão
                elseif (pathinfo($file['name'], PATHINFO_EXTENSION) !== 'apk') {
                    $show_modal = true;
                    $modal_message = 'Apenas arquivos com extensão .apk são permitidos.';
                    $modal_type = 'error';
                }
                else {
                    // Gerar nome único para o arquivo
                    $filename = uniqid() . '_' . preg_replace('/[^a-zA-Z0-9._-]/', '_', $file['name']);
                    $target_path = $upload_dir . $filename;
                    
                    if (move_uploaded_file($file['tmp_name'], $target_path)) {
                        // CORREÇÃO: URL simplificada e correta
                        $final_url = 'https://unilite.demoapp.site/public/apk/' . $filename;
                        $final_filename = $filename;
                        
                        // Limpar arquivo antigo se existir
                        if (!empty($apk_filename) && file_exists($upload_dir . $apk_filename)) {
                            unlink($upload_dir . $apk_filename);
                        }
                    } else {
                        $show_modal = true;
                        $modal_message = 'Erro ao fazer upload do arquivo.';
                        $modal_type = 'error';
                    }
                }
            } else {
                $show_modal = true;
                $modal_message = 'Por favor, selecione um arquivo APK para upload.';
                $modal_type = 'error';
            }
        }
        
        // Se não houve erro, atualizar banco
        if (!$show_modal) {
            if ($url_option === 'url') {
                $stmt = $db->prepare("UPDATE app_updates SET package_name = ?, version_code = ?, version_name = ?, apk_url = ?, apk_filename = NULL, release_notes = ?, mandatory = ?, updated_at = datetime('now') WHERE id = 1");
                $stmt->bindValue(1, $package_name, SQLITE3_TEXT);
                $stmt->bindValue(2, $version_code, SQLITE3_INTEGER);
                $stmt->bindValue(3, $version_name, SQLITE3_TEXT);
                $stmt->bindValue(4, $final_url, SQLITE3_TEXT);
                $stmt->bindValue(5, $release_notes, SQLITE3_TEXT);
                $stmt->bindValue(6, $mandatory, SQLITE3_INTEGER);
            } else {
                $stmt = $db->prepare("UPDATE app_updates SET package_name = ?, version_code = ?, version_name = ?, apk_url = ?, apk_filename = ?, release_notes = ?, mandatory = ?, updated_at = datetime('now') WHERE id = 1");
                $stmt->bindValue(1, $package_name, SQLITE3_TEXT);
                $stmt->bindValue(2, $version_code, SQLITE3_INTEGER);
                $stmt->bindValue(3, $version_name, SQLITE3_TEXT);
                $stmt->bindValue(4, $final_url, SQLITE3_TEXT);
                $stmt->bindValue(5, $final_filename, SQLITE3_TEXT);
                $stmt->bindValue(6, $release_notes, SQLITE3_TEXT);
                $stmt->bindValue(7, $mandatory, SQLITE3_INTEGER);
            }
            
            if ($stmt->execute()) {
                $show_modal = true;
                $modal_message = 'Configurações de atualização salvas com sucesso!';
                $modal_type = 'success';
                
                // Recarregar dados
                $res = $db->query("SELECT * FROM app_updates WHERE id = 1");
                $row = $res->fetchArray(SQLITE3_ASSOC);
                $package_name = $row['package_name'];
                $version_code = $row['version_code'];
                $version_name = $row['version_name'];
                $apk_url = $row['apk_url'];
                $apk_filename = $row['apk_filename'];
                $release_notes = $row['release_notes'];
                $mandatory = $row['mandatory'];
                $enabled = $row['enabled'];
                $url_option = (!empty($apk_filename)) ? 'upload' : 'url';
            } else {
                $show_modal = true;
                $modal_message = 'Erro ao salvar no banco de dados.';
                $modal_type = 'error';
            }
        }
    }
}

// Processar toggle de ativação/desativação
if (isset($_POST['toggle_status'])) {
    $new_status = $enabled ? 0 : 1;
    $stmt = $db->prepare("UPDATE app_updates SET enabled = ?, updated_at = datetime('now') WHERE id = 1");
    $stmt->bindValue(1, $new_status, SQLITE3_INTEGER);
    
    if ($stmt->execute()) {
        $enabled = $new_status;
        $show_modal = true;
        $modal_message = $enabled ? 'Atualizações ativadas com sucesso!' : 'Atualizações desativadas com sucesso!';
        $modal_type = 'success';
    } else {
        $show_modal = true;
        $modal_message = 'Erro ao alterar status das atualizações.';
        $modal_type = 'error';
    }
}

// Se foi um POST e deu sucesso, redirecionar para evitar reenvio do formulário
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $show_modal && $modal_type === 'success') {
    $_SESSION['update_message'] = $modal_message;
    $_SESSION['message_type'] = $modal_type;
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit();
}

// Verificar se há mensagem na sessão (após redirecionamento)
if (isset($_SESSION['update_message'])) {
    $show_modal = true;
    $modal_message = $_SESSION['update_message'];
    $modal_type = $_SESSION['message_type'];
    unset($_SESSION['update_message']);
    unset($_SESSION['message_type']);
}

include ('includes/studiolivheaderecode.php');
?>

<div class="col-md-8 mx-auto">
    <div class="card-body">
        <div class="card bg-primary text-white">
            <div class="card-header card-header-warning">
                <center>
                    <h2><i class="icon icon-download"></i> Gerenciar Atualização do App</h2>
                </center>
            </div>
            
            <div class="card-body">
                <!-- Botão de ligar/desligar atualizações -->
                <div class="row mb-4">
                    <div class="col-md-12">
                        <div class="d-flex justify-content-between align-items-center">
                            <h4 class="mb-0">Status das Atualizações:</h4>
                            <form method="post" class="mb-0">
                                <button type="submit" name="toggle_status" class="btn btn-<?php echo $enabled ? 'success' : 'danger'; ?>">
                                    <i class="icon icon-<?php echo $enabled ? 'check' : 'close'; ?>"></i>
                                    <?php echo $enabled ? 'Atualizações Ativas' : 'Atualizações Desativadas'; ?>
                                </button>
                            </form>
                        </div>
                        <p class="text-muted mt-2">
                            <?php echo $enabled 
                                ? 'O sistema está enviando atualizações para os aplicativos.' 
                                : 'O sistema não está enviando atualizações. Os aplicativos receberão uma resposta de "sem atualizações".'; ?>
                        </p>
                    </div>
                </div>
                
                <hr>
                
                <form method="post" enctype="multipart/form-data">
                    <div class="form-group">
                        <label class="form-label">Package Name</label>
                        <input type="text" class="form-control" name="package_name" value="<?php echo htmlspecialchars($package_name); ?>" required>
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">Version Code</label>
                        <input type="number" class="form-control" name="version_code" value="<?php echo htmlspecialchars($version_code); ?>" min="1" required>
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">Version Name</label>
                        <input type="text" class="form-control" name="version_name" value="<?php echo htmlspecialchars($version_name); ?>" required>
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">Notas da Versão (Release Notes)</label>
                        <textarea class="form-control" name="release_notes" rows="3" placeholder="Descreva as novidades desta versão..."><?php echo htmlspecialchars($release_notes); ?></textarea>
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">Atualização Obrigatória</label>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="mandatory" value="1" id="mandatory_check" <?php echo $mandatory ? 'checked' : ''; ?>>
                            <label class="form-check-label" for="mandatory_check">
                                Marque se esta atualização é obrigatória
                            </label>
                        </div>
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">Método de URL do APK</label>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="url_option" value="url" id="option_url" <?php echo $url_option === 'url' ? 'checked' : ''; ?>>
                            <label class="form-check-label" for="option_url">
                                URL Personalizada
                            </label>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="url_option" value="upload" id="option_upload" <?php echo $url_option === 'upload' ? 'checked' : ''; ?>>
                            <label class="form-check-label" for="option_upload">
                                Upload Direto
                            </label>
                        </div>
                    </div>
                    
                    <div id="url_section" style="display: <?php echo $url_option === 'url' ? 'block' : 'none'; ?>;">
                        <div class="form-group">
                            <label class="form-label">URL do APK</label>
                            <input type="url" class="form-control" name="custom_url" value="<?php echo $url_option === 'url' ? htmlspecialchars($apk_url) : ''; ?>" placeholder="https://exemplo.com/app.apk">
                        </div>
                    </div>
                    
                    <div id="upload_section" style="display: <?php echo $url_option === 'upload' ? 'block' : 'none'; ?>;">
                        <div class="form-group">
                            <label class="form-label">Arquivo APK</label>
                            <input type="file" class="form-control" name="apk_file" accept=".apk">
                            <?php if (!empty($apk_filename)): ?>
                            <small class="form-text text-muted">
                                Arquivo atual: <?php echo htmlspecialchars($apk_filename); ?><br>
                                URL: <?php echo htmlspecialchars($apk_url); ?>
                            </small>
                            <?php endif; ?>
                        </div>
                    </div>
                    
                    <hr>
                    
                    <center>
                        <button type="submit" name="submit" class="btn btn-info">
                            <i class="icon icon-check"></i> Salvar Configurações
                        </button>
                    </center>
                </form>
            </div>
        </div>
    </div>
</div>

<!-- Modal de Confirmação -->
<?php if ($show_modal): ?>
<div class="modal fade show" id="messageModal" tabindex="-1" role="dialog" style="display: block; background-color: rgba(0,0,0,0.5);">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header bg-<?php echo $modal_type === 'success' ? 'success' : 'danger'; ?> text-white">
                <h5 class="modal-title">
                    <i class="icon <?php echo $modal_type === 'success' ? 'icon-check' : 'icon-warning'; ?>"></i>
                    <?php echo $modal_type === 'success' ? 'Sucesso' : 'Erro'; ?>
                </h5>
            </div>
            <div class="modal-body">
                <p><?php echo htmlspecialchars($modal_message); ?></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-<?php echo $modal_type === 'success' ? 'success' : 'danger'; ?>" onclick="handleModalClose()">
                    Fechar
                </button>
            </div>
        </div>
    </div>
</div>
<?php endif; ?>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const urlOption = document.querySelector('input[name="url_option"]');
    const urlSection = document.getElementById('url_section');
    const uploadSection = document.getElementById('upload_section');
    
    document.querySelectorAll('input[name="url_option"]').forEach(radio => {
        radio.addEventListener('change', function() {
            if (this.value === 'url') {
                urlSection.style.display = 'block';
                uploadSection.style.display = 'none';
            } else {
                urlSection.style.display = 'none';
                uploadSection.style.display = 'block';
            }
        });
    });
    
    // Mostrar modal automaticamente se existir
    <?php if ($show_modal): ?>
    setTimeout(function() {
        document.getElementById('messageModal').style.display = 'block';
    }, 100);
    <?php endif; ?>
});

function handleModalClose() {
    const modal = document.getElementById('messageModal');
    if (modal) {
        modal.style.display = 'none';
    }
    
    // Recarregar a página apenas para mensagens de sucesso
    <?php if ($show_modal && $modal_type === 'success'): ?>
    window.location.reload();
    <?php endif; ?>
}

// Fechar modal clicando fora dele
window.onclick = function(event) {
    const modal = document.getElementById('messageModal');
    if (event.target === modal) {
        handleModalClose();
    }
}
</script>

<?php include ('includes/studifooterolivecode.php'); ?>
</body>
</html>