<?php require_once __DIR__.'/_layout.php'; web_require_login();
$pdo = web_pdo();
if(function_exists('bot_gift_install_schema')) bot_gift_install_schema();
function web_gift_error_text($err, $detail=''){
    $err = (string)$err;
    if($err === 'channel_missing') return 'کانال کد هدیه تنظیم نشده است.';
    if($err === 'not_active') return 'این کد فعال نیست.';
    if($err === 'send_failed') return 'ارسال به کانال انجام نشد: '.($detail ?: 'خطای نامشخص تلگرام');
    if($err === 'duplicate') return 'این کد قبلاً ساخته شده است.';
    if($err === 'invalid_code') return 'کد نامعتبر است.';
    if($err === 'invalid_amount') return 'مقدار الماس نامعتبر است.';
    return $err ?: 'خطای نامشخص';
}
if($_SERVER['REQUEST_METHOD']==='POST'){
    $action=$_POST['action'] ?? '';
    if(!$pdo && !in_array($action, ['channel','channel_test'], true)) web_flash('error','دیتابیس فعال نیست.');
    elseif($action==='create'){
        $code=trim((string)($_POST['code'] ?? ''));
        if($code==='') $code='GIFT'.random_int(100000,999999);
        $code=function_exists('bot_gift_normalize_code') ? bot_gift_normalize_code($code) : preg_replace('/[^A-Za-z0-9_\-\.]/','',$code);
        $amount=web_int($_POST['amount'] ?? 0,1);
        $res=function_exists('bot_gift_create_code') ? bot_gift_create_code($code,$amount,$_SESSION['web_admin_id'] ?? '') : ['ok'=>false,'error'=>'service_missing'];
        if(empty($res['ok'])){
            web_flash('error','کد ساخته نشد: '.web_gift_error_text($res['error']??'', $res['detail']??''));
        } else {
            $msg = 'کد هدیه ساخته شد.';
            if(!empty($_POST['publish'])){
                $pub = function_exists('bot_gift_publish_to_channel') ? bot_gift_publish_to_channel((int)$res['id'], $_SESSION['web_admin_id'] ?? '') : ['ok'=>false,'error'=>'service_missing'];
                if(!empty($pub['ok'])) $msg .= ' داخل کانال هم ارسال شد.';
                else $msg .= ' ولی داخل کانال نرفت: '.web_gift_error_text($pub['error']??'', $pub['description']??'');
            }
            web_flash('success',$msg);
            web_admin_log('web_gift_create','gift_code',$code,'ساخت کد هدیه از پنل وب',['amount'=>$amount,'publish'=>!empty($_POST['publish'])]);
        }
    } elseif($action==='publish'){
        $id=web_int($_POST['id'] ?? 0,1);
        $pub=function_exists('bot_gift_publish_to_channel') ? bot_gift_publish_to_channel($id, $_SESSION['web_admin_id'] ?? '') : ['ok'=>false,'error'=>'service_missing'];
        if(!empty($pub['ok'])){ web_flash('success','کد هدیه داخل کانال ارسال شد.'); web_admin_log('web_gift_publish','gift_code',$id,'ارسال کد هدیه به کانال از پنل وب'); }
        else web_flash('error','ارسال انجام نشد: '.web_gift_error_text($pub['error']??'', $pub['description']??''));
    } elseif($action==='toggle'){
        $id=web_int($_POST['id'] ?? 0,1);
        $st=$pdo->prepare("UPDATE bot_gift_codes SET status=IF(status='active','disabled','active') WHERE id=? AND status<>'used'");
        $st->execute([$id]);
        web_flash('success','وضعیت کد تغییر کرد.');
        web_admin_log('web_gift_toggle','gift_code',$id,'تغییر وضعیت کد هدیه');
    } elseif($action==='channel'){
        $ch=trim((string)($_POST['channel'] ?? ''));
        if(function_exists('normalize_bale_channel_username')) $ch = normalize_bale_channel_username($ch);
        web_setting_put('lib/kodam/giftch.txt',$ch);
        web_flash('success','کانال کد هدیه ذخیره شد.');
        web_admin_log('web_gift_channel','setting','giftch','تنظیم کانال کد هدیه از پنل وب',['channel'=>$ch]);
    } elseif($action==='channel_test'){
        $ch=function_exists('bot_gift_channel_ref') ? bot_gift_channel_ref() : web_setting_get('lib/kodam/giftch.txt','');
        if(trim($ch)==='') web_flash('error','اول کانال کد هدیه را ذخیره کن.');
        else{
            $chat=function_exists('bot_gift_channel_chat_id') ? bot_gift_channel_chat_id($ch) : $ch;
            $res=web_send_message($chat, "✅ تست کانال کد هدیه\nاگر این پیام را می‌بینی، تنظیم کانال درست است.");
            if(isset($res->ok) && $res->ok) web_flash('success','پیام تست داخل کانال ارسال شد.');
            else web_flash('error','پیام تست ارسال نشد. ربات باید داخل کانال ادمین باشد. خطا: '.web_h($res->description ?? 'unknown'));
        }
    }
    web_redirect('gift-codes.php');
}
web_header('کد هدیه');
$channelVal = function_exists('bot_gift_channel_ref') ? bot_gift_channel_ref() : web_setting_get('lib/kodam/giftch.txt','');
$channelDisplay = function_exists('bot_gift_channel_display') ? bot_gift_channel_display() : ($channelVal ?: 'تنظیم نشده');
?>
<div class="grid">
  <div class="panel"><h3>ساخت کد هدیه</h3>
    <form method="post"><?php web_csrf_input(); ?><input type="hidden" name="action" value="create">
      <div class="field"><label>کد</label><input name="code" placeholder="خالی بماند خودکار ساخته می‌شود"></div>
      <div class="field"><label>مقدار الماس</label><input type="number" name="amount" value="10" min="1"></div>
      <label class="check"><input type="checkbox" name="publish" value="1" checked> بعد از ساخت، داخل کانال کد هدیه هم ارسال شود</label>
      <button>ساخت کد</button>
    </form>
  </div>
  <div class="panel"><h3>کانال کد هدیه</h3>
    <div class="alert">کانال فعلی: <b><?=web_h($channelDisplay)?></b></div>
    <form method="post"><?php web_csrf_input(); ?><input type="hidden" name="action" value="channel">
      <div class="field"><label>آیدی/یوزرنیم/لینک کانال</label><input name="channel" value="<?=web_h($channelVal)?>" placeholder="@channel یا t.me/channel یا عددی"></div>
      <button>ذخیره کانال</button>
    </form>
    <form method="post" style="margin-top:10px"><?php web_csrf_input(); ?><input type="hidden" name="action" value="channel_test"><button class="secondary">ارسال پیام تست به کانال</button></form>
    <p class="muted">ربات باید داخل کانال ادمین باشد؛ وگرنه ارسال کد هدیه به کانال انجام نمی‌شود.</p>
  </div>
</div>
<?php if(!$pdo){ echo '<div class="alert error">دیتابیس فعال نیست.</div>'; web_footer(); exit; }
$st=$pdo->query('SELECT * FROM bot_gift_codes ORDER BY id DESC LIMIT 100');
web_table_start(['کد','مقدار','وضعیت','ارسال کانال','استفاده‌کننده','ثبت','عملیات']);
foreach($st as $r){
    $id=(int)$r['id']; $status=(string)$r['status'];
    echo '<tr><td><code>'.web_h($r['code']).'</code></td><td>'.number_format((int)$r['amount']).'</td><td>'.web_h($status).'</td><td>'.(!empty($r['published_at'])?'✅ '.web_h($r['published_at']):'ارسال نشده').'</td><td>'.web_h($r['used_by']).'</td><td>'.web_h($r['created_at']).'</td><td class="actions">';
    if($status==='active') { echo '<form method="post">'; web_csrf_input(); echo '<input type="hidden" name="action" value="publish"><input type="hidden" name="id" value="'.$id.'"><button class="secondary">ارسال به کانال</button></form>'; }
    if($status!=='used') { echo '<form method="post">'; web_csrf_input(); echo '<input type="hidden" name="action" value="toggle"><input type="hidden" name="id" value="'.$id.'"><button class="secondary">فعال/غیرفعال</button></form>'; }
    echo '</td></tr>';
}
web_table_end(); web_footer();
