<?php
require_once __DIR__ . '/_init.php';
web_require_perm('orders');

if(!function_exists('bot_payment_report_collect')){
    http_response_code(500);
    exit('PaymentReportService.php لود نشده است. فایل app/Services/PaymentReportService.php را جایگزین کن.');
}

function web_payment_filter_ts($value, $end=false){
    $v = trim((string)$value);
    if($v === '') return 0;
    $t = strtotime($v . ($end ? ' 23:59:59' : ' 00:00:00'));
    return $t ? (int)$t : 0;
}

$fromRaw = trim((string)($_GET['from'] ?? ''));
$toRaw = trim((string)($_GET['to'] ?? ''));
$includeAll = !empty($_GET['include_all']);
$fromTs = web_payment_filter_ts($fromRaw, false);
$toTs = web_payment_filter_ts($toRaw, true);

if(isset($_GET['old_pdf'])){
    $name = basename((string)$_GET['old_pdf']);
    $path = bot_payment_report_cache_dir().'/'.$name;
    if($name === '' || !is_file($path) || substr($name, -4) !== '.pdf'){
        http_response_code(404); exit('فایل گزارش پیدا نشد.');
    }
    if(!headers_sent()){
        header('Content-Type: application/pdf');
        header('Content-Disposition: attachment; filename="'.basename($name).'"');
        header('Content-Length: '.filesize($path));
        header('Cache-Control: no-store, no-cache, must-revalidate');
    }
    readfile($path); exit;
}

if(($_GET['download'] ?? '') === 'pdf'){
    $res = bot_payment_report_generate_pdf($fromTs, $toTs, $includeAll);
    if(empty($res['ok']) || empty($res['path']) || !is_file($res['path'])){
        http_response_code(500);
        exit('ساخت فایل PDF انجام نشد. مجوز پوشه cache/reports را بررسی کن.');
    }
    $name = $res['name'] ?? ('payment-full-report-'.date('Ymd-His').'.pdf');
    if(!headers_sent()){
        header('Content-Type: application/pdf');
        header('Content-Disposition: attachment; filename="'.basename($name).'"');
        header('Content-Length: '.filesize($res['path']));
        header('Cache-Control: no-store, no-cache, must-revalidate');
    }
    readfile($res['path']);
    exit;
}

$report = bot_payment_report_collect($fromTs, $toTs, $includeAll);
$tot = $report['totals'];
$oldReports = function_exists('bot_payment_report_list_generated_pdfs') ? bot_payment_report_list_generated_pdfs(15) : [];
$sourceStats = isset($report['sources']) && is_array($report['sources']) ? $report['sources'] : [];
$persianReady = function_exists('imagecreatetruecolor') && function_exists('imagettftext') && function_exists('bot_payment_report_find_font') && bot_payment_report_find_font(false) !== '';

require_once __DIR__ . '/_layout.php';
web_header('گزارش کامل پرداخت‌ها');
?>
<section class="grid cards">
<?php
web_card('درآمد کل موفق', number_format((int)$tot['amount']).' ریال', 'کارت‌به‌کارت + زیبال + فاکتورهای قدیمی');
web_card('پرداخت موفق', number_format((int)$tot['paid_count']), 'از '.number_format((int)$tot['count']).' رکورد نمایش داده‌شده');
web_card('کارت‌به‌کارت', number_format((int)$tot['card_amount']).' ریال', number_format((int)$tot['card_count']).' پرداخت');
web_card('زیبال', number_format((int)$tot['zibal_amount']).' ریال', number_format((int)$tot['zibal_count']).' پرداخت');
web_card('گزارش‌های قبلی', number_format((int)$tot['legacy_amount']).' ریال', number_format((int)$tot['legacy_count']).' فاکتور قدیمی');
web_card('الماس شارژ شده', number_format((int)$tot['reward']), 'جمع الماس پرداخت‌های موفق');
?>
</section>

<section class="card">
    <h2>📄 خروجی PDF فارسی پرداخت‌ها</h2>
    <p class="muted">این گزارش، پرداخت‌های جدید و فاکتورهای قدیمی <code>shop-factor.json</code> را با تمام مشخصات در PDF می‌آورد: کاربر، مبلغ، الماس، روش پرداخت، وضعیت، شناسه رسید/Authority، کد پیگیری، بسته، ادمین بررسی‌کننده، زمان‌ها و اطلاعات تکمیلی.</p>
    <?php if(!$persianReady): ?>
        <div class="alert">⚠️ برای PDF فارسی واقعی روی هاست باید افزونه GD و یک فونت TTF فارسی/یونیکد فعال باشد. اگر نباشد، فایل PDF با حالت سازگار ساخته می‌شود. مسیر پیشنهادی فونت: <code>assets/fonts/Vazirmatn-Regular.ttf</code> یا فونت‌های سیستمی مثل DejaVuSans.</div>
    <?php endif; ?>
    <form method="get" class="filters" style="display:flex;gap:10px;flex-wrap:wrap;align-items:end">
        <label>از تاریخ میلادی<br><input type="date" name="from" value="<?= web_h($fromRaw) ?>"></label>
        <label>تا تاریخ میلادی<br><input type="date" name="to" value="<?= web_h($toRaw) ?>"></label>
        <label style="display:flex;gap:6px;align-items:center;margin-bottom:8px"><input type="checkbox" name="include_all" value="1" <?= $includeAll?'checked':'' ?>> نمایش همه وضعیت‌ها</label>
        <button type="submit">اعمال فیلتر</button>
        <button type="submit" name="download" value="pdf">دانلود PDF کامل</button>
        <a class="btn" href="payments-report.php">حذف فیلتر</a>
    </form>
</section>

<section class="card">
    <h2>جمع روزانه درآمد موفق</h2>
    <?php web_table_start(['تاریخ','تعداد','مبلغ']); ?>
    <?php foreach(($tot['daily'] ?? []) as $day=>$d): ?>
        <tr><td><?= web_h($day) ?></td><td><?= number_format((int)$d['count']) ?></td><td><?= number_format((int)$d['amount']) ?> ریال</td></tr>
    <?php endforeach; ?>
    <?php if(empty($tot['daily'])): ?><tr><td colspan="3">پرداخت موفقی پیدا نشد.</td></tr><?php endif; ?>
    <?php web_table_end(); ?>
</section>

<section class="card">
    <h2>لیست کامل پرداخت‌ها</h2>
    <?php web_table_start(['زمان','روش','وضعیت','کاربر','مبلغ','الماس','بسته/شرح','شناسه','کد پیگیری']); ?>
    <?php foreach(array_slice($report['rows'], 0, 300) as $r): ?>
        <tr>
            <td><?= web_h(bot_payment_report_fa_date((int)($r['paid_at'] ?: ($r['updated_at'] ?: $r['created_at'])))) ?></td>
            <td><?= web_h($r['source_title'] ?? '') ?></td>
            <td><span class="badge"><?= web_h($r['status_title'] ?? '') ?></span></td>
            <td><code><?= web_h($r['user_id'] ?? '') ?></code></td>
            <td><?= number_format((int)($r['amount'] ?? 0)) ?> ریال</td>
            <td><?= number_format((int)($r['reward'] ?? 0)) ?></td>
            <td><?= web_h($r['item'] ?? '') ?></td>
            <td><code><?= web_h($r['id'] ?? '') ?></code></td>
            <td><code><?= web_h($r['ref'] ?? '') ?></code></td>
        </tr>
        <?php if(!empty($r['fields']) && is_array($r['fields'])): ?>
            <tr><td colspan="9" style="background:#f8fafc">
                <details><summary>مشخصات کامل این پرداخت</summary>
                    <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:10px">
                        <?php foreach($r['fields'] as $k=>$v): $val = bot_payment_report_str($v); if($val==='') continue; ?>
                            <div><b><?= web_h($k) ?>:</b> <code><?= web_h($val) ?></code></div>
                        <?php endforeach; ?>
                    </div>
                </details>
            </td></tr>
        <?php endif; ?>
    <?php endforeach; ?>
    <?php if(empty($report['rows'])): ?><tr><td colspan="9">پرداختی پیدا نشد.</td></tr><?php endif; ?>
    <?php web_table_end(); ?>
    <?php if(count($report['rows']) > 300): ?><p class="muted">در پنل فقط ۳۰۰ ردیف اول نمایش داده شد؛ داخل PDF تا ۵۰۰ ردیف قرار می‌گیرد.</p><?php endif; ?>
</section>


<section class="card">
    <h2>🔎 وضعیت منابع خوانده‌شده</h2>
    <p class="muted">اگر گزارش خالی بود، این بخش نشان می‌دهد سورس از کدام فایل/جدول پرداخت خوانده و چند رکورد پیدا کرده است.</p>
    <?php web_table_start(['منبع','تعداد رکورد خوانده‌شده','توضیح']); ?>
    <?php foreach($sourceStats as $src): ?>
        <tr>
            <td><code><?= web_h($src['name'] ?? '') ?></code></td>
            <td><?= number_format((int)($src['count'] ?? 0)) ?></td>
            <td><?= web_h($src['note'] ?? '') ?></td>
        </tr>
    <?php endforeach; ?>
    <?php if(empty($sourceStats)): ?><tr><td colspan="3">هنوز منبعی بررسی نشده است.</td></tr><?php endif; ?>
    <?php web_table_end(); ?>
</section>

<section class="card">
    <h2>گزارش‌های PDF ساخته‌شده قبلی</h2>
    <?php if(!$oldReports): ?>
        <p class="muted">هنوز گزارشی در cache/reports ساخته نشده است.</p>
    <?php else: ?>
        <?php web_table_start(['نام فایل','زمان ساخت','حجم','دانلود']); ?>
        <?php foreach($oldReports as $f): ?>
            <tr>
                <td><code><?= web_h($f['name']) ?></code></td>
                <td><?= web_h(bot_payment_report_fa_date((int)$f['time'])) ?></td>
                <td><?= number_format((int)ceil($f['size']/1024)) ?> KB</td>
                <td><a class="btn" href="payments-report.php?old_pdf=<?= urlencode($f['name']) ?>">دانلود</a></td>
            </tr>
        <?php endforeach; ?>
        <?php web_table_end(); ?>
    <?php endif; ?>
</section>
<?php web_footer(); ?>
