UHS Logo UHS Logo UHS Logo UHS Logo
  • {{ __('Menu') }}
  • @php $authSidebarUser = Auth::user(); $sidebarRole = \App\Support\WorkflowPermission::normalizeRole((string) ($authSidebarUser->role ?? '')); $sidebarCanRequestDocument = Auth::check() && \App\Support\WorkflowPermission::canUseAdminPermission((string) ($authSidebarUser->role ?? ''), \App\Support\WorkflowPermission::ADMIN_PERMISSION_REQUEST_DOCUMENT); $sidebarCanReviewDocument = Auth::check() && \App\Support\WorkflowPermission::canUseAdminPermission((string) ($authSidebarUser->role ?? ''), \App\Support\WorkflowPermission::ADMIN_PERMISSION_REVIEW_DOCUMENT); $sidebarIsDocumentViewer = request()->routeIs('document-viewer.*'); $sidebarAdminTabForRoute = match (true) { request()->routeIs('admin.users.*') => 'users', request()->routeIs('admin.organizations.*') => 'organizations', request()->routeIs('admin.document-types.*') => 'document-types', request()->routeIs('admin.workflow-templates.*') => 'workflow-templates', request()->routeIs('admin.role-permissions.*') => 'role-permissions', default => null, }; @endphp @if(Auth::check() && $sidebarCanRequestDocument && !$sidebarCanReviewDocument)
  • @php $requesterDashboardIsActive = request()->routeIs('requester.dashboard') || ($sidebarIsDocumentViewer && in_array(request()->query('view', 'requests'), ['', 'requests'], true)); @endphp {{ __('My Requests') }} @php $myRequestActionCount = max(0, (int) ($sidebarMyRequestActionCount ?? 0)); @endphp {{ $myRequestActionCount > 99 ? '99+' : $myRequestActionCount }}
  • @elseif(Auth::check()) @php $role = $sidebarRole; $menuConfig = [ 'admin' => ['label' => __('Admin'), 'icon' => 'mdi mdi-shield-crown-outline', 'subitems' => [ ['route' => 'role.dashboard', 'icon' => 'mdi mdi-view-dashboard-outline', 'label' => __('Dashboard')], ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'users'], 'icon' => 'mdi mdi-account-multiple-outline', 'label' => __('Users')], ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'organizations'], 'icon' => 'mdi mdi-office-building-outline', 'label' => __('Organizations')], ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'document-types'], 'icon' => 'mdi mdi-file-tree-outline', 'label' => __('Document Types')], ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'workflow-templates'], 'icon' => 'mdi mdi-source-branch', 'label' => __('Workflow Templates')], ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'role-permissions'], 'icon' => 'mdi mdi-shield-edit-outline', 'label' => __('Role Permissions')], ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'audit-trails'], 'icon' => 'mdi mdi-history', 'label' => __('Audit Logs')], ]], 'rector' => ['label' => __('Document Tracking'), 'icon' => 'mdi mdi-check-decagram-outline', 'subitems' => [ ['route' => 'role.dashboard', 'params' => ['view' => 'work'], 'icon' => 'mdi mdi-clipboard-list-outline', 'label' => __('Work Queue'), 'shows_action_count' => true], ]], 'vice_rector' => ['label' => __('Document Tracking'), 'icon' => 'mdi mdi-account-tie-outline', 'subitems' => [ ['route' => 'role.dashboard', 'params' => ['view' => 'work'], 'icon' => 'mdi mdi-clipboard-list-outline', 'label' => __('Work Queue'), 'shows_action_count' => true], ]], ]; $canRequestDocument = $sidebarCanRequestDocument; $canReviewDocument = $sidebarCanReviewDocument; $allowedAdminTabs = \App\Support\WorkflowPermission::allowedAdminTabsForRole($role); $adminTabSubitems = [ 'users' => ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'users'], 'icon' => 'mdi mdi-account-multiple-outline', 'label' => __('Users')], 'organizations' => ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'organizations'], 'icon' => 'mdi mdi-office-building-outline', 'label' => __('Organizations')], 'document-types' => ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'document-types'], 'icon' => 'mdi mdi-file-tree-outline', 'label' => __('Document Types')], 'workflow-templates' => ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'workflow-templates'], 'icon' => 'mdi mdi-source-branch', 'label' => __('Workflow Templates')], 'role-permissions' => ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'role-permissions'], 'icon' => 'mdi mdi-shield-edit-outline', 'label' => __('Role Permissions')], 'audit-trails' => ['route' => 'role.dashboard', 'params' => ['admin_tab' => 'audit-trails'], 'icon' => 'mdi mdi-history', 'label' => __('Audit Logs')], ]; $menu = $menuConfig[$role] ?? null; if (!$menu && ($canReviewDocument || !empty($allowedAdminTabs))) { $menu = ['label' => __('Document Tracking'), 'icon' => 'mdi mdi-file-document-outline', 'subitems' => [ ['route' => 'role.dashboard', 'params' => ['view' => 'work'], 'icon' => 'mdi mdi-clipboard-list-outline', 'label' => __('Work Queue'), 'shows_action_count' => true], ]]; } if (!$menu) { $menu = ['label' => __('Dashboard'), 'icon' => 'mdi mdi-view-dashboard-outline', 'subitems' => [ ['route' => 'role.dashboard', 'icon' => 'mdi mdi-view-dashboard-outline', 'label' => __('Dashboard')], ]]; } if ($menu && $role !== 'admin' && $canRequestDocument) { $menu['subitems'][] = ['route' => 'role.dashboard', 'params' => ['view' => 'requests'], 'icon' => 'mdi mdi-file-document-multiple-outline', 'label' => __('My Requests'), 'shows_request_action_count' => true]; } if ($menu && $role !== 'admin' && !empty($allowedAdminTabs)) { foreach ($allowedAdminTabs as $adminTabKey) { if (isset($adminTabSubitems[$adminTabKey])) { $menu['subitems'][] = $adminTabSubitems[$adminTabKey]; } } } $sidebarId = 'sidebarRole' . ucfirst(str_replace('-', '', $role)); $isRoleMenuActive = request()->routeIs('role.*') || request()->routeIs('document-viewer.*') || request()->routeIs('admin.document-types.form-builder.*') || ($canRequestDocument && request()->routeIs('requester.add-new')); @endphp @if($menu) @foreach($menu['subitems'] as $item) @php $itemParams = $item['params'] ?? null; $itemHref = $itemParams ? route($item['route'], $itemParams) : route($item['route']); $isItemActive = request()->routeIs($item['route']); $itemActionCount = !empty($item['shows_action_count']) ? max(0, (int) ($sidebarPendingActionCount ?? 0)) : (!empty($item['shows_request_action_count']) ? max(0, (int) ($sidebarMyRequestActionCount ?? 0)) : 0); if (is_array($itemParams) && array_key_exists('admin_tab', $itemParams)) { $isItemActive = $isItemActive && request()->query('admin_tab') === $itemParams['admin_tab']; $isItemActive = $isItemActive || $sidebarAdminTabForRoute === $itemParams['admin_tab']; } elseif (is_array($itemParams) && array_key_exists('view', $itemParams)) { $itemView = (string) $itemParams['view']; $currentView = (string) request()->query('view', ''); if ($currentView === '' && $itemView === 'work' && !request()->has('admin_tab') && $sidebarAdminTabForRoute === null) { $currentView = 'work'; } $isItemActive = ($isItemActive || $sidebarIsDocumentViewer) && $currentView === $itemView; } elseif (!isset($item['params'])) { $isItemActive = $isItemActive && !request()->has('admin_tab'); $isItemActive = $isItemActive || ($sidebarIsDocumentViewer && $item['route'] === 'role.dashboard'); } @endphp
  • {{ $item['label'] }} @if(!empty($item['shows_action_count']) || !empty($item['shows_request_action_count'])) {{ $itemActionCount > 99 ? '99+' : $itemActionCount }} @endif
  • @endforeach @endif @elseif(false)
  • @lang('translation.dashboards')
    • @lang('translation.analytics')
    • @lang('translation.crm')
    • @lang('translation.ecommerce')
    • @lang('translation.crypto')
    • @lang('translation.projects')
    • @lang('translation.nft')
    • @lang('translation.job')
    • @lang('translation.blog') @lang('translation.new')
  • @lang('translation.apps')
    • @lang('translation.calender')
      • @lang('translation.main-calender')
      • @lang('translation.month-grid')
    • @lang('translation.chat')
    • @lang('translation.email')
      • @lang('translation.mailbox')
      • @lang('translation.email-templates')
        • @lang('translation.basic-action')
        • @lang('translation.ecommerce-action')
    • @lang('translation.ecommerce')
      • @lang('translation.products')
      • @lang('translation.product-Details')
      • @lang('translation.create-product')
      • @lang('translation.orders')
      • @lang('translation.order-details')
      • @lang('translation.customers')
      • @lang('translation.shopping-cart')
      • @lang('translation.checkout')
      • @lang('translation.sellers')
      • @lang('translation.sellers-details')
    • @lang('translation.projects')
      • @lang('translation.list')
      • @lang('translation.overview')
      • @lang('translation.create-project')
    • @lang('translation.tasks')
      • @lang('translation.kanbanboard')
      • @lang('translation.list-view')
      • @lang('translation.task-details')
    • @lang('translation.crm')
      • @lang('translation.contacts')
      • @lang('translation.companies')
      • @lang('translation.deals')
      • @lang('translation.leads')
    • Crypto
      • @lang('translation.transactions')
      • @lang('translation.buy-sell')
      • @lang('translation.orders')
      • @lang('translation.my-wallet')
      • @lang('translation.ico-list')
      • @lang('translation.kyc-application')
    • Invoices
      • @lang('translation.list-view')
      • @lang('translation.details')
      • @lang('translation.create-invoice')
    • Support Tickets
      • @lang('translation.list-view')
      • @lang('translation.ticket-details')
    • @lang('translation.nft-marketplace')
      • @lang('translation.marketplace')
      • @lang('translation.explore-now')
      • @lang('translation.live-auction')
      • @lang('translation.item-details')
      • @lang('translation.collections')
      • @lang('translation.creators')
      • @lang('translation.ranking')
      • @lang('translation.wallet-connect')
      • @lang('translation.create-nft')
    • @lang('translation.file-manager')
    • @lang('translation.to-do')
    • @lang('translation.jobs')
      • @lang('translation.statistics')
      • @lang('translation.job-lists')
        • @lang('translation.list')
        • @lang('translation.grid')
        • @lang('translation.overview')
      • @lang('translation.candidate-lists')
        • @lang('translation.list-view')
        • @lang('translation.grid-view')
      • @lang('translation.application')
      • @lang('translation.new-job')
      • @lang('translation.companies-list')
      • @lang('translation.job-categories')
    • @lang('translation.api-key')
  • @lang('translation.layouts') @lang('translation.hot')
    • @lang('translation.horizontal')
    • @lang('translation.detached')
    • @lang('translation.two-column')
    • @lang('translation.hovered')
  • @lang('translation.pages')
  • @lang('translation.authentication')
    • @lang('translation.signin')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.signup')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.password-reset')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.password-create')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.lock-screen')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('t-logout')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.success-message')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.two-step-verification')
      • @lang('translation.basic')
      • @lang('translation.cover')
    • @lang('translation.errors')
      • @lang('translation.404-basic')
      • @lang('translation.404-cover')
      • @lang('translation.404-alt')
      • @lang('translation.500')
      • @lang('translation.offline-page')
  • @lang('translation.pages')
    • @lang('translation.starter')
    • @lang('translation.profile')
      • @lang('translation.simple-page')
      • @lang('translation.settings')
    • @lang('translation.team')
    • @lang('translation.timeline')
    • @lang('translation.faqs')
    • @lang('translation.pricing')
    • @lang('translation.gallery')
    • @lang('translation.maintenance')
    • @lang('translation.coming-soon')
    • @lang('translation.sitemap')
    • @lang('translation.search-results')
    • @lang('translation.privacy-policy')
    • @lang('translation.term-conditions')
    • @lang('translation.blogs') @lang('translation.new')
      • @lang('translation.list-view')
      • @lang('translation.grid-view')
      • @lang('translation.overview')
  • @lang('translation.landing')
    • @lang('translation.one-page')
    • @lang('translation.nft-landing')
    • @lang('translation.job')
  • @lang('translation.components')
  • @lang('translation.base-ui')
    • @lang('translation.alerts')
    • @lang('translation.badges')
    • @lang('translation.buttons')
    • @lang('translation.colors')
    • @lang('translation.cards')
    • @lang('translation.carousel')
    • @lang('translation.dropdowns')
    • @lang('translation.grid')
    • @lang('translation.images')
    • @lang('translation.tabs')
    • @lang('translation.accordion-collapse')
    • @lang('translation.modals')
    • @lang('translation.offcanvas')
    • @lang('translation.placeholders')
    • @lang('translation.progress')
    • @lang('translation.notifications')
    • @lang('translation.media-object')
    • @lang('translation.embed-video')
    • @lang('translation.typography')
    • @lang('translation.lists')
    • @lang('translation.links') @lang('translation.new')
    • @lang('translation.general')
    • @lang('translation.ribbons')
    • @lang('translation.utilities')
  • @lang('translation.advance-ui')
    • @lang('translation.sweet-alerts')
    • @lang('translation.nestable-list')
    • @lang('translation.scrollbar')
    • @lang('translation.animation')
    • @lang('translation.tour')
    • @lang('translation.swiper-slider')
    • @lang('translation.ratings')
    • @lang('translation.highlight')
    • @lang('translation.scrollSpy')
  • @lang('translation.widgets')
  • @lang('translation.forms')
    • @lang('translation.basic-elements')
    • @lang('translation.form-select')
    • @lang('translation.checkboxs-radios')
    • @lang('translation.pickers')
    • @lang('translation.input-masks')
    • @lang('translation.advanced')
    • @lang('translation.range-slider')
    • @lang('translation.validation')
    • @lang('translation.wizard')
    • @lang('translation.editors')
    • @lang('translation.file-uploads')
    • @lang('translation.form-layouts')
    • @lang('translation.select2')
  • @lang('translation.tables')
    • @lang('translation.basic-tables')
    • @lang('translation.grid-js')
    • @lang('translation.list-js')
    • @lang('translation.datatables')
  • @lang('translation.charts')
    • @lang('translation.apexcharts')
      • @lang('translation.line')
      • @lang('translation.area')
      • @lang('translation.column')
      • @lang('translation.bar')
      • @lang('translation.mixed')
      • @lang('translation.timeline')
      • @lang('translation.range-area')
      • @lang('translation.funnel')
      • @lang('translation.candlstick')
      • @lang('translation.boxplot')
      • @lang('translation.bubble')
      • @lang('translation.scatter')
      • @lang('translation.heatmap')
      • @lang('translation.treemap')
      • @lang('translation.pie')
      • @lang('translation.radialbar')
      • @lang('translation.radar')
      • @lang('translation.polar-area')
      • @lang('translation.slope') @lang('translation.new')
    • @lang('translation.chartjs')
    • @lang('translation.echarts')
  • @lang('translation.icons')
    • @lang('translation.remix') v4.3
    • @lang('translation.boxicons')v2.1.4
    • @lang('translation.material-design')v7.2.96
    • @lang('translation.line-awesome')
    • @lang('translation.feather') v4.29.2
    • @lang('translation.crypto-svg')
  • @lang('translation.maps')
    • @lang('translation.google')
    • @lang('translation.vector')
    • @lang('translation.leaflet')
  • @lang('translation.multi-level')
    • @lang('translation.level-1.1')
    • @lang('translation.level-1.2')
      • @lang('translation.level-2.1')
      • @lang('translation.level-2.2')
        • @lang('translation.level-3.1')
        • @lang('translation.level-3.2')
  • @endif
@auth @php $sidebarFooterUser = Auth::user(); $sidebarFooterAvatar = $sidebarFooterUser->avatarUrl(); $sidebarFooterInitial = strtoupper(mb_substr(trim((string) ($sidebarFooterUser->name ?? 'U')), 0, 1)); $sidebarFooterRole = __(\App\Support\WorkflowPermission::roleLabelForAdmin((string) ($sidebarFooterUser->role ?? 'user'))); $sidebarFooterRawOrganization = trim((string) ($sidebarFooterUser->organization_name ?? '')); $sidebarFooterOrganization = $sidebarFooterRawOrganization; if ($sidebarFooterRawOrganization !== '') { try { $sidebarFooterOrganization = \App\Models\Organization::resolveDisplayName($sidebarFooterRawOrganization); } catch (\Throwable $e) { $sidebarFooterOrganization = $sidebarFooterRawOrganization; } } $sidebarFooterContextKey = static fn ($value) => preg_replace( '/[\s_-]+/u', ' ', mb_strtolower(trim((string) $value)) ); $sidebarFooterRoleKey = $sidebarFooterContextKey($sidebarFooterRole); $sidebarFooterRawRoleKey = $sidebarFooterContextKey((string) ($sidebarFooterUser->role ?? '')); $sidebarFooterRawOrganizationKey = $sidebarFooterContextKey($sidebarFooterRawOrganization); $sidebarFooterOrganizationKey = $sidebarFooterContextKey($sidebarFooterOrganization); $sidebarFooterDuplicateOrganization = $sidebarFooterRawOrganizationKey !== '' && ( $sidebarFooterRawOrganizationKey === $sidebarFooterRawRoleKey || $sidebarFooterOrganizationKey === $sidebarFooterRoleKey ); $sidebarFooterContextParts = [$sidebarFooterRole]; if ($sidebarFooterOrganization !== '' && !$sidebarFooterDuplicateOrganization) { $sidebarFooterContextParts[] = $sidebarFooterOrganization; } $sidebarFooterContext = collect($sidebarFooterContextParts) ->filter(fn ($value) => trim((string) $value) !== '') ->implode(' - '); $sidebarCurrentLocale = in_array(app()->getLocale(), ['en', 'kh'], true) ? app()->getLocale() : 'en'; $sidebarNextLocale = $sidebarCurrentLocale === 'kh' ? 'en' : 'kh'; $sidebarCurrentLanguage = $sidebarCurrentLocale === 'kh' ? __('Khmer') : __('English'); @endphp
{{ $sidebarFooterUser->name ?? __('User') }} {{ $sidebarFooterContext ?: ($sidebarFooterUser->email ?? '') }}
{{ __('Settings') }} {{ __('Language') }} {{ $sidebarCurrentLanguage }}
@csrf
@endauth