@php
$groups = [
__('Dashboard') => ['dashboard', 'dashboard.'],
__('User Management') => ['user.', 'users.', 'user'],
__('Roles & Permissions') => ['role', 'roles', 'permission', 'permissions'],
__('Employees') => ['employee', 'employees', 'employee.'],
__('Departments / Sections') => ['section', 'sections', 'department', 'departments'],
__('Contracts') => ['contract', 'contracts'],
__('Documents') => ['document', 'documents'],
__('Leave Management') => ['leave', 'leaves'],
__('Loans') => ['loan', 'loans'],
__('Payroll / Finance') => ['payroll', 'paye', 'nssf', 'wcf', 'bank', 'salary', 'deduction', 'deductions'],
__('Promotions & Transfers') => ['promotion', 'promotions', 'transfer', 'transfers', 'resign', 'termination'],
__('Reports') => ['report', 'reports'],
__('Notifications') => ['notification', 'notifications'],
__('Settings') => ['setting', 'settings', 'config'],
__('Support') => ['support', 'ticket'],
];
$remaining = $permissions->values();
$grouped = [];
foreach($groups as $label => $patterns) {
$matches = $permissions->filter(function($p) use ($patterns) {
foreach($patterns as $pat) {
if (\Illuminate\Support\Str::contains($p->name, $pat)) return true;
}
return false;
})->values();
$grouped[$label] = $matches;
$remaining = $remaining->filter(function($p) use($matches){ return !$matches->contains($p); })->values();
}
if($remaining->count() > 0) {
$grouped[__('Other')] = $remaining;
}
@endphp
@foreach($grouped as $groupLabel => $groupPerms)
@if($groupPerms->count() > 0)
@php $groupKey = \Illuminate\Support\Str::slug($groupLabel); @endphp
{{ $groupLabel }}
@php
// For User Management group render 3 columns with up to 6 items per column
$isThreeCols = ($groupKey === 'user-management');
@endphp
@if($isThreeCols)
@php
$count = $groupPerms->count();
$perColumn = $count < 9 ? 4 : 5;
$numColumns = (int) ceil($count / $perColumn);
$numColumns = max(1, min(3, $numColumns));
$colSize = (int) ceil($count / $numColumns);
$chunks = $groupPerms->chunk($colSize);
@endphp
@foreach($chunks as $chunk)
@foreach($chunk as $permission)
@endforeach
@endforeach
@else
@foreach($groupPerms as $permission)
@endforeach
@endif
@endif
@endforeach
@error('permissions')
{{ $message }}
@enderror