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(), ]); } public function getInvoiceTypes() : JsonResponse { $invoiceTypes = []; foreach (InvoiceType::all() as $invoiceType) { if ( $invoiceType->slug === InvoiceType::INVOICE_TYPE_TRAVELLING || $invoiceType->slug === InvoiceType::INVOICE_TYPE_OTHER ) { continue; } $invoiceTypes[] = [ 'slug' => $invoiceType->slug, 'name' => $invoiceType->name ]; } $invoiceTypes[] = ['slug' => InvoiceType::INVOICE_TYPE_OTHER, 'name' => 'Sonstige Kosten']; return response()->json([ 'invoiceTypes' => $invoiceTypes ]); } public function getMessages() : JsonResponse { $messageContainer = [ 'message' => '', 'type' => '' ]; $message = session()->get('message'); if (null !== $message) { $message = session()->get('message'); session()->forget('message'); if('' !== $message ) { $messageContainer = unserialize($message); } } return response()->json($messageContainer); } public function getTextResourceText(string $textResource) : JsonResponse { $pageTextRepository = new PageTextRepository(); return response()->json([ 'content' => $pageTextRepository->getPageText( $textResource) ]); } 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' => '/invoice/new', '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; } }