<?php
// One-time installer for daily reward SQL tables and defaults.
// Run once: install_daily_reward_tables.php?run=1 then delete this file.
@ini_set('display_errors','0');
@ini_set('log_errors','1');
header('Content-Type: text/plain; charset=utf-8');
if(php_sapi_name() !== 'cli' && ($_GET['run'] ?? '') !== '1'){
    http_response_code(403);
    echo "برای اجرا از ?run=1 استفاده کنید. بعد از اجرا فایل را حذف کنید.\n";
    exit;
}
$root = __DIR__;
if(is_file($root.'/config.php')) require_once $root.'/config.php';
if(is_file($root.'/config_db.php')) require_once $root.'/config_db.php';
if(is_file($root.'/lib/db_storage.php')) require_once $root.'/lib/db_storage.php';
if(is_file($root.'/app/Services/TextSettingsService.php')) require_once $root.'/app/Services/TextSettingsService.php';
if(is_file($root.'/app/Services/DailyRewardService.php')) require_once $root.'/app/Services/DailyRewardService.php';
if(!function_exists('bot_daily_install_schema')){
    echo "DailyRewardService.php پیدا نشد یا درست لود نشد.\n";
    exit(1);
}
$ok = bot_daily_install_schema();
echo $ok ? "✅ جدول‌های الماس روزانه و کرون پیام روزانه ساخته/بررسی شدند.\n" : "⚠️ اتصال دیتابیس فعال نیست یا ساخت جدول انجام نشد؛ حالت فایل JSON همچنان کار می‌کند.\n";

if(function_exists('bot_daily_settings') && function_exists('bot_daily_save_settings')){
    bot_daily_save_settings(bot_daily_settings());
    echo "✅ تنظیمات پیش‌فرض الماس روزانه ذخیره شد.\n";
}

$pdo = function_exists('bot_daily_pdo') ? bot_daily_pdo() : null;
$migrated = 0;
if($pdo && function_exists('bot_data_scandir') && function_exists('bot_data_get_json')){
    try{
        $st = $pdo->prepare('INSERT INTO bot_daily_rewards (user_id, last_claim_ts, next_claim_ts, claim_count, total_amount, data_json) VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE last_claim_ts=GREATEST(last_claim_ts, VALUES(last_claim_ts)), next_claim_ts=GREATEST(next_claim_ts, VALUES(next_claim_ts)), updated_at=CURRENT_TIMESTAMP');
        foreach(bot_data_scandir('melat') as $file){
            if($file === '.' || $file === '..' || !preg_match('/^(\d+)\.json$/', $file, $m)) continue;
            $uid = $m[1];
            $u = bot_data_get_json('melat/'.$file, []);
            if(!is_array($u)) continue;
            $next = (int)($u['daily_next_ts'] ?? ($u['time-day'] ?? 0));
            if($next <= 0) continue;
            $last = (int)($u['daily_last_ts'] ?? 0);
            $st->execute([$uid, $last, $next, 0, 0, function_exists('bot_daily_json') ? bot_daily_json(['migrated'=>true,'time'=>time()]) : json_encode(['migrated'=>true], JSON_UNESCAPED_UNICODE)]);
            $migrated += (int)$st->rowCount();
        }
        echo "✅ مهاجرت زمان‌های قبلی هدیه روزانه: {$migrated} رکورد.\n";
    }catch(Throwable $e){
        echo "⚠️ خطا در مهاجرت زمان‌های قبلی: ".$e->getMessage()."\n";
    }
}

echo "تمام شد. این فایل را از هاست حذف کنید.\n";
