*/ public function share(Request $request): array { return array_merge(parent::share($request), [ 'auth' => [ 'user' => function () use ($request) { $user = $request->user(); if (! $user) { return null; } return [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'roles' => $user->roles()->select('id', 'name', 'slug')->get(), 'permissions' => $user->permissions()->pluck('slug')->values(), ]; }, ], 'flash' => [ 'success' => fn () => $request->session()->get('success'), 'error' => fn () => $request->session()->get('error'), 'warning' => fn () => $request->session()->get('warning'), 'info' => fn () => $request->session()->get('info'), ], 'notifications' => function () use ($request) { try { $user = $request->user(); if (! $user) { return null; } $today = now()->toDateString(); $activities = \App\Models\Activity::query() ->with([ // Include contract uuid and reference, keep id for relation mapping, and client_case_id for nested eager load 'contract:id,uuid,reference,client_case_id', // Include client case uuid (id required for mapping, will be hidden in JSON) 'contract.clientCase:id,uuid', // Include account amounts; contract_id needed for relation mapping 'contract.account:contract_id,balance_amount,initial_amount', ]) ->whereDate('due_date', $today) ->where('user_id', $user->id) ->orderBy('created_at') ->limit(20) ->get(); return [ 'dueToday' => [ 'count' => $activities->count(), 'items' => $activities, 'date' => $today, ], ]; } catch (\Throwable $e) { return null; } }, ]); } }