src/Controller/DashboardController.php line 22

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