{!! Form::label('name', __('إسم الدور') . ':') !!} {!! Form::text('name', null, [ 'class' => 'form-control', 'disabled' => Route::is('roles.create') ? false : true, ]) !!}
{!! Form::label('permissions', __('التصريحات') . ':', ['class' => 'mb-3']) !!}
@php // Define permission categories based on the actual system structure $permissionCategories = [ 'المستخدمين' => ['users', 'user', 'Admin', 'Owner'], 'الأدوار' => ['roles', 'role'], 'المحفظة' => [ 'wallet', 'tblHostHistoryWalletInvoices', 'tblHostWalletInvoices', 'userWallets', 'attemptChargeWallets', ], 'الدفع' => [ 'payment', 'transactions', 'transfers', 'tblTransactions', 'paymentMethods', 'paymentComssions', ], 'الكروت' => ['vouchers', 'voucher', 'categoryVouchers', 'tblusedvoucher', 'voucher-wallet'], 'المرافق' => ['facility', 'amenity', 'tblPropertyFacilityCategories', 'tblPropertyAmenityCategories'], 'الخدمات' => ['services', 'serviceTypes'], 'الإشتراكات' => ['subscriptions', 'subscription'], 'الإعدادات' => ['settings', 'setting'], 'المناديب' => ['representatives', 'representative'], 'العقارات' => [ 'property', 'apartment', 'chalet', 'resort', 'hotel', 'tblPropertyResorts', 'tblPropertyDetails', 'tblChaletSizes', 'tblCities', 'tblZones', ], 'الحجوزات' => [ 'booking', 'reservation', 'tblBookingResorts', 'deleteBooking', 'getchalet-by-resort', 'create-chalet-by-resort', 'حجز', 'حجوزات', 'عرض حجوزات', 'إضافة حجز', 'عرض حجز', 'تعديل حجز', 'مسح حجز', 'مسح حجز منتجع', 'BookingResorts', 'delete', 'Booking', ], 'التقارير' => ['reports', 'report', 'analytics', 'activity-logs'], 'عام' => ['home', 'dashboard', 'sendnotification'], ]; // Group permissions by category $groupedPermissions = []; foreach ($permissions as $permission) { $categoryFound = false; // Check if permission belongs to any defined category foreach ($permissionCategories as $categoryName => $keywords) { foreach ($keywords as $keyword) { if ( stripos($permission->name, $keyword) !== false || stripos($permission->display_name, $keyword) !== false ) { if (!isset($groupedPermissions[$categoryName])) { $groupedPermissions[$categoryName] = collect(); } $groupedPermissions[$categoryName]->push($permission); $categoryFound = true; break 2; } } } // If no category found, add to general if (!$categoryFound) { if (!isset($groupedPermissions['عام'])) { $groupedPermissions['عام'] = collect(); } $groupedPermissions['عام']->push($permission); } } // Debug: Check where booking permissions ended up $debugBooking = collect($permissions)->filter(function ($p) { return stripos($p->name, 'Booking') !== false || stripos($p->display_name, 'حجز') !== false || stripos($p->display_name, 'حجوزات') !== false; }); // Force all booking-related permissions into الحجوزات category if ($debugBooking->count() > 0) { if (!isset($groupedPermissions['الحجوزات'])) { $groupedPermissions['الحجوزات'] = collect(); } // Remove any booking permissions from other categories foreach ($groupedPermissions as $categoryName => $categoryPermissions) { if ($categoryName !== 'الحجوزات') { $groupedPermissions[$categoryName] = $categoryPermissions->filter(function ($p) { return stripos($p->name, 'Booking') === false && stripos($p->display_name, 'حجز') === false && stripos($p->display_name, 'حجوزات') === false; }); } } // Add all booking permissions to الحجوزات $groupedPermissions['الحجوزات'] = $debugBooking; } // Handle single-permission categories by merging them $finalGroupedPermissions = []; $miscPermissions = collect(); // Define categories that should never be moved to miscellaneous $protectedCategories = ['الحجوزات', 'العقارات', 'المستخدمين', 'الوظائف', 'المحفظة', 'الدفع', 'الكروت']; foreach ($groupedPermissions as $categoryName => $modulePermissions) { if ($modulePermissions->count() === 1 && !in_array($categoryName, $protectedCategories)) { // Add single permissions to miscellaneous (except protected categories) $miscPermissions = $miscPermissions->merge($modulePermissions); } else { $finalGroupedPermissions[$categoryName] = $modulePermissions; } } // Add miscellaneous category if it has permissions if ($miscPermissions->count() > 0) { $finalGroupedPermissions['متنوعات'] = $miscPermissions; } @endphp @foreach ($finalGroupedPermissions as $moduleName => $modulePermissions)
{{ $moduleName }}
{{ $modulePermissions->count() }}
@foreach ($modulePermissions as $permission)
contains($permission->id) ? 'checked' : '' }}>
@endforeach
@endforeach