<?php
include ('includes/header.php');

// Configuración
$activation_codes_dir = __DIR__ . '/api/playlist/activation_codes';
$used_codes_dir = __DIR__ . '/api/playlist/used_codes';

// Crear directorios si no existen
foreach ([$activation_codes_dir, $used_codes_dir] as $dir) {
    if (!is_dir($dir)) {
        mkdir($dir, 0777, true);
    }
}

// Función para generar código de 8 dígitos
function generateActivationCode() {
    $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $code = '';
    for ($i = 0; $i < 8; $i++) {
        $code .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $code;
}

// Función para guardar código con credenciales
function saveActivationCode($code, $username, $password) {
    global $activation_codes_dir;
    
    $data = [
        'username' => $username,
        'password' => $password,
        'created_at' => time(),
        'used' => false,
        'code' => $code
    ];
    
    $file_path = $activation_codes_dir . '/' . $code . '.json';
    file_put_contents($file_path, json_encode($data, JSON_PRETTY_PRINT));
    
    return $file_path;
}

// Función para mover código a usados
function moveToUsedCodes($code_data) {
    global $activation_codes_dir, $used_codes_dir;
    
    $original_file = $activation_codes_dir . '/' . $code_data['code'] . '.json';
    $new_file = $used_codes_dir . '/' . $code_data['code'] . '.json';
    
    // Actualizar datos con información de uso
    $code_data['used'] = true;
    $code_data['used_at'] = time();
    
    // Guardar en directorio de usados y eliminar original
    file_put_contents($new_file, json_encode($code_data, JSON_PRETTY_PRINT));
    
    if (file_exists($original_file)) {
        unlink($original_file);
    }
    
    return true;
}

// Función para listar códigos disponibles
function getAvailableCodes() {
    global $activation_codes_dir;
    $codes = [];
    
    if (is_dir($activation_codes_dir)) {
        $files = glob($activation_codes_dir . '/*.json');
        foreach ($files as $file) {
            $data = json_decode(file_get_contents($file), true);
            if ($data && !$data['used']) {
                $codes[] = $data;
            }
        }
    }
    
    return $codes;
}

// Función para listar códigos usados
function getUsedCodes() {
    global $used_codes_dir;
    $codes = [];
    
    if (is_dir($used_codes_dir)) {
        $files = glob($used_codes_dir . '/*.json');
        foreach ($files as $file) {
            $data = json_decode(file_get_contents($file), true);
            if ($data) {
                $codes[] = $data;
            }
        }
    }
    
    return $codes;
}

// Función para eliminar código usado
function deleteUsedCode($code) {
    global $used_codes_dir;
    $code_file = $used_codes_dir . '/' . $code . '.json';
    
    if (file_exists($code_file)) {
        return unlink($code_file);
    }
    
    return false;
}

// Procesar generación de código
if (isset($_POST['generate_code'])) {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    
    if (empty($username) || empty($password)) {
        $error = "Usuario y contraseña son requeridos";
    } else {
        // Generar código único
        do {
            $code = generateActivationCode();
            $code_file = $activation_codes_dir . '/' . $code . '.json';
        } while (file_exists($code_file));
        
        // Guardar código
        saveActivationCode($code, $username, $password);
        $generated_code = $code;
        $success = "Código generado exitosamente";
    }
}

// Procesar eliminación de código disponible
if (isset($_GET['delete_code'])) {
    $code_to_delete = $_GET['delete_code'];
    $code_file = $activation_codes_dir . '/' . $code_to_delete . '.json';
    
    if (file_exists($code_file)) {
        unlink($code_file);
        $success = "Código eliminado exitosamente";
    } else {
        $error = "Código no encontrado";
    }
}

// Procesar marcado como usado
if (isset($_GET['mark_used'])) {
    $code_to_mark = $_GET['mark_used'];
    $code_file = $activation_codes_dir . '/' . $code_to_mark . '.json';
    
    if (file_exists($code_file)) {
        $code_data = json_decode(file_get_contents($code_file), true);
        moveToUsedCodes($code_data);
        $success = "Código marcado como utilizado";
    } else {
        $error = "Código no encontrado";
    }
}

// Procesar eliminación de código usado
if (isset($_GET['delete_used_code'])) {
    $code_to_delete = $_GET['delete_used_code'];
    
    if (deleteUsedCode($code_to_delete)) {
        $success = "Código usado eliminado exitosamente";
    } else {
        $error = "Código no encontrado";
    }
}

// Procesar eliminación de todos los códigos usados
if (isset($_POST['delete_all_used_codes'])) {
    $used_codes = getUsedCodes();
    $deleted_count = 0;
    
    foreach ($used_codes as $code_data) {
        if (deleteUsedCode($code_data['code'])) {
            $deleted_count++;
        }
    }
    
    if ($deleted_count > 0) {
        $success = "Se eliminaron $deleted_count códigos utilizados";
    } else {
        $info = "No había códigos utilizados para eliminar";
    }
}

// Obtener listas de códigos
$available_codes = getAvailableCodes();
$used_codes = getUsedCodes();

// Combinar todos los códigos para mostrar en una sola tabla
$all_codes = array_merge($available_codes, $used_codes);
// Ordenar por fecha de creación (más recientes primero)
usort($all_codes, function($a, $b) {
    return $b['created_at'] - $a['created_at'];
});

?>

<div class="container-fluid pt-4 px-4">
    <div class="row g-4">
        <div class="col-12">
            <div class="bg-secondary rounded h-100 p-4">
                <h2 class="mb-4">Generador de Códigos de Activación</h2>
                
                <!-- Formulario para generar códigos -->
                <div class="card mb-4">
                    <div class="card-header">
                        <h4>Generar Nuevo Código</h4>
                    </div>
                    <div class="card-body">
                        <?php if (isset($error)): ?>
                            <div class="alert alert-danger"><?php echo $error; ?></div>
                        <?php endif; ?>
                        
                        <?php if (isset($success)): ?>
                            <div class="alert alert-success"><?php echo $success; ?></div>
                        <?php endif; ?>
                        
                        <?php if (isset($info)): ?>
                            <div class="alert alert-info"><?php echo $info; ?></div>
                        <?php endif; ?>
                        
                        <form method="post">
                            <div class="row">
                                <div class="col-md-5">
                                    <div class="mb-3">
                                        <label class="form-label">Usuario</label>
                                        <input type="text" name="username" class="form-control" placeholder="Nombre de usuario" required>
                                    </div>
                                </div>
                                <div class="col-md-5">
                                    <div class="mb-3">
                                        <label class="form-label">Contraseña</label>
                                        <input type="text" name="password" class="form-control" placeholder="Contraseña" required>
                                    </div>
                                </div>
                                <div class="col-md-2">
                                    <div class="mb-3">
                                        <label class="form-label">&nbsp;</label>
                                        <button type="submit" name="generate_code" class="btn btn-primary w-100">
                                            <i class="fa fa-key"></i> Generar
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>

                <!-- Todos los Códigos en una sola tabla -->
                <div class="card mb-4">
                    <div class="card-header d-flex justify-content-between align-items-center">
                        <h4>Todos los Códigos (<?php echo count($all_codes); ?>)</h4>
                        <form method="post" class="d-inline">
                            <button type="submit" name="delete_all_used_codes" class="btn btn-sm btn-danger" 
                                    onclick="return confirm('¿Está seguro de eliminar todos los códigos utilizados? Esta acción no se puede deshacer.')">
                                <i class="fa fa-trash"></i> Eliminar Códigos Usados
                            </button>
                        </form>
                    </div>
                    <div class="card-body">
                        <div class="table-responsive">
                            <table class="table table-striped">
                                <thead>
                                    <tr>
                                        <th>Estado</th>
                                        <th>Código</th>
                                        <th>Usuario</th>
                                        <th>Contraseña</th>
                                        <th>Generado</th>
                                        <th>Utilizado</th>
                                        <th>Acciones</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php if (empty($all_codes)): ?>
                                        <tr>
                                            <td colspan="7" class="text-center">No hay códigos generados</td>
                                        </tr>
                                    <?php else: ?>
                                        <?php foreach ($all_codes as $code_data): ?>
                                            <tr>
                                                <td>
                                                    <?php if (isset($code_data['used']) && $code_data['used']): ?>
                                                        <span class="badge bg-success">Utilizado</span>
                                                    <?php else: ?>
                                                        <span class="badge bg-primary">Disponible</span>
                                                    <?php endif; ?>
                                                </td>
                                                <td><strong><?php echo $code_data['code']; ?></strong></td>
                                                <td><?php echo $code_data['username']; ?></td>
                                                <td><?php echo $code_data['password']; ?></td>
                                                <td><?php echo date('Y-m-d H:i', $code_data['created_at']); ?></td>
                                                <td>
                                                    <?php if (isset($code_data['used_at'])): ?>
                                                        <?php echo date('Y-m-d H:i', $code_data['used_at']); ?>
                                                    <?php else: ?>
                                                        N/A
                                                    <?php endif; ?>
                                                </td>
                                                <td>
                                                    <?php if (!isset($code_data['used']) || !$code_data['used']): ?>
                                                        <a href="?mark_used=<?php echo $code_data['code']; ?>" 
                                                           class="btn btn-sm btn-warning" 
                                                           onclick="return confirm('¿Marcar este código como utilizado?')"
                                                           title="Marcar como usado">
                                                            <i class="fa fa-check"></i>
                                                        </a>
                                                        
                                                        <a href="?delete_code=<?php echo $code_data['code']; ?>" 
                                                           class="btn btn-sm btn-danger" 
                                                           onclick="return confirm('¿Eliminar este código?')"
                                                           title="Eliminar código">
                                                            <i class="fa fa-trash"></i>
                                                        </a>
                                                        
                                                        <button class="btn btn-sm btn-info show-code-modal" 
                                                                data-code="<?php echo $code_data['code']; ?>"
                                                                title="Mostrar código">
                                                            <i class="fa fa-eye"></i>
                                                        </button>
                                                    <?php else: ?>
                                                        <a href="?delete_used_code=<?php echo $code_data['code']; ?>" 
                                                           class="btn btn-sm btn-danger" 
                                                           onclick="return confirm('¿Eliminar este código usado?')"
                                                           title="Eliminar código usado">
                                                            <i class="fa fa-trash"></i>
                                                        </a>
                                                    <?php endif; ?>
                                                </td>
                                            </tr>
                                        <?php endforeach; ?>
                                    <?php endif; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- Modal para mostrar código -->
<div class="modal fade" id="codeModal" tabindex="-1" aria-labelledby="codeModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content bg-dark">
            <div class="modal-header">
                <h5 class="modal-title" id="codeModalLabel">Código de Activación</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body text-center">
                <p>Escanea el QR en la app y usa el siguiente código de activación para tu dispositivo. No cierres la pantalla de tu TV. La activación se realizará de manera automática en unos segundos.</p>
                
                <div class="activation-code-display mb-3">
                    <h2 id="modalCode" class="display-4 fw-bold text-primary"></h2>
                </div>
                
                <div class="d-flex justify-content-center gap-2">
                    <button class="btn btn-primary" onclick="copyModalCode()">
                        <i class="fa fa-copy me-2"></i> Copiar Código
                    </button>
                    <a id="whatsappShare" href="#" class="btn btn-success" target="_blank">
                        <i class="fa fa-whatsapp me-2"></i> Compartir por WhatsApp
                    </a>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
            </div>
        </div>
    </div>
</div>

<script>
// Función para mostrar el modal con el código
document.querySelectorAll('.show-code-modal').forEach(button => {
    button.addEventListener('click', function() {
        const code = this.getAttribute('data-code');
        document.getElementById('modalCode').textContent = code;
        
        // Preparar enlace de WhatsApp
        const message = "Escanea el QR en la app y usa el siguiente código de activación para tu dispositivo: " + code + ". No cierres la pantalla de tu TV. La activación se realizará de manera automática en unos segundos.";
        const encodedMessage = encodeURIComponent(message);
        document.getElementById('whatsappShare').setAttribute('href', 'https://wa.me/?text=' + encodedMessage);
        
        // Mostrar modal
        const modal = new bootstrap.Modal(document.getElementById('codeModal'));
        modal.show();
    });
});

// Función para copiar el código del modal al portapapeles
function copyModalCode() {
    const code = document.getElementById('modalCode').textContent;
    copyToClipboard(code);
}

// Función genérica para copiar al portapapeles
function copyToClipboard(text) {
    navigator.clipboard.writeText(text).then(function() {
        alert('Código copiado: ' + text);
    }, function(err) {
        alert('Error al copiar: ', err);
    });
}

<?php if (isset($generated_code)): ?>
// Mostrar modal automáticamente después de generar un código
document.addEventListener('DOMContentLoaded', function() {
    const code = '<?php echo $generated_code; ?>';
    document.getElementById('modalCode').textContent = code;
    
    // Preparar enlace de WhatsApp
    const message = "Escanea el QR en la app y usa el siguiente código de activación para tu dispositivo: " + code + ". No cierres la pantalla de tu TV. La activación se realizará de manera automática en unos segundos.";
    const encodedMessage = encodeURIComponent(message);
    document.getElementById('whatsappShare').setAttribute('href', 'https://wa.me/?text=' + encodedMessage);
    
    // Mostrar modal
    const modal = new bootstrap.Modal(document.getElementById('codeModal'));
    modal.show();
});
<?php endif; ?>
</script>

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