security = $security; $this->user = $user; $this->activity = $activity; $this->project = $project; $this->customer = $customer; } /** * @return array */ public static function getSubscribedEvents(): array { return [ DashboardEvent::class => ['onDashboardEvent', 100], ]; } /** * @param DashboardEvent $event */ public function onDashboardEvent(DashboardEvent $event) { $user = $event->getUser(); $section = new CompoundRow(); $section->setTitle(''); $section->setOrder(100); if ($this->security->isGranted('view_user')) { $query = new UserQuery(); $query->setCurrentUser($user); $section->addWidget( (new More()) ->setId('userTotal') ->setTitle('stats.userTotal') ->setData($this->user->countUsersForQuery($query)) ->setOptions([ 'route' => 'admin_user', 'icon' => 'user', 'color' => 'primary', ]) ); } if ($this->security->isGranted('view_customer')) { $query = new CustomerQuery(); $query->setCurrentUser($user); $section->addWidget( (new More()) ->setId('customerTotal') ->setTitle('stats.customerTotal') ->setData($this->customer->countCustomersForQuery($query)) ->setOptions([ 'route' => 'admin_customer', 'icon' => 'customer', 'color' => 'primary', ]) ); } if ($this->security->isGranted('view_project')) { $query = new ProjectQuery(); $query->setCurrentUser($user); $section->addWidget( (new More()) ->setId('projectTotal') ->setTitle('stats.projectTotal') ->setData($this->project->countProjectsForQuery($query)) ->setOptions([ 'route' => 'admin_project', 'icon' => 'project', 'color' => 'primary', ]) ); } if ($this->security->isGranted('view_activity')) { $query = new ActivityQuery(); $query->setCurrentUser($user); $section->addWidget( (new More()) ->setId('activityTotal') ->setTitle('stats.activityTotal') ->setData($this->activity->countActivitiesForQuery($query)) ->setOptions([ 'route' => 'admin_activity', 'icon' => 'activity', 'color' => 'primary', ]) ); } if (\count($section->getWidgets()) > 0) { $event->addSection($section); } } }