<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

if (!isset($_SESSION['eggzie_iboPlayer']) || !isset($_SESSION['admin_name'])) {
    header('Location: login.php');
    exit();
}

$admin_name = $_SESSION['admin_name'];
include 'includes/header.php';
require_once 'includes/DNSDatabase.php';
require_once 'sync_mac_consistency.php';

$db = new SQLite3('a/.eggziedb.db');
$dnsDB = DNSDatabase::getInstance();

$id = isset($_GET['update']) ? intval($_GET['update']) : 0;
if ($id == 0) {
    header('Location: users.php');
    exit();
}

$user = $db->query("SELECT * FROM ibo WHERE id = $id");
$user_data = $user->fetchArray(SQLITE3_ASSOC);
if (!$user_data || $user_data['seller'] != $admin_name) {
    echo "<script>alert('Usuário não encontrado ou acesso negado.'); window.location.href='users.php';</script>";
    exit();
}

// Verificar se está expirado
$today = date('Y-m-d');
$is_expired = ($user_data['expire_date'] < $today && $user_data['is_test'] == 0);
$is_test = ($user_data['is_test'] == 1);

// Processar edição normal
if (isset($_POST['submit'])) {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    $title = trim($_POST['title']);
    $dns = trim($_POST['dns']);
    $extra = trim($_POST['extra']);

    if (empty($username) || empty($password) || empty($title) || empty($dns) || empty($extra)) {
        echo "<script>alert('Preencha todos os campos!'); window.history.back();</script>";
        exit();
    }

    $sql = "UPDATE ibo SET 
                username = '" . SQLite3::escapeString($username) . "',
                password = '" . SQLite3::escapeString($password) . "',
                title = '" . SQLite3::escapeString($title) . "',
                url = '" . SQLite3::escapeString($dns) . "',
                extra = '" . SQLite3::escapeString($extra) . "'
            WHERE id = $id";
    if ($db->exec($sql)) {
        echo "<script>alert('Usuário atualizado com sucesso!'); window.location.href='users.php';</script>";
    } else {
        echo "<script>alert('Erro ao atualizar: " . addslashes($db->lastErrorMsg()) . "'); window.history.back();</script>";
    }
    exit();
}

// Processar transferência (apenas para não expirados e não teste)
if (!$is_expired && !$is_test && isset($_POST['transfer_submit'])) {
    $new_mac = strtoupper(trim($_POST['new_mac']));
    $old_mac = $user_data['mac_address'];
    $expire_date_old = $user_data['expire_date'];
    $cliente_old = $user_data['extra'];
    $title_old = $user_data['title'];
    $username_old = $user_data['username'];
    $password_old = $user_data['password'];
    $dns_old = $user_data['url'];

    if (empty($new_mac) || !preg_match('/^([0-9A-F]{2}:){7}[0-9A-F]{2}$/', $new_mac)) {
        echo "<script>alert('MAC de destino inválido!'); window.history.back();</script>";
        exit();
    }

    // Verificar se o MAC de destino já existe e se é ATIVO ANUAL
    $check_dest = $db->query("SELECT id, is_test, expire_date FROM ibo WHERE mac_address = '$new_mac' AND seller = '$admin_name' LIMIT 1");
    $dest_data = $check_dest->fetchArray(SQLITE3_ASSOC);
    if ($dest_data) {
        $is_test_dest = (int)$dest_data['is_test'];
        $expire_dest = $dest_data['expire_date'];
        if ($is_test_dest == 0 && $expire_dest >= $today) {
            echo "<script>alert('Não é possível transferir para um MAC que já possui licença ATIVA ANUAL!'); window.history.back();</script>";
            exit();
        }
    }

    $db->exec('BEGIN IMMEDIATE');

    // 1. Expirar TODAS as playlists do MAC antigo (data = ontem)
    $expired_date = date('Y-m-d', strtotime('-1 day'));
    $db->exec("UPDATE ibo SET expire_date = '$expired_date', is_test = 0 WHERE mac_address = '$old_mac' AND seller = '$admin_name'");

    // 2. Se o destino já existia (expirado ou teste), remover os registros antigos
    if ($dest_data) {
        $db->exec("DELETE FROM ibo WHERE mac_address = '$new_mac' AND seller = '$admin_name'");
    }

    // 3. Atualizar a playlist atual para o novo MAC, herdando todos os dados
    $sql = "UPDATE ibo SET 
                mac_address = '" . SQLite3::escapeString($new_mac) . "',
                expire_date = '$expire_date_old',
                is_test = 0,
                extra = '" . SQLite3::escapeString($cliente_old) . "',
                title = '" . SQLite3::escapeString($title_old) . "',
                username = '" . SQLite3::escapeString($username_old) . "',
                password = '" . SQLite3::escapeString($password_old) . "',
                url = '" . SQLite3::escapeString($dns_old) . "'
            WHERE id = $id";
    if ($db->exec($sql)) {
        syncMacPlaylists($db, $new_mac, $admin_name);
        $db->exec('COMMIT');
        echo "<script>alert('Transferência concluída!\\nMAC antigo ($old_mac) expirado.\\nNovo MAC ($new_mac) com validade original: $expire_date_old.'); window.location.href='users.php';</script>";
    } else {
        $db->exec('ROLLBACK');
        echo "<script>alert('Erro ao transferir: " . addslashes($db->lastErrorMsg()) . "'); window.history.back();</script>";
    }
    exit();
}

// Processar renovação (apenas para expirados)
if ($is_expired && isset($_POST['renew_submit'])) {
    // Admin renova gratuitamente (sem desconto)
    $new_expire = date('Y-m-d', strtotime('+1 year'));
    $sql = "UPDATE ibo SET expire_date = '$new_expire', is_test = 0 WHERE id = $id";
    if ($db->exec($sql)) {
        syncMacPlaylists($db, $user_data['mac_address'], $admin_name);
        echo "<script>alert('Licença renovada com sucesso! Nova validade: $new_expire'); window.location.href='users.php';</script>";
    } else {
        echo "<script>alert('Erro ao renovar: " . addslashes($db->lastErrorMsg()) . "'); window.history.back();</script>";
    }
    exit();
}

// Dados para exibição
$dns_options = $dnsDB->getAll('admin', $admin_name);
$expire_date = $user_data['expire_date'];
$days_left = 0;
if ($expire_date && $expire_date != '0000-00-00' && !$is_expired) {
    $today_dt = new DateTime();
    $expire_dt = new DateTime($expire_date);
    $diff = $today_dt->diff($expire_dt);
    $days_left = $diff->days;
}
?>

<style>
    .modal-header { background: #4e73df; color: white; }
    .modal-header .close { color: white; }
    .text-red { color: #dc3545; }
    .btn-renew { background-color: #28a745; color: white; }
    .btn-renew:hover { background-color: #218838; }
</style>

<div class="container-fluid">
    <div class="card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">Editar Usuário</h6>
        </div>
        <div class="card-body">
            <!-- Informações do MAC -->
            <div class="alert alert-info">
                <strong>MAC Address:</strong> <?php echo htmlspecialchars($user_data['mac_address']); ?><br>
                <strong>Validade:</strong> <?php echo $expire_date; ?> 
                <?php if (!$is_expired && !$is_test): ?>
                    (<?php echo $days_left; ?> dias restantes)
                <?php elseif ($is_expired): ?>
                    <span class="badge badge-danger">EXPIRADO</span>
                <?php elseif ($is_test): ?>
                    <span class="badge badge-warning">MODO TESTE</span>
                <?php endif; ?>
                <br>
                <?php if (!$is_expired && !$is_test): ?>
                    <button type="button" class="btn btn-info btn-sm mt-2" data-toggle="modal" data-target="#transferModal">
                        <i class="fas fa-exchange-alt"></i> Transferir Licença para outro MAC
                    </button>
                    <small class="text-red d-block mt-1">O MAC atual será expirado e o destino herdará esta validade.</small>
                <?php elseif ($is_expired): ?>
                    <button type="button" class="btn btn-success btn-sm mt-2" data-toggle="modal" data-target="#renewModal">
                        <i class="fas fa-sync-alt"></i> Renovar Licença (Anual)
                    </button>
                    <small class="text-success d-block mt-1">Renove por mais 1 ano.</small>
                <?php else: ?>
                    <small class="text-muted">MAC em modo teste não pode ser transferido nem renovado.</small>
                <?php endif; ?>
            </div>

            <!-- Formulário de edição normal -->
            <form method="post">
                <div class="form-group">
                    <label><strong>NOME DO SERVIDOR</strong></label>
                    <input type="text" class="form-control" name="title" value="<?php echo htmlspecialchars($user_data['title']); ?>" required>
                </div>
                <div class="form-group">
                    <label><strong>DNS</strong></label>
                    <select class="form-control" name="dns" required>
                        <option value="">Selecione uma DNS</option>
                        <?php if ($dns_options): while ($dns_row = $dns_options->fetchArray(SQLITE3_ASSOC)): ?>
                            <option value="<?php echo htmlspecialchars($dns_row['dns']); ?>" <?php echo $user_data['url'] == $dns_row['dns'] ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($dns_row['nome']); ?>
                            </option>
                        <?php endwhile; endif; ?>
                    </select>
                </div>
                <div class="form-group">
                    <label><strong>NOME DO CLIENTE</strong></label>
                    <input type="text" class="form-control" name="extra" value="<?php echo htmlspecialchars($user_data['extra']); ?>" required>
                </div>
                <div class="form-group">
                    <label><strong>USUÁRIO</strong></label>
                    <input type="text" class="form-control" name="username" value="<?php echo htmlspecialchars($user_data['username']); ?>" required>
                </div>
                <div class="form-group">
                    <label><strong>SENHA</strong></label>
                    <input type="text" class="form-control" name="password" value="<?php echo htmlspecialchars($user_data['password']); ?>" required>
                </div>
                <div class="form-group">
                    <button type="submit" name="submit" class="btn btn-primary"><i class="fas fa-save"></i> Salvar Alterações</button>
                    <a href="users.php" class="btn btn-secondary">Cancelar</a>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- Modal de Transferência (apenas para ativos) -->
<div class="modal fade" id="transferModal" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title"><i class="fas fa-exchange-alt"></i> Transferir Licença</h5>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>
            <form method="post">
                <div class="modal-body">
                    <p>Transferir do MAC <strong><?php echo htmlspecialchars($user_data['mac_address']); ?></strong></p>
                    <p><strong>Validade atual:</strong> <?php echo $expire_date; ?> (<?php echo $days_left; ?> dias)</p>
                    <div class="form-group">
                        <label>Novo MAC (destino):</label>
                        <input type="text" class="form-control" name="new_mac" id="new_mac" placeholder="00:11:22:33:44:55:66:77" required>
                        <small class="text-muted">Pode ser: NOVO, EXPIRADO ou MODO TESTE. Não pode ser um MAC já ativo.</small>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
                    <button type="submit" name="transfer_submit" class="btn btn-primary">Transferir</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- Modal de Renovação (apenas para expirados) -->
<div class="modal fade" id="renewModal" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            <div class="modal-header bg-success text-white">
                <h5 class="modal-title"><i class="fas fa-sync-alt"></i> Renovar Licença</h5>
                <button type="button" class="close text-white" data-dismiss="modal">&times;</button>
            </div>
            <form method="post">
                <div class="modal-body">
                    <p>Renovar a licença do MAC <strong><?php echo htmlspecialchars($user_data['mac_address']); ?></strong></p>
                    <p>Data de expiração atual: <strong><?php echo $expire_date; ?></strong> (expirado)</p>
                    <p>Após a renovação, a nova validade será de <strong>+1 ano</strong> a partir de hoje.</p>
                    <?php if ($admin_name != 'admin'): ?>
                        <p class="text-danger">Esta ação consumirá 1 MAC do seu saldo.</p>
                    <?php else: ?>
                        <p class="text-info">Administrador renova gratuitamente.</p>
                    <?php endif; ?>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
                    <button type="submit" name="renew_submit" class="btn btn-success">Renovar</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
document.getElementById('new_mac')?.addEventListener('input', function(e) {
    var val = e.target.value.replace(/[^a-fA-F0-9]/g, "").toUpperCase();
    if (val.length > 16) val = val.substring(0,16);
    var fmt = "";
    for (var i=0; i<val.length; i++) {
        fmt += val[i];
        if ((i+1)%2===0 && i<val.length-1) fmt += ":";
    }
    e.target.value = fmt;
});
</script>

<?php include 'includes/footer.php'; ?>