69 lines
2.2 KiB
PHP
69 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\Enumerations\UserRole;
|
|
use App\Models\User;
|
|
use App\Resources\UserResource;
|
|
|
|
class GlobalDataProvider {
|
|
private ?User $user;
|
|
|
|
public function __invoke() {
|
|
$this->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;
|
|
}
|
|
|
|
|
|
}
|