/home2/mshostin/carnival.ms-hostingladz.com/app/Http/Controllers/RolePermissionController.php
<?php
namespace App\Http\Controllers;
use App\Models\Package;
use App\Models\Permission;
use Illuminate\Http\Request;
class RolePermissionController extends Controller
{
/**
* Display a listing of the package permissions.
*/
public function index()
{
$packagePermissions = Package::with('permissions')->get();
return view('dashboard.admin.role_permissions.index', compact('packagePermissions'));
}
/**
* Show the form for creating a new package permission.
*/
public function create()
{
$packages = Package::all();
$permissions = Permission::all();
return view('dashboard.admin.role_permissions.create', compact('packages', 'permissions'));
}
/**
* Store a newly created package permission.
*/
public function store(Request $request)
{
$request->validate([
'package_id' => 'required|exists:packages,id',
'permission_id' => 'required|array',
'permission_id.*' => 'exists:permissions,id',
]);
$package = Package::findOrFail($request->package_id);
$package->permissions()->sync($request->permission_id);
return redirect()->route('role_permissions.index')->with('success', 'Permissions updated successfully.');
}
/**
* Remove a specific permission from a package.
*/
public function destroy($id)
{
$package = Package::findOrFail($id);
$package->permissions()->detach();
return redirect()->route('role_permissions.index')->with('success', 'Permissions removed successfully.');
}
public function detachPermission($package_id, $permission_id)
{
$package = Package::findOrFail($package_id);
$package->permissions()->detach($permission_id);
return back()->with('success', 'Permission removed successfully.');
}
/**
* Fetch permissions for a given package (AJAX).
*/
public function getPermissions(Request $request)
{
$package = Package::findOrFail($request->package_id);
$all_permissions = Permission::all();
// Fix ambiguous column issue
$permissions = $package->permissions()->get(['permissions.id', 'permissions.display_name']);
$html = '<select id="permission_id" name="permission_id[]" class="form-control select2" multiple required>';
foreach ($all_permissions as $permission) {
$selected = $permissions->contains('id', $permission->id) ? 'selected' : '';
$html .= '<option value="' . $permission->id . '" ' . $selected . '>' . $permission->display_name . '</option>';
}
$html .= '</select>';
return response()->json(['html' => $html]);
}
}