<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

class AssignAllPermissionsToAdmin extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'permissions:assign-all-to-admin';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Asigna todos los permisos existentes al rol Admin';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $role = Role::where('name', 'Admin')->first();

        if (!$role) {
            $this->error('El rol Admin no existe.');
            return 1;
        }

        $allPermissions = Permission::all();
        $assigned = 0;
        $alreadyHad = 0;

        foreach ($allPermissions as $permission) {
            if (!$role->hasPermissionTo($permission)) {
                $role->givePermissionTo($permission);
                $assigned++;
            } else {
                $alreadyHad++;
            }
        }

        // Limpiar caché de permisos
        app()['cache']->forget('spatie.permission.cache');

        $this->info("Permisos ya asignados: {$alreadyHad}");
        $this->info("Permisos nuevos asignados: {$assigned}");
        $this->info("Total de permisos del Admin: {$role->permissions()->count()}");

        return 0;
    }
}

