<?php
require_once __DIR__ . '/_layout.php';
web_require_perm('settings');

$path = 'lib/kodam/data-left.json';
$defaults = [
    'enabled'=>'✅فعال',
    'leftday'=>'3',
    'ksrleft'=>'2',
    'afzleft'=>'1',
    'max_checks'=>'20',
    'instant_max_checks'=>'500',
    'instant_max_seconds'=>'25',
    'grace_minutes'=>'30',
    'confirm_attempts'=>'2',
    'notify_user'=>'✅فعال',
    'notify_owner'=>'✅فعال',
    'auto_penalty'=>'✅فعال',
    'event_auto_penalty'=>'✅فعال',
    'event_max_orders'=>'50',
];
$settings = web_data_json($path, []);
if(!is_array($settings)) $settings = [];
$settings = array_merge($defaults, $settings);

function left_penalty_flag_value($key){ return !empty($_POST[$key]) ? '✅فعال' : '❌غیر فعال'; }
function left_penalty_int_post($key, $default, $min, $max){
    $v = isset($_POST[$key]) ? (int)$_POST[$key] : (int)$default;
    if($v < $min) $v = $min;
    if($v > $max) $v = $max;
    return (string)$v;
}
function left_penalty_report_counts(){
    $out = ['orders'=>0,'members'=>0,'unique_members'=>0,'left'=>0,'candidates'=>0,'uncertain'=>0];
    $unique = [];
    foreach(bot_data_glob('ads/*.json') as $file){
        $o = bot_data_get_json($file, []);
        if(!is_array($o)) continue;
        $out['orders']++;
        $members = is_array($o['members'] ?? null) ? array_values($o['members']) : [];
        $out['members'] += count($members);
        foreach($members as $uid){ $uid = (string)$uid; if($uid !== '' && $uid !== '0') $unique[$uid] = true; }
        $out['left'] += is_array($o['left'] ?? null) ? count($o['left']) : 0;
        $out['candidates'] += is_array($o['left_candidates'] ?? null) ? count($o['left_candidates']) : 0;
        $out['uncertain'] += is_array($o['left_uncertain_log'] ?? null) ? count($o['left_uncertain_log']) : 0;
    }
    $out['unique_members'] = count($unique);
    return $out;
}

$runResult = null;
if($_SERVER['REQUEST_METHOD'] === 'POST'){
    web_check_csrf();
    $action = $_POST['action'] ?? 'save';
    if($action === 'save'){
        $settings = [
            'enabled'=>left_penalty_flag_value('enabled'),
            'auto_penalty'=>left_penalty_flag_value('auto_penalty'),
            'event_auto_penalty'=>left_penalty_flag_value('event_auto_penalty'),
            'notify_user'=>left_penalty_flag_value('notify_user'),
            'notify_owner'=>left_penalty_flag_value('notify_owner'),
            'leftday'=>left_penalty_int_post('leftday', 3, 1, 365),
            'ksrleft'=>left_penalty_int_post('ksrleft', 2, 0, 100000),
            'afzleft'=>left_penalty_int_post('afzleft', 1, 0, 100000),
            'max_checks'=>left_penalty_int_post('max_checks', 20, 1, 200),
            'instant_max_checks'=>left_penalty_int_post('instant_max_checks', 500, 1, 5000),
            'instant_max_seconds'=>left_penalty_int_post('instant_max_seconds', 25, 5, 45),
            'event_max_orders'=>left_penalty_int_post('event_max_orders', 50, 1, 500),
            'grace_minutes'=>left_penalty_int_post('grace_minutes', 30, 0, 1440),
            'confirm_attempts'=>left_penalty_int_post('confirm_attempts', 2, 1, 5),
            'updated_at'=>time(),
        ];
        web_data_put_json($path, $settings);
        web_flash('success', 'تنظیمات جریمه لفت ذخیره شد.');
        header('Location: left-penalty.php'); exit;
    }
    if($action === 'run_now'){
        global $data_left, $money;
        $data_left = $settings;
        if(!isset($money) || trim((string)$money)==='') $money = 'الماس';
        $max = (int)($settings['instant_max_checks'] ?? 500);
        $seconds = (int)($settings['instant_max_seconds'] ?? 25);
        if(function_exists('bale_instant_check_left_all_orders')){
            $runResult = bale_instant_check_left_all_orders($max, true, 'manual_web_instant', $seconds);
            web_flash('success', 'بررسی فوری انجام شد: '.(int)($runResult['progress_checked'] ?? 0).' از '.(int)($runResult['total_memberships'] ?? ($runResult['total_candidates'] ?? 0)).' رکورد عضویت، کاربران یکتا: '.(int)($runResult['unique_users'] ?? 0). ' نفر، '.(int)($runResult['penalized'] ?? 0).' جریمه.');
        }elseif(function_exists('bale_manual_check_left_all_orders')){
            $runResult = bale_manual_check_left_all_orders((int)($settings['max_checks'] ?? 20), true, 'manual_web');
            web_flash('warning', 'تابع فوری موجود نبود؛ بررسی مرحله‌ای انجام شد.');
        }else{
            web_flash('error', 'ماژول بررسی لفت لود نشده است.');
        }
    }
    if($action === 'reset_cursor'){
        if(function_exists('bale_left_cursor_reset')){
            bale_left_cursor_reset();
            web_flash('success', 'چرخه بررسی لفت از اول تنظیم شد.');
        }else{
            web_flash('error', 'ماژول cursor بررسی لفت لود نشده است.');
        }
        header('Location: left-penalty.php'); exit;
    }
}

$counts = left_penalty_report_counts();
$progressInfo = function_exists('bale_left_progress_info') ? bale_left_progress_info() : ['total_members'=>0,'checked_in_cycle'=>0,'percent'=>0,'last_cron_at'=>0];
web_header('تنظیمات جریمه لفت');
?>
<div class="grid cards">
  <?php web_card('سفارش‌های قابل بررسی', number_format($counts['orders']), 'فایل‌های سفارش'); ?>
  <?php web_card('کاربران یکتا', number_format($counts['unique_members']), 'افراد متفاوت در سفارش‌ها'); ?>
  <?php web_card('رکوردهای عضویت', number_format($counts['members']), 'هر کاربر در هر سفارش یک رکورد است'); ?>
  <?php web_card('جریمه‌شده‌ها', number_format($counts['left']), 'ثبت‌شده در left_log'); ?>
  <?php web_card('در انتظار تأیید لفت', number_format($counts['candidates']), 'برای جلوگیری از خطای موقت API'); ?>
</div>

<section class="card">
  <h2>📊 پیشرفت بررسی مرحله‌ای</h2>
  <p><?=function_exists('bale_left_progress_line') ? bale_left_progress_line($progressInfo) : 'پیشرفت در دسترس نیست.'?></p>
  <p class="muted">آخرین اجرای کرون: <b><?=function_exists('bale_left_time_ago_fa') ? bale_left_time_ago_fa((int)($progressInfo['last_cron_at'] ?? 0)) : 'ثبت نشده'?></b></p>
  <p class="muted">هر اجرای کرون فقط به اندازه «حداکثر بررسی در هر کرون/اجرای فوری» جلو می‌رود و تا ۱۰۰٪ ادامه می‌دهد.</p>
  <form method="post" style="display:inline-block">
    <?php web_csrf_input(); ?><input type="hidden" name="action" value="reset_cursor">
    <button class="btn" type="submit" onclick="return confirm('چرخه بررسی از اول شروع شود؟')">🔁 شروع از اول</button>
  </form>
</section>

<section class="card">
  <h2>⚙️ تنظیمات ضدلفت سفارش‌ها</h2>
  <p class="muted">این بخش مربوط به کاربرانی است که از سفارش کانال الماس می‌گیرند و بعد از کانال خارج می‌شوند؛ رفرال نیست. گزینه «جریمه درجا» فقط همان کاربری را که آپدیت خروجش رسیده بررسی می‌کند و فشار اسکن کامل ندارد.</p>
  <form method="post" class="form-grid">
    <?php web_csrf_input(); ?><input type="hidden" name="action" value="save">
    <label class="switch-row"><input type="checkbox" name="enabled" value="1" <?=($settings['enabled']??'')!=='❌غیر فعال'?'checked':''?>> فعال بودن بررسی لفت</label>
    <label class="switch-row"><input type="checkbox" name="auto_penalty" value="1" <?=($settings['auto_penalty']??'')!=='❌غیر فعال'?'checked':''?>> اعمال جریمه خودکار بعد از تأیید لفت</label>
    <label class="switch-row"><input type="checkbox" name="event_auto_penalty" value="1" <?=($settings['event_auto_penalty']??'')!=='❌غیر فعال'?'checked':''?>> جریمه درجا هنگام دریافت آپدیت خروج از کانال/گروه</label>
    <label class="switch-row"><input type="checkbox" name="notify_user" value="1" <?=($settings['notify_user']??'')!=='❌غیر فعال'?'checked':''?>> اطلاع به کاربر جریمه‌شده</label>
    <label class="switch-row"><input type="checkbox" name="notify_owner" value="1" <?=($settings['notify_owner']??'')!=='❌غیر فعال'?'checked':''?>> اطلاع به صاحب سفارش</label>

    <label>چند روز بعد از دریافت الماس بررسی شود؟<input type="number" min="1" max="365" name="leftday" value="<?=web_h($settings['leftday'])?>"></label>
    <label>کسر از کاربر لفت‌دهنده<input type="number" min="0" max="100000" name="ksrleft" value="<?=web_h($settings['ksrleft'])?>"></label>
    <label>برگشت به صاحب سفارش<input type="number" min="0" max="100000" name="afzleft" value="<?=web_h($settings['afzleft'])?>"></label>
    <label>حداکثر بررسی در هر کرون/مرحله<input type="number" min="1" max="200" name="max_checks" value="<?=web_h($settings['max_checks'])?>"></label>
    <label>سقف بررسی فوری با یک بار زدن دکمه<input type="number" min="1" max="5000" name="instant_max_checks" value="<?=web_h($settings['instant_max_checks'])?>"></label>
    <label>سقف زمان بررسی فوری، ثانیه<input type="number" min="5" max="45" name="instant_max_seconds" value="<?=web_h($settings['instant_max_seconds'])?>"></label>
    <label>حداکثر سفارش قابل بررسی برای هر آپدیت خروج<input type="number" min="1" max="500" name="event_max_orders" value="<?=web_h($settings['event_max_orders'])?>"></label>
    <label>زمان امان بعد از دریافت الماس، دقیقه<input type="number" min="0" max="1440" name="grace_minutes" value="<?=web_h($settings['grace_minutes'])?>"></label>
    <label>تعداد تأیید لفت قبل از جریمه<input type="number" min="1" max="5" name="confirm_attempts" value="<?=web_h($settings['confirm_attempts'])?>"></label>

    <div class="form-actions"><button class="btn primary" type="submit">ذخیره تنظیمات</button></div>
  </form>
</section>

<section class="card">
  <h2>🚀 بررسی فوری از پنل وب</h2>
  <p class="muted">با زدن این دکمه، بررسی از نقطه فعلی چرخه ادامه پیدا می‌کند و تا سقف امن تعیین‌شده همان لحظه انجام می‌شود؛ لفتی‌های پیدا شده همان لحظه جریمه می‌شوند. برای شروع از اول، دکمه «شروع از اول» را بزن.</p>
  <form method="post">
    <?php web_csrf_input(); ?><input type="hidden" name="action" value="run_now">
    <button class="btn danger" type="submit" onclick="return confirm('بررسی فوری انجام شود؟')">بررسی فوری کامل و اعمال جریمه</button>
  </form>
  <?php if($runResult): ?>
  <pre class="codebox"><?=web_h(json_encode($runResult, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT))?></pre>
  <?php endif; ?>
</section>

<section class="card">
  <h2>⏱ کرون پیشنهادی</h2>
  <pre class="codebox">/usr/bin/curl -fsS "<?=web_h((defined('BOT_PUBLIC_BASE_URL')?BOT_PUBLIC_BASE_URL:'https://domain.com/member'))?>/cron_all_telegram.php?task=left&amp;force=1&amp;left_max_checks=<?=web_h($settings['max_checks'])?>&amp;left_notify=1" &gt;/dev/null 2&gt;&amp;1</pre>
</section>
<?php web_footer(); ?>
