user = auth()->user(); return response()->json([ 'user' => null !== $this->user ? new UserResource($this->user)->toArray(request()) : null, 'navbar' => $this->generateNavbar(), 'tenant' => app('tenant'), 'activeUsers' => $this->getActiveUsers(), ]); } private function generateNavbar() : array { $navigation = [ 'personal' => [], 'common' => [], 'costunits' => [], 'events' => [], ]; $navigation['personal'][] = ['url' => '/', 'display' => 'Home']; if (null !== $this->user) { $navigation['personal'][] = ['url' => '/personal-data', 'display' => 'Meine Daten']; $navigation['personal'][] = ['url' => '/messages', 'display' => 'Meine Nachrichten']; if ( in_array($this->user->user_role_local_group, [UserRole::USER_ROLE_ADMIN, UserRole::USER_ROLE_GROUP_LEADER] ) || $this->user->user_role_main === UserRole::USER_ROLE_ADMIN ) { $navigation['costunits'][] = ['url' => '/cost-unit/list', 'display' => 'Kostenstellen']; $navigation['costunits'][] = ['url' => '/cost-unit/create', 'display' => 'Neue laufende Tätigkeit']; } } $navigation['common'][] = ['url' => '/capture-invoice', 'display' => 'Neue Abrechnung']; $navigation['common'][] = ['url' => '/available-events', 'display' => 'Verfügbare Veranstaltungen']; return $navigation; } private function getActiveUsers() : array { $activeUsers = []; $conditions = ['active' => true]; if (app('tenant')->slug !== 'lv') { $conditions['local_group'] = app('tenant')->slug; } foreach ($rawUsers = User::where($conditions)->get() as $user) { $userResource = new UserResource($user); $activeUsers[] = $userResource->getReducedData(); } return $activeUsers; } }