<?php
// شروع session قبل از هر چیز
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once '../config.php';
require_once __DIR__ . '/../includes/functions_wallet.php';

// بررسی وضعیت ورود و نقش کاربری
if (!isLoggedIn() || !isRepresentative()) {
    setMessage('برای دسترسی به این صفحه، لطفاً به عنوان نماینده وارد شوید.', 'danger');
    redirect('/representative_login.php');
}

$page_title = 'پروفایل من';
$representative_id = $_SESSION['user_id'];

// واکشی اطلاعات کامل نماینده
try {
    $stmt = $pdo->prepare("SELECT * FROM representatives WHERE id = ?");
    $stmt->execute([$representative_id]);
    $rep_info = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$rep_info) {
        // اگر نماینده یافت نشد، از سیستم خارج شود
        logout();
    }
} catch (PDOException $e) {
    // در صورت بروز خطا در دیتابیس
    setMessage('خطا در واکشی اطلاعات حساب شما.', 'error');
    $rep_info = []; // اطمینان از اینکه متغیر خالی است
}

// به‌روزرسانی اطلاعات پروفایل نماینده (نام کاربری، ایمیل، موبایل، رمز)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_profile'])) {
    $new_username = trim($_POST['username'] ?? '');
    $new_email    = trim($_POST['email'] ?? '');
    $new_phone    = trim($_POST['phone'] ?? '');
    $new_password = $_POST['password'] ?? '';

    if ($new_username === '' || $new_email === '') {
        setMessage('نام کاربری و ایمیل نمی‌توانند خالی باشند.', 'error');
        redirect('profile.php');
    }
    if ($new_password !== '' && strlen($new_password) < 6) {
        setMessage('رمز عبور جدید باید حداقل ۶ کاراکتر باشد.', 'error');
        redirect('profile.php');
    }

    try {
        // بررسی تکراری نبودن نام کاربری / ایمیل بین نمایندگان دیگر
        $check = $pdo->prepare("SELECT id FROM representatives WHERE (username = ? OR email = ?) AND id != ?");
        $check->execute([$new_username, $new_email, $representative_id]);
        if ($check->fetch()) {
            setMessage('نام کاربری یا ایمیل توسط نماینده دیگری استفاده شده است.', 'error');
            redirect('profile.php');
        }

        $sql = "UPDATE representatives SET username = ?, email = ?, phone = ?";
        $params = [$new_username, $new_email, $new_phone];

        if ($new_password !== '') {
            $sql .= ", password = ?";
            $params[] = hashPassword($new_password);
        }

        $sql .= " WHERE id = ?";
        $params[] = $representative_id;

        $update = $pdo->prepare($sql);
        $update->execute($params);

        // به‌روزرسانی نام کاربری در سشن
        $_SESSION['username'] = $new_username;

        setMessage('پروفایل شما با موفقیت ویرایش شد.', 'success');
        redirect('profile.php');
    } catch (Exception $e) {
        setMessage('خطا در ویرایش پروفایل: ' . $e->getMessage(), 'error');
        redirect('profile.php');
    }
}

// محاسبه وضعیت حساب
$account_status = '<span class="badge bg-success">فعال</span>';
$status_description = 'حساب شما فعال است و می‌توانید از همه امکانات استفاده کنید.';

if (!empty($rep_info['expiry_date']) && strtotime($rep_info['expiry_date']) < time()) {
    $account_status = '<span class="badge bg-danger">منقضی شده</span>';
    $status_description = 'تاریخ اعتبار حساب شما به پایان رسیده است. برای ادامه فعالیت با مدیر تماس بگیرید.';
} elseif (!empty($rep_info['traffic_limit']) && $rep_info['traffic_limit'] > 0 && $rep_info['used_traffic'] >= $rep_info['traffic_limit']) {
    $account_status = '<span class="badge bg-warning text-dark">حجم تمام شده</span>';
    $status_description = 'کل حجم اختصاص یافته به شما مصرف شده است. برای ادامه فعالیت با مدیر تماس بگیرید.';
}

// محاسبه درصد مصرف حجم
$traffic_percentage = 0;
if (!empty($rep_info['traffic_limit']) && $rep_info['traffic_limit'] > 0) {
    $traffic_percentage = min(100, ($rep_info['used_traffic'] / $rep_info['traffic_limit']) * 100);
}

// دریافت قوانین قیمت‌گذاری
$price_per_gb = isset($rep_info['price_per_gb']) && $rep_info['price_per_gb'] !== null ? (float)$rep_info['price_per_gb'] : walletPricePerGB($pdo);
$price_per_day = isset($rep_info['price_per_day']) && $rep_info['price_per_day'] !== null ? (float)$rep_info['price_per_day'] : walletPricePerDay($pdo);
$discount = isset($rep_info['discount_percent']) && $rep_info['discount_percent'] !== null ? (int)$rep_info['discount_percent'] : defaultDiscountPercent($pdo);

// شامل کردن هدر
include '../includes/header.php';
?>

<div class="container-fluid profile-page">
    <div class="row g-4">
        <!-- ستون چپ: تصویر پروفایل و اطلاعات مالی -->
        <div class="col-lg-4">
            <div class="card profile-avatar-card mb-4">
                <div class="card-body text-center">
                    <div class="mb-3">
                        <div class="profile-avatar">
                            <?php
                            $initials = mb_substr($rep_info['username'] ?? 'U', 0, 2, 'UTF-8');
                            ?>
                            <span class="profile-avatar-initials"><?= htmlspecialchars($initials) ?></span>
                        </div>
                    </div>
                    <h5 class="mb-1"><?= htmlspecialchars($rep_info['username'] ?? 'کاربر') ?></h5>
                    <p class="text-muted mb-3"><?= htmlspecialchars($rep_info['email'] ?? '-') ?></p>
                    <div class="mb-3 small text-muted">
                        در نسخه فعلی امکان آپلود تصویر فعال نیست؛ فقط نام و اطلاعات شما نمایش داده می‌شود.
                    </div>
                    <hr>
                    <div class="d-flex justify-content-between align-items-center mb-2">
                        <span class="profile-label">وضعیت حساب</span>
                        <?= $account_status ?>
                    </div>
                    <div class="d-flex justify-content-between align-items-center mb-2">
                        <span class="profile-label">انقضای حساب</span>
                        <span class="fw-semibold"><?= !empty($rep_info['expiry_date']) ? jdate('Y/m/d', strtotime($rep_info['expiry_date'])) : 'نامحدود' ?></span>
                    </div>
                    <div class="mb-3 small text-muted">
                        <?= $status_description ?>
                    </div>
                    <div class="border-top pt-3 mt-2">
                        <div class="profile-label mb-1">موجودی کیف پول</div>
                        <div class="h4 mb-0"><?= number_format($rep_info['wallet_balance'] ?? 0) ?> <small class="text-muted">تومان</small></div>
                    </div>
                </div>
            </div>
        </div>

        <!-- ستون راست: فرم ویرایش پروفایل و وضعیت حجم -->
        <div class="col-lg-8">
            <div class="card shadow-sm mb-4">
                <div class="card-header d-flex justify-content-between align-items-center">
                    <h5 class="mb-0">اطلاعات حساب</h5>
                    <span class="profile-label">ویرایش اطلاعات ورود و تماس</span>
                </div>
                <div class="card-body">
                    <form method="POST" action="profile.php">
                        <input type="hidden" name="update_profile" value="1">
                        <div class="row g-3">
                            <div class="col-md-6">
                                <label class="form-label">نام کاربری</label>
                                <input type="text" name="username" class="form-control"
                                       value="<?= htmlspecialchars($rep_info['username'] ?? '') ?>" required>
                            </div>
                            <div class="col-md-6">
                                <label class="form-label">ایمیل</label>
                                <input type="email" name="email" class="form-control"
                                       value="<?= htmlspecialchars($rep_info['email'] ?? '') ?>" required>
                            </div>
                            <div class="col-md-6">
                                <label class="form-label">شماره موبایل</label>
                                <input type="text" name="phone" class="form-control"
                                       value="<?= htmlspecialchars($rep_info['phone'] ?? '') ?>"
                                       placeholder="مثلاً 0912xxxxxxx">
                            </div>
                            <div class="col-md-6">
                                <label class="form-label">رمز عبور جدید</label>
                                <input type="password" name="password" class="form-control" minlength="6" autocomplete="new-password" placeholder="برای عدم تغییر خالی بگذارید">
                            </div>
                        </div>
                        <div class="d-flex justify-content-end mt-4">
                            <button type="submit" class="btn btn-success">
                                ذخیره تغییرات پروفایل
                            </button>
                        </div>
                    </form>
                </div>
            </div>

    <div class="row">
        <!-- Card: مصرف حجم -->
        <div class="col-12">
            <div class="card shadow-sm mb-4">
                <div class="card-header">
                    <h5 class="mb-0">مصرف حجم کل</h5>
                </div>
                <div class="card-body">
                    <?php if (!empty($rep_info['traffic_limit']) && $rep_info['traffic_limit'] > 0): ?>
                        <div class="d-flex justify-content-between mb-1">
                            <span><?= formatBytes($rep_info['used_traffic'] ?? 0) ?></span>
                            <span><?= formatBytes($rep_info['traffic_limit']) ?></span>
                        </div>
                        <div class="progress" style="height: 20px;">
                            <div class="progress-bar" role="progressbar" style="width: <?= $traffic_percentage ?>%;" aria-valuenow="<?= $traffic_percentage ?>" aria-valuemin="0" aria-valuemax="100">
                                <?= round($traffic_percentage, 2) ?>%
                            </div>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info mb-0">
                            محدودیت حجمی برای حساب شما تعریف نشده است. مصرف فعلی: <strong><?= formatBytes($rep_info['used_traffic'] ?? 0) ?></strong>
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>

    <div class="row">
        <!-- Card: قوانین قیمت‌گذاری -->
        <div class="col-12">
            <div class="card shadow-sm">
                <div class="card-header">
                    <h5 class="mb-0">قوانین قیمت‌گذاری شما</h5>
                </div>
                <div class="card-body">
                    <p class="card-text text-muted mb-3">
                        این قیمت‌ها برای ساخت کانفیگ جدید از کیف پول شما کسر خواهد شد.
                    </p>
                    <div class="row text-center">
                        <div class="col-md-4">
                            <div class="stat-card border rounded p-3">
                                <h6 class="text-muted">قیمت هر گیگابایت</h6>
                                <p class="fs-4 fw-bold mb-0"><?= number_format($price_per_gb) ?> <small>تومان</small></p>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="stat-card border rounded p-3">
                                <h6 class="text-muted">قیمت هر روز اعتبار</h6>
                                <p class="fs-4 fw-bold mb-0"><?= number_format($price_per_day) ?> <small>تومان</small></p>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="stat-card border rounded p-3">
                                <h6 class="text-muted">درصد تخفیف</h6>
                                <p class="fs-4 fw-bold mb-0"><?= $discount ?> <small>%</small></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

</div>

<?php
// شامل کردن فوتر
include '../includes/footer.php';
?>
