src/Controller/DashboardController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Einzeltransport;
  4. use App\Entity\Transportunternehmen;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  12. #[Security("is_granted('ROLE_USER') or is_granted('ROLE_KANTON')")]
  13. class DashboardController extends AbstractController
  14. {
  15. #[Route(path: '/', name: 'home')]
  16. #[Security("is_granted('ROLE_USER') or is_granted('ROLE_KANTON')")]
  17. public function index(): RedirectResponse
  18. {
  19. // Redirect zu Dashboard
  20. return $this->redirectToRoute('dashboard_index');
  21. }
  22. /**
  23. * Dashboard Index Action.
  24. *
  25. * @throws \Doctrine\ORM\ORMException
  26. */
  27. #[Route(path: '/dashboard/', name: 'dashboard_index')]
  28. #[Security("is_granted('ROLE_USER') or is_granted('ROLE_KANTON')")]
  29. public function dashboard(EntityManagerInterface $em, AuthorizationCheckerInterface $authorizationChecker): Response
  30. {
  31. $benutzer = $this->getUser();
  32. $transportunternehmenId = $benutzer->getTransportunternehmen();
  33. // Anzahl Transportunternehmen
  34. $anzTransportunternehmen = $em->getRepository(Transportunternehmen::class)->countTransportunternehmen();
  35. // Anzahl Einzeltransporte, alle oder nur eigene
  36. if ($transportunternehmenId) {
  37. $transportunternehmen = $em->getRepository(Transportunternehmen::class)->find($transportunternehmenId);
  38. } else {
  39. $transportunternehmen = null;
  40. }
  41. $anzEinzeltransporte = $em->getRepository(Einzeltransport::class)->countEinzeltransporte($transportunternehmen, null, null);
  42. // Anzahl Einzeltransporte diesen Monat
  43. // Heute
  44. $datumToday = new \DateTime('today');
  45. $anzEinzeltransporteToday = $em->getRepository(Einzeltransport::class)->countEinzeltransporte(null, $datumToday, $datumToday);
  46. $datumVon = new \DateTime('first day of this month');
  47. $datumBis = new \DateTime('last day of this month');
  48. $anzEinzeltransporteThisMonth = $em->getRepository(Einzeltransport::class)->countEinzeltransporte(null, $datumVon, $datumBis);
  49. // Neueste Einzeltransporte
  50. // User-Level Filter: Zeige als Transportunternehmen nur eigene Transporte
  51. $userFilter = null;
  52. if (false === $authorizationChecker->isGranted('ROLE_SECURITY') && $transportunternehmenId) {
  53. $userFilter = $em->getRepository(Transportunternehmen::class)->find($transportunternehmenId);
  54. }
  55. $filterDate = new \DateTime('today');
  56. $neusteEinzeltransporte = $em->getRepository(Einzeltransport::class)->findLatest($userFilter, $filterDate);
  57. return $this->render('Dashboard/index.html.twig', [
  58. 'anzahlTransportunternehmen' => $anzTransportunternehmen,
  59. 'anzahlEinzeltransporte' => $anzEinzeltransporte,
  60. 'anzahlEinzeltransporteThisMonth' => $anzEinzeltransporteThisMonth,
  61. 'anzahlEinzeltransporteToday' => $anzEinzeltransporteToday,
  62. 'neusteEinzeltransporte' => $neusteEinzeltransporte,
  63. ]
  64. );
  65. }
  66. }