<?php
require_once dirname(__DIR__) . '/config.php';
require_once dirname(__DIR__) . '/api/XrayAPI.php';

// Ensure user is admin
if (!isAdmin()) {
    redirect('logout.php');
}

$panels = $pdo->query("SELECT * FROM panels WHERE status = 'active' ORDER BY name ASC")->fetchAll();
$all_inbounds = [];
foreach ($panels as $panel) {
    try {
        $xray_api = new XrayAPI($panel['url'], $panel['username'], $panel['password']);
        $inbounds = $xray_api->getInbounds();
        if ($inbounds && $inbounds['success']) {
            foreach ($inbounds['obj'] as $inbound) {
                if ($inbound['enable']) {
                    $all_inbounds[] = [
                        'panel_id' => $panel['id'],
                        'panel_name' => $panel['name'],
                        'inbound_id' => $inbound['id'],
                        'remark' => $inbound['remark']
                    ];
                }
            }
        }
    } catch (Exception $e) {
        // Log error or handle panel connection issue
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_inbounds_to_all'])) {
    if (!empty($_POST['inbound_ids'])) {
        $selected_inbounds = $_POST['inbound_ids'];
        $representatives = $pdo->query("SELECT id FROM representatives")->fetchAll(PDO::FETCH_ASSOC);
        
        $added_count = 0;
        $reps_count = count($representatives);

        $pdo->beginTransaction();
        try {
            foreach ($representatives as $rep) {
                foreach ($selected_inbounds as $inbound_pair) {
                    list($panel_id, $inbound_id) = explode('_', $inbound_pair);

                    // Check if the representative already has this inbound
                    $stmt = $pdo->prepare("SELECT 1 FROM representative_inbounds WHERE representative_id = ? AND panel_id = ? AND inbound_id = ?");
                    $stmt->execute([$rep['id'], $panel_id, $inbound_id]);
                    if ($stmt->fetchColumn() === false) {
                        $insert_stmt = $pdo->prepare("INSERT INTO representative_inbounds (representative_id, panel_id, inbound_id) VALUES (?, ?, ?)");
                        $insert_stmt->execute([$rep['id'], $panel_id, $inbound_id]);
                        $added_count++;
                    }
                }
            }
            $pdo->commit();
            setMessage("عملیات با موفقیت انجام شد. اینباند(های) جدید به {$reps_count} نماینده اضافه شد.", 'success');
        } catch (Exception $e) {
            $pdo->rollBack();
            setMessage('خطا در اجرای عملیات: ' . $e->getMessage(), 'error');
        }
    } else {
        setMessage('هیچ اینباندی برای افزودن انتخاب نشده است.', 'warning');
    }
    redirect('inbounds_bulk_add.php');
}

$page_title = 'افزودن دسته‌جمعی اینباند';
require_once dirname(__DIR__) . '/includes/header.php';
?>

<div class="card admin-main-card">
    <div class="card-header">
        <h3 class="card-title mb-0"><?= htmlspecialchars($page_title) ?></h3>
    </div>
    <div class="card-body">
                    <p>در این صفحه می‌توانید یک یا چند اینباند را انتخاب کرده و آن را به لیست دسترسی تمام نمایندگان فعال اضافه کنید. اینباند تکراری به نماینده اضافه نخواهد شد.</p>
                    <form method="POST" action="inbounds_bulk_add.php">
                        <div class="form-group mb-4">
                            <label for="inbound_ids" class="form-label">اینباندهای موجود:</label>
                            <div class="inbound-list" style="max-height: 400px; overflow-y: auto; border: 1px solid #ccc; padding: 10px; border-radius: 5px;">
                                <?php if (empty($all_inbounds)): ?>
                                    <p class="text-muted">هیچ اینباند فعالی در پنل‌ها یافت نشد.</p>
                                <?php else: ?>
                                    <?php foreach ($panels as $panel): ?>
                                        <div class="mb-2">
                                            <strong>پنل: <?= htmlspecialchars($panel['name']) ?></strong>
                                            <div class="ps-3">
                                            <?php 
                                            $panel_has_inbound = false;
                                            foreach ($all_inbounds as $inbound): 
                                                if ($inbound['panel_id'] == $panel['id']):
                                                    $panel_has_inbound = true;
                                            ?>
                                                <div class="form-check">
                                                    <input class="form-check-input" type="checkbox" name="inbound_ids[]" value="<?= $inbound['panel_id'] . '_' . $inbound['inbound_id'] ?>" id="inbound_<?= $inbound['panel_id'] . '_' . $inbound['inbound_id'] ?>">
                                                    <label class="form-check-label" for="inbound_<?= $inbound['panel_id'] . '_' . $inbound['inbound_id'] ?>">
                                                        <?= htmlspecialchars($inbound['remark']) ?> (ID: <?= $inbound['inbound_id'] ?>)
                                                    </label>
                                                </div>
                                            <?php 
                                                endif;
                                            endforeach; 
                                            if (!$panel_has_inbound) {
                                                echo '<p class="text-muted small">اینباند فعالی برای این پنل یافت نشد.</p>';
                                            }
                                            ?>
                                            </div>
                                        </div>
                                    <?php endforeach; ?>
                                <?php endif; ?>
                            </div>
                        </div>
                        <button type="submit" name="add_inbounds_to_all" class="btn btn-primary" onclick="return confirm('آیا از افزودن اینباند(های) انتخاب شده به تمام نمایندگان اطمینان دارید؟')">
                            <i class="bi bi-plus-circle"></i> افزودن به همه نمایندگان
                        </button>
                    </form>
    </div>
</div>

<?php require_once dirname(__DIR__) . '/includes/footer.php'; ?>
