<?php

namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use App\Models\User;
use Spatie\Permission\Models\Role;

class SyncUserRoles extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'app:sync-user-roles';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        try {
            // Récupérer tous les utilisateurs de la base distante
            $users = DB::connection('tenant_2')->table('users')->get();

            foreach ($users as $user) {
                // Déterminer le rôle en fonction du type_user
                $roleName = match ($user->type_user) {
                    2 => 'admin',
                    3 => 'gestionnaire',
                    default => 'user',
                };

                // Vérifier si le rôle existe dans la base locale
                $role = Role::where('name', $roleName)->first();

                // Si le rôle existe
                if ($role) {
                   
                    DB::connection('mysql')->table('model_has_roles')->updateOrInsert(
                        ['model_id' => $user->id, 'model_type' => User::class],
                        ['role_id' => $role->id]
                    );
                } else {
                    $this->info("Le rôle '{$roleName}' n'existe pas dans la base locale pour l'utilisateur ID: {$user->id}.");
                }
            }

            $this->info("Synchronisation des rôles terminée avec succès.");
        } catch (\Exception $e) {
            $this->error("Erreur : " . $e->getMessage());
        }
    }
}
