<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once '../config.php';

// بررسی لاگین
if (!isLoggedIn()) {
    redirect('/login.php');
}

// بررسی دسترسی ادمین
if (!isAdmin()) {
    setMessage('دسترسی غیرمجاز', 'error');
    redirect('/login.php');
}

$page_title = 'افزودن نماینده جدید';

// افزودن نماینده جدید
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'] ?? '';
    $password = $_POST['password'] ?? '';
    $full_name = $_POST['full_name'] ?? '';
    $email = $_POST['email'] ?? '';
    $phone = $_POST['phone'] ?? '';
    
    // مقادیر مربوط به قوانین ساخت کانفیگ
    $default_traffic_limit = (int)($_POST['default_traffic_limit'] ?? 0);
    $default_expiry_days = (int)($_POST['default_expiry_days'] ?? 0);
    $default_ip_limit = (int)($_POST['default_ip_limit'] ?? 0);
    $can_create_test_config = isset($_POST['can_create_test_config']) ? 1 : 0;
    $test_config_traffic_limit = (int)($_POST['test_config_traffic_limit'] ?? 1);
    $test_config_expiry_hours = (int)($_POST['test_config_expiry_hours'] ?? 3);
    $can_import_from_panel = isset($_POST['can_import_from_panel']) ? 1 : 0;

    // مقادیر مربوط به قیمت‌گذاری
    $price_per_gb = (float)($_POST['price_per_gb'] ?? 0);
    $price_per_day = (float)($_POST['price_per_day'] ?? 0);
    $discount_percent = max(0, min(100, (int)($_POST['discount_percent'] ?? 0)));

    if (empty($username) || empty($password)) {
        setMessage('لطفاً نام کاربری و رمز عبور را پر کنید', 'error');
    } elseif (empty($_POST['inbound_ids'])) {
        setMessage('حداقل یک اینباند باید برای نماینده انتخاب شود.', 'error');
    } else {
        // بررسی وجود نام کاربری
        $stmt = $pdo->prepare("SELECT COUNT(*) FROM representatives WHERE username = ?");
        $stmt->execute([$username]);
        if ($stmt->fetchColumn() > 0) {
            setMessage('نام کاربری تکراری است. لطفاً نام کاربری دیگری انتخاب کنید.', 'error');
        } else {
            try {
                $hashedPassword = hashPassword($password);
                
                $sql = "INSERT INTO representatives 
                            (username, password, full_name, email, phone, 
                             price_per_gb, price_per_day, discount_percent,
                             default_traffic_limit, default_expiry_days, default_ip_limit,
                             can_create_test_config, test_config_traffic_limit, test_config_expiry_hours,
                             can_import_from_panel, status) 
                        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                
                $params = [
                    $username, $hashedPassword, $full_name, $email, $phone,
                    $price_per_gb, $price_per_day, $discount_percent,
                    $default_traffic_limit, $default_expiry_days, $default_ip_limit,
                    $can_create_test_config, $test_config_traffic_limit, $test_config_expiry_hours,
                    $can_import_from_panel,
                    'active' // Set status to active by default
                ];

                $stmt = $pdo->prepare($sql);
                $stmt->execute($params);
                $rep_id = $pdo->lastInsertId();
                
                // افزودن inbound های مجاز
                if (isset($_POST['inbound_ids']) && is_array($_POST['inbound_ids'])) {
                    foreach ($_POST['inbound_ids'] as $pair) {
                        list($panel_id, $inbound_id) = explode('_', $pair);
                        $panel_id = (int)$panel_id;
                        $inbound_id = (int)$inbound_id;
                        if ($panel_id > 0 && $inbound_id > 0) {
                            $stmt = $pdo->prepare("INSERT INTO representative_inbounds (representative_id, panel_id, inbound_id) VALUES (?, ?, ?)");
                            $stmt->execute([$rep_id, $panel_id, $inbound_id]);
                        }
                    }
                }
                
                setMessage('نماینده با موفقیت افزوده شد', 'success');
                redirect('representatives.php');
            } catch (Exception $e) {
                setMessage('خطا در افزودن نماینده: ' . $e->getMessage(), 'error');
            }
        }
    }
}

// دریافت لیست پنل‌ها برای dropdown
$panels = $pdo->query("SELECT id, name FROM panels WHERE status = 'active' ORDER BY name")->fetchAll();

// تابع دریافت inbound های یک پنل
function getPanelInbounds($pdo, $panel_id) {
    try {
        $stmt = $pdo->prepare("SELECT * FROM panels WHERE id = ?");
        $stmt->execute([$panel_id]);
        $panel = $stmt->fetch();
        
        if (!$panel) return [];
        
        require_once __DIR__ . '/../api/XrayAPI.php';
        $xrayAPI = new XrayAPI($panel['url'], $panel['username'], $panel['password']);
        $inbounds_result = $xrayAPI->getInbounds();
        return $inbounds_result['obj'] ?? [];
    } catch (Exception $e) {
        error_log("Error in getPanelInbounds: " . $e->getMessage());
        return [];
    }
}

require_once '../includes/header.php';
?>

<div class="card admin-main-card">
    <div class="card-header">
        <h5 class="mb-0"><?= $page_title ?></h5>
    </div>
    <div class="card-body">
        <form method="POST" action="representative_add_new.php">
            <div class="row">
                <!-- بخش اطلاعات اصلی -->
                <div class="col-md-6">
                    <h6>اطلاعات اصلی</h6>
                    <hr>
                    <div class="mb-3">
                        <label class="form-label">نام کاربری <span class="text-danger">*</span></label>
                        <input type="text" name="username" class="form-control" required value="<?= htmlspecialchars($_POST['username'] ?? '') ?>">
                    </div>
                    <div class="mb-3">
                        <label class="form-label">رمز عبور <span class="text-danger">*</span></label>
                        <input type="password" name="password" class="form-control" required>
                    </div>
                    <div class="mb-3">
                        <label class="form-label">نام کامل</label>
                        <input type="text" name="full_name" class="form-control" value="<?= htmlspecialchars($_POST['full_name'] ?? '') ?>">
                    </div>
                    <div class="mb-3">
                        <label class="form-label">ایمیل</label>
                        <input type="email" name="email" class="form-control" value="<?= htmlspecialchars($_POST['email'] ?? '') ?>">
                    </div>
                    <div class="mb-3">
                        <label class="form-label">تلفن</label>
                        <input type="text" name="phone" class="form-control" value="<?= htmlspecialchars($_POST['phone'] ?? '') ?>">
                    </div>
                </div>

                <!-- بخش دسترسی‌ها و اینباندها -->
                <div class="col-md-6">
                    <h6>دسترسی اینباندها <span class="text-danger">*</span></h6>
                    <hr>
                    <div class="mb-3">
                        <label class="form-label">پنل‌ها</label>
                        <div id="inbounds_container" class="border p-3 rounded" style="max-height: 400px; overflow-y: auto;">
                            <?php foreach ($panels as $panel): ?>
                                <div class="mb-3">
                                    <strong><?= htmlspecialchars($panel['name']) ?></strong>
                                    <div class="ps-3">
                                        <?php 
                                        $inbounds = getPanelInbounds($pdo, $panel['id']);
                                        if (empty($inbounds)): ?>
                                            <small class="text-muted">اینباندی یافت نشد یا ارتباط با پنل برقرار نیست.</small>
                                        <?php else: ?>
                                            <?php foreach ($inbounds as $inbound): ?>
                                                <div class="form-check">
                                                    <input class="form-check-input" type="checkbox" name="inbound_ids[]" value="<?= $panel['id'] ?>_<?= $inbound['id'] ?>" id="inbound_<?= $panel['id'] ?>_<?= $inbound['id'] ?>">
                                                    <label class="form-check-label" for="inbound_<?= $panel['id'] ?>_<?= $inbound['id'] ?>">
                                                        <?= htmlspecialchars($inbound['remark'] ?: 'Inbound ' . $inbound['id']) ?>
                                                    </label>
                                                </div>
                                            <?php endforeach; ?>
                                        <?php endif; ?>
                                    </div>
                                </div>
                            <?php endforeach; ?>
                        </div>
                    </div>
                </div>
            </div>

            <div class="row mt-4">
                <!-- بخش قوانین ساخت کانفیگ -->
                <div class="col-md-6">
                    <h6>قوانین ساخت کانفیگ</h6>
                    <hr>
                    <div class="row">
                        <div class="col-sm-4 mb-3">
                            <label class="form-label">ترافیک پیش‌فرض (GB)</label>
                            <input type="number" name="default_traffic_limit" class="form-control" min="0" value="5">
                        </div>
                        <div class="col-sm-4 mb-3">
                            <label class="form-label">انقضا پیش‌فرض (روز)</label>
                            <input type="number" name="default_expiry_days" class="form-control" min="0" value="30">
                        </div>
                        <div class="col-sm-4 mb-3">
                            <label class="form-label">محدودیت IP پیش‌فرض</label>
                            <input type="number" name="default_ip_limit" class="form-control" min="0" value="0">
                        </div>
                    </div>
                    <div class="form-check form-switch mb-3">
                        <input class="form-check-input" type="checkbox" role="switch" id="can_create_test_config" name="can_create_test_config" checked>
                        <label class="form-check-label" for="can_create_test_config">قابلیت ساخت کانفیگ تست</label>
                    </div>
                    <div class="row">
                        <div class="col-sm-6 mb-3">
                            <label class="form-label">ترافیک کانفیگ تست (GB)</label>
                            <input type="number" name="test_config_traffic_limit" class="form-control" min="1" value="1">
                        </div>
                        <div class="col-sm-6 mb-3">
                            <label class="form-label">انقضا کانفیگ تست (ساعت)</label>
                            <input type="number" name="test_config_expiry_hours" class="form-control" min="1" value="3">
                        </div>
                    </div>
                     <div class="form-check form-switch mb-3">
                        <input class="form-check-input" type="checkbox" role="switch" id="can_import_from_panel" name="can_import_from_panel">
                        <label class="form-check-label" for="can_import_from_panel">فعال‌سازی قابلیت وارد کردن کاربر از پنل</label>
                    </div>
                </div>

                <!-- بخش قوانین کیف پول -->
                <div class="col-md-6">
                    <h6>قوانین کیف پول</h6>
                    <hr>
                    <div class="row">
                        <div class="col-sm-4 mb-3">
                            <label class="form-label">قیمت هر گیگ (تومان)</label>
                            <input type="number" name="price_per_gb" class="form-control" min="0" step="1" value="0">
                        </div>
                        <div class="col-sm-4 mb-3">
                            <label class="form-label">قیمت هر روز (تومان)</label>
                            <input type="number" name="price_per_day" class="form-control" min="0" step="1" value="0">
                        </div>
                        <div class="col-sm-4 mb-3">
                            <label class="form-label">درصد تخفیف</label>
                            <input type="number" name="discount_percent" class="form-control" min="0" max="100" value="0">
                        </div>
                    </div>
                </div>
            </div>

            <div class="mt-4">
                <a href="representatives.php" class="btn btn-secondary">انصراف</a>
                <button type="submit" class="btn btn-primary">افزودن نماینده</button>
            </div>
        </form>
    </div>
</div>

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