<?php

namespace App\Console\Commands;

use App\Models\AdminUser;
use App\Support\AgentDefaultRolePermissions;
use App\Support\AgentPlatformRole;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

final class AgentRolesSyncCommand extends Command
{
    protected $signature = 'lottery:agent-roles-sync';

    protected $description = '确保平台「代理」角色存在，并将所有经营代理主账号绑定到该角色（权限在平台角色管理维护）';

    public function handle(): int
    {
        $platform = AgentDefaultRolePermissions::ensurePlatformAgentRole();
        $this->info('平台角色 agent（#'.$platform->id.'）权限数: '.count($platform->legacyPermissionSlugs()));

        $bindingCount = 0;
        foreach (DB::table('admin_user_agents')->get(['admin_user_id', 'agent_node_id']) as $binding) {
            $user = AdminUser::query()->find((int) $binding->admin_user_id);
            if ($user === null) {
                continue;
            }

            $user->syncPrimaryPlatformAgentRole((int) $binding->agent_node_id);
            $bindingCount++;
        }

        $this->info("已绑定 {$bindingCount} 个经营代理主账号到平台「代理」角色。");
        $this->line('调整权限请编辑：平台角色管理 → 代理');

        return self::SUCCESS;
    }
}
