src/Controller/DashboardController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\CourseOccurrenceRepository;
  4. use App\Repository\CourseProviderRepository;
  5. use App\Repository\CourseRepository;
  6. use App\Repository\OrderRepository;
  7. use App\Repository\PersonRepository;
  8. use App\Repository\ProviderRepository;
  9. use App\Service\StatsService;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use App\User\Controller\AbstractClientableController;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class DashboardController extends AbstractClientableController
  14. {
  15.     /**
  16.      * @Route("/", name="dashboard")
  17.      */
  18.     public function index(
  19.         StatsService $statsService,
  20.         OrderRepository $orderRepo,
  21.         CourseOccurrenceRepository $courseOccurrenceRepo,
  22.         CourseRepository $courseRepo,
  23.         PersonRepository $personRepository,
  24.         EntityManagerInterface $entityManager,
  25.         CourseProviderRepository $courseProviderRepository,
  26.         ProviderRepository $providerRepository,
  27.     ) {
  28.         $user $this->getCurrentUser();
  29.         $person $personRepository->getByUser($user);
  30.         $roles $user->getRoles();
  31.         //  $person = $personRepository->findOneBy(['user' => $user]);
  32.         if (in_array('ROLE_MANAGER'$roles) || in_array('ROLE_ADMIN'$roles) || in_array('ROLE_SUPER_USER'$roles)) {
  33.             $numberDays 7;
  34.             $client $this->getCurrentClient();
  35.             $statsData = [];
  36.             if ($client) {
  37.                 $statsData['orderCoursesStats'] = $statsService->getCourseOrderStatsByRecentDays($numberDays$client);
  38.                 $statsData['orderStats'] = $statsService->getOrderStatsByRecentDays($numberDays$client);
  39.                 $statsData['peopleStats'] = $statsService->getCustomerStatsByRecentDays($numberDays$client);
  40.                 $statsData['courseStats'] = $statsService->getCourseStatsByRecentDays($numberDays$client);
  41.                 $statsData['salesStats'] = $statsService->getSaleStatsByRecentDays($numberDays$client);
  42.             }
  43.             $openOrders $orderRepo->getMappedCountOfOpenOrders($client);
  44.             $nextCourses $courseOccurrenceRepo->getCoursesByClient($client150'asc''start', new \DateTime(), nullnull);
  45.             return $this->render('dashboard/index.html.twig', [
  46.                 'client' => $client,
  47.                 'person' => $person,
  48.                 'statsData' => $statsData,
  49.                 'openOrders' => $openOrders,
  50.                 'nextCourses' => $nextCourses,
  51.                 'user' => $user,
  52.                 'person' => $person,
  53.             ]);
  54.         } elseif (in_array('ROLE_SPEAKER'$roles)) {
  55.             return $this->render('dashboard/speaker.html.twig', [
  56.                 'user' => $user,
  57.                 'person' => $person,
  58.             ]);
  59.         } elseif (in_array('ROLE_PROVIDER'$roles)) {
  60.             $user $this->getUser(); // Menke\UserBundle\Entity\User
  61.             // Provider direkt über die Relation user ermitteln
  62.             $provider $providerRepository->findOneBy(['user' => $user]);
  63.             if (!$provider) {
  64.                 // sauberer Hinweis statt 500
  65.                 throw $this->createAccessDeniedException('Kein Provider-Konto für diesen Benutzer gefunden.');
  66.             }
  67.             $providerCourses $courseProviderRepository->findCoursesByProviderUser($user->getId());
  68.             return $this->render('provider/course/index.html.twig', [
  69.                 'provider_courses' => $providerCourses,
  70.                 'provider' => $provider,
  71.                 'user' => $user,
  72.             ]);
  73.         } elseif (in_array('ROLE_USER'$roles)) {
  74.             return $this->render('dashboard/customer.html.twig', [
  75.                 'user' => $user,
  76.                 'person' => $person,
  77.             ]);
  78.         }
  79.     }
  80. }