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

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

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

$page_title = 'مدیریت مالی';

// Fetch all representatives for dropdowns
$representatives = [];
try {
    $representatives = $pdo->query("SELECT id, username, wallet_balance FROM representatives ORDER BY username")->fetchAll();
} catch (Exception $e) {
    setMessage('خطا در دریافت لیست نمایندگان.', 'danger');
}

// Handle Forms
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // --- Create Invoice --- 
    if (isset($_POST['create_invoice'])) {
        $rep_id = (int)$_POST['representative_id'];
        $amount = (float)$_POST['amount'];
        $description = trim($_POST['description']);

        if ($rep_id > 0 && $amount > 0 && !empty($description)) {
            $invoice_items = [['description' => $description, 'quantity' => 1, 'unit_price' => $amount]];
            $invoice_id = createInvoice($pdo, $rep_id, $invoice_items, date('Y-m-d', strtotime('+1 week')));
            if ($invoice_id) {
                setMessage("صورتحساب #{$invoice_id} با موفقیت برای نماینده ایجاد شد.", 'success');
            } else {
                setMessage('خطا در ایجاد صورتحساب.', 'danger');
            }
        } else {
            setMessage('لطفاً تمام فیلدهای فرم ایجاد صورتحساب را پر کنید.', 'warning');
        }
        redirect('financial.php');
    }

    // --- Manual Wallet Transaction ---
    if (isset($_POST['manual_transaction'])) {
        $rep_id = (int)$_POST['representative_id'];
        $amount = (float)$_POST['amount'];
        $type = in_array($_POST['type'], ['deposit', 'withdrawal']) ? $_POST['type'] : 'deposit';
        $description = trim($_POST['description']);

        if ($rep_id > 0 && $amount > 0 && !empty($description)) {
            $tx_amount = ($type === 'deposit') ? $amount : -$amount;
            $success = updateWalletBalance($pdo, $rep_id, $tx_amount, $type, $description . ' (توسط مدیر)');
            if ($success) {
                setMessage("تراکنش دستی با موفقیت ثبت شد.", 'success');
            } else {
                setMessage('خطا در ثبت تراکنش دستی (مثلاً موجودی ناکافی برای برداشت).', 'danger');
            }
        } else {
            setMessage('لطفاً تمام فیلدهای فرم تراکنش دستی را پر کنید.', 'warning');
        }
        redirect('financial.php');
    }
}

// Fetch latest transactions
$latest_transactions = [];
try {
    $stmt = $pdo->query("SELECT t.*, r.username FROM transactions t JOIN representatives r ON t.representative_id = r.id ORDER BY t.created_at DESC LIMIT 20");
    $latest_transactions = $stmt->fetchAll();
} catch (Exception $e) {
    setMessage('خطا در دریافت تاریخچه تراکنش‌ها.', 'danger');
}

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

<div class="card admin-main-card mb-4">
    <div class="card-header">
        <h3 class="card-title mb-0"><?= htmlspecialchars($page_title) ?></h3>
    </div>
    <div class="card-body pb-0">
        <p class="text-muted small mb-0">ایجاد صورتحساب، تراکنش دستی کیف پول و مشاهده آخرین تراکنش‌ها.</p>
    </div>
</div>

<div class="row g-4">
    <!-- Left Side: Forms -->
    <div class="col-lg-4">
        <!-- Create Invoice Card -->
        <div class="card mb-4">
            <div class="card-header">
                <h5 class="mb-0">ایجاد صورتحساب جدید</h5>
            </div>
            <div class="card-body">
                <form method="POST" action="financial.php">
                    <div class="mb-3">
                        <label for="inv_rep_id" class="form-label">نماینده</label>
                        <select class="form-select" id="inv_rep_id" name="representative_id" required>
                            <option value="">یک نماینده انتخاب کنید</option>
                            <?php foreach ($representatives as $rep): ?>
                                <option value="<?= $rep['id'] ?>"><?= htmlspecialchars($rep['username']) ?> (موجودی: <?= number_format($rep['wallet_balance']) ?>)</option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="mb-3">
                        <label for="inv_amount" class="form-label">مبلغ (تومان)</label>
                        <input type="number" class="form-control" id="inv_amount" name="amount" required>
                    </div>
                    <div class="mb-3">
                        <label for="inv_desc" class="form-label">شرح</label>
                        <input type="text" class="form-control" id="inv_desc" name="description" placeholder="مثال: هزینه تمدید ماهانه" required>
                    </div>
                    <button type="submit" name="create_invoice" class="btn btn-primary w-100">ایجاد</button>
                </form>
            </div>
        </div>

        <!-- Manual Transaction Card -->
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0">تراکنش دستی کیف پول</h5>
            </div>
            <div class="card-body">
                <form method="POST" action="financial.php">
                    <div class="mb-3">
                        <label for="tx_rep_id" class="form-label">نماینده</label>
                        <select class="form-select" id="tx_rep_id" name="representative_id" required>
                            <option value="">یک نماینده انتخاب کنید</option>
                            <?php foreach ($representatives as $rep): ?>
                                <option value="<?= $rep['id'] ?>"><?= htmlspecialchars($rep['username']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="mb-3">
                        <label for="tx_amount" class="form-label">مبلغ (تومان)</label>
                        <input type="number" class="form-control" id="tx_amount" name="amount" required>
                    </div>
                    <div class="mb-3">
                        <label for="tx_type" class="form-label">نوع تراکنش</label>
                        <select class="form-select" id="tx_type" name="type">
                            <option value="deposit">واریز (افزایش موجودی)</option>
                            <option value="withdrawal">برداشت (کاهش موجودی)</option>
                        </select>
                    </div>
                    <div class="mb-3">
                        <label for="tx_desc" class="form-label">توضیحات</label>
                        <input type="text" class="form-control" id="tx_desc" name="description" required>
                    </div>
                    <button type="submit" name="manual_transaction" class="btn btn-warning w-100">ثبت تراکنش</button>
                </form>
            </div>
        </div>
    </div>

    <!-- Right Side: Transactions History -->
    <div class="col-lg-8">
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0">آخرین تراکنش‌های سیستم</h5>
            </div>
            <div class="card-body">
                <div class="table-responsive">
                    <table class="table table-hover align-middle">
                        <thead>
                            <tr>
                                <th>نماینده</th>
                                <th>مبلغ</th>
                                <th>نوع</th>
                                <th>توضیحات</th>
                                <th>تاریخ</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($latest_transactions as $tx): ?>
                                <tr>
                                    <td><?= htmlspecialchars($tx['username']) ?></td>
                                    <td class="fw-bold text-<?= $tx['amount'] > 0 ? 'success' : 'danger' ?>">
                                        <?= number_format($tx['amount']) ?>
                                    </td>
                                    <td>
                                        <span class="badge bg-secondary-soft">
                                            <?php 
                                                switch ($tx['type']) {
                                                    case 'deposit': echo 'واریز'; break;
                                                    case 'withdrawal': echo 'برداشت'; break;
                                                    case 'payment': echo 'پرداخت فاکتور'; break;
                                                    case 'refund': echo 'بازگشت وجه'; break;
                                                    default: echo htmlspecialchars($tx['type']);
                                                }
                                            ?>
                                        </span>
                                    </td>
                                    <td><?= htmlspecialchars($tx['description']) ?></td>
                                    <td class="text-muted"><small><?= to_jalali($tx['created_at'], true) ?></small></td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

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