*/ public function share(Request $request): array { return [ ...parent::share($request), 'name' => fn () => app(SystemSettings::class)->app_name, 'address' => fn () => app(SystemSettings::class)->address, 'logo_url' => fn () => app(SystemService::class)->systemData()['logo_url'] ?? asset('assets/logo.png'), 'login_cover_url' => fn () => app(SystemService::class)->systemData()['login_cover_url'] ?? null, 'auth' => fn () => [ 'user' => $request->user() ? [ 'id' => $request->user()->id, 'email' => $request->user()->email, 'username' => $request->user()->username, 'is_active' => $request->user()->is_active, 'last_login_at' => $request->user()->last_login_at, 'roles' => $request->user()->getRoleNames(), 'permissions' => $request->user()->getAllPermissions()->pluck('name'), ] : null, 'password_default' => config('auth.password_default'), ], 'flash' => [ 'success' => $request->session()->get('success'), 'error' => $request->session()->get('error'), ], 'sidebarOpen' => ! $request->hasCookie('sidebar_state') || $request->cookie('sidebar_state') === 'true', 'appearance' => $request->cookie('appearance', 'system'), 'vapidPublicKey' => config('webpush.vapid.public_key'), 'pendingLeaveRequests' => fn () => $this->pendingLeaveRequests($request), 'pendingEmployeeAdvances' => fn () => $this->pendingEmployeeAdvances($request), ]; } private function pendingLeaveRequests(Request $request): int { $user = $request->user(); if ($user === null || ! $user->hasAnyRole(['owner', 'developer'])) { return 0; } return LeaveRequest::query() ->where('status', LeaveRequestStatus::PENDING) ->count(); } private function pendingEmployeeAdvances(Request $request): int { $user = $request->user(); if ($user === null || ! $user->hasAnyRole(['owner', 'developer'])) { return 0; } return EmployeeAdvance::query() ->where('status', EmployeeAdvanceStatus::PENDING) ->count(); } }