<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

class PermissionController extends Controller
{
    // ইউজারের পারমিশন এডিট পেজ
    public function edit(User $user)
    {
        $allRoutes = [];
        
        // প্রজেক্টের সব Route ফেচ করা
        foreach (Route::getRoutes() as $route) {
            $routeName = $route->getName();
            
            // নাম ছাড়া এবং সিস্টেমের ডিফল্ট (ignition, sanctum) রাউটগুলো ইগনোর করা
            if ($routeName && !str_starts_with($routeName, 'ignition.') && !str_starts_with($routeName, 'sanctum.')) {
                $allRoutes[] = $routeName;
            }
        }
        
        // ডুপ্লিকেট বাদ দিয়ে সাজানো
        $routes = array_unique($allRoutes);
        sort($routes);

        // ইউজারের বর্তমান সিলেক্টেড রাউটগুলো
        $userPermissions = $user->permissions->pluck('route_name')->toArray();

        return view('permissions.edit', compact('user', 'routes', 'userPermissions'));
    }

    // পারমিশন আপডেট বা সেভ করা
    public function update(Request $request, User $user)
    {
        $request->validate([
            'routes' => 'nullable|array',
            'routes.*' => 'string'
        ]);

        // ইউজারের আগের সব পারমিশন মুছে ফেলা
        $user->permissions()->delete();

        // নতুন সিলেক্ট করা রাউটগুলো সেভ করা
        if ($request->has('routes')) {
            $permissionsData = collect($request->routes)->map(function ($routeName) {
                return ['route_name' => $routeName];
            });
            $user->permissions()->createMany($permissionsData);
        }

        return back()->with('success', 'User permissions updated successfully!');
    }
}