src/Controller/DefaultController.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Amtsblatt;
  4. use App\Entity\Baugesuch;
  5. use App\Entity\Baugesuchausnahmebewilligung;
  6. use App\Entity\Einbuergerungsgesuch;
  7. use App\Entity\Erdsonde;
  8. use App\Entity\Gestaltungsplan;
  9. use App\Entity\Konzessionsbewilligung;
  10. use App\Entity\Konzessionsgesuch;
  11. use App\Entity\KonzessionsgesuchGewaesser;
  12. use App\Entity\KonzessionsgesuchUmwelt;
  13. use App\Entity\Nutzungsplanung;
  14. use App\Entity\Rodungsgesuch;
  15. use App\Entity\Schutzzonenplan;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  24. class DefaultController extends AbstractController
  25. {
  26. #[Route(path: '/', name: 'amtsblatt_admin.home')]
  27. #[Security("is_granted('ROLE_USER_DRAFT')")]
  28. public function dashboard(Request $request, UserPasswordHasherInterface $userPasswordHasher, AuthorizationCheckerInterface $authorizationChecker, EntityManagerInterface $em): Response
  29. {
  30. // Checken, ob User Passwort = Usernamen ist, dann Warnmeldung ausgeben.
  31. // Dieser Check könnte entfernt werden, falls alle User neues Passwort gesetzt haben.
  32. $passwordSameAsUsername = false;
  33. if( $userPasswordHasher->isPasswordValid($this->getUser(), $this->getUser()->getUserIdentifier()) )
  34. {
  35. $passwordSameAsUsername = true;
  36. }
  37. // Ende
  38. if ($authorizationChecker->isGranted('ROLE_ADMIN')) {
  39. // Checken, ob noch genügend Amtsblaetter erfasst
  40. $activeAnzAmtsblaetter = count($em->getRepository(Amtsblatt::class)->getAllActive());
  41. $msgNeueAmtsblaetterErfassen = $this->getParameter('app_notify_min_anz_amtsblaetter') - $activeAnzAmtsblaetter;
  42. // Ende
  43. // Editierbare Amtsblaetter holen
  44. $amtsblaetter = $em->getRepository(Amtsblatt::class)->findAllByYear(date('Y'), 'ASC');
  45. // Aktuell gewähltes Amtsblatt
  46. $activeAmtsblatt = null;
  47. $statistic = [];
  48. if ($request->get('id')){
  49. $activeAmtsblatt = $em->getRepository(Amtsblatt::class)->find($request->get('id'));
  50. }
  51. if (!$activeAmtsblatt){
  52. // Zwei Stunden länger soll das aktuell editierbare Amtsblatt im Dashboard gehalten werden.
  53. $activeAmtsblatt = $em->getRepository(Amtsblatt::class)->getCurrentEditable(-2);
  54. }
  55. if ($activeAmtsblatt){
  56. $statistic['baugesuche'] = $em->getRepository(Baugesuch::class)->amtsblattStatistic($activeAmtsblatt);
  57. $statistic['baugesuchausnahmebewilligungen'] = $em->getRepository(Baugesuchausnahmebewilligung::class)->amtsblattStatistic($activeAmtsblatt);
  58. $statistic['gestaltungsplaene'] = $em->getRepository(Gestaltungsplan::class)->amtsblattStatistic($activeAmtsblatt);
  59. $statistic['schutzzonenplaene'] = $em->getRepository(Schutzzonenplan::class)->amtsblattStatistic($activeAmtsblatt);
  60. $statistic['nutzungsplanungen'] = $em->getRepository(Nutzungsplanung::class)->amtsblattStatistic($activeAmtsblatt);
  61. $statistic['rodungsgesuche'] = $em->getRepository(Rodungsgesuch::class)->amtsblattStatistic($activeAmtsblatt);
  62. $statistic['einbuergerungsgesuche'] = $em->getRepository(Einbuergerungsgesuch::class)->amtsblattStatistic($activeAmtsblatt);
  63. $statistic['erdsonden'] = $em->getRepository(Erdsonde::class)->amtsblattStatistic($activeAmtsblatt);
  64. $statistic['konzessionsgesuche'] = $em->getRepository(Konzessionsgesuch::class)->amtsblattStatistic($activeAmtsblatt);
  65. $statistic['konzessionsgesuche_umwelt'] = $em->getRepository(KonzessionsgesuchUmwelt::class)->amtsblattStatistic($activeAmtsblatt);
  66. $statistic['konzessionsgesuche_gewaesser'] = $em->getRepository(KonzessionsgesuchGewaesser::class)->amtsblattStatistic($activeAmtsblatt);
  67. $statistic['konzessionsbewilligungen'] = $em->getRepository(Konzessionsbewilligung::class)->amtsblattStatistic($activeAmtsblatt);
  68. }
  69. // Ende
  70. return $this->render(
  71. 'Default/dashboard-admin.html.twig',
  72. ['msgNeueAmtsblaetterErfassen' => $msgNeueAmtsblaetterErfassen, 'amtsblaetter' => $amtsblaetter, 'activeAmtsblatt' => $activeAmtsblatt, 'statistic' => $statistic, 'passwordSameAsUsername' => $passwordSameAsUsername]
  73. );
  74. } else {
  75. return $this->render(
  76. 'Default/dashboard-user.html.twig',
  77. ['passwordSameAsUsername' => $passwordSameAsUsername]
  78. );
  79. }
  80. }
  81. #[Route(path: '/set-user-heartbeat.html', name: 'amtsblatt_admin.default_setheartbeat', methods: ['POST'])]
  82. #[Security("is_granted('ROLE_USER_DRAFT')")]
  83. public function setHeartbeat(Request $request, EntityManagerInterface $em): Response
  84. {
  85. $user = $this->getUser();
  86. if ($user and !$this->isGranted('IS_IMPERSONATOR')) {
  87. // Browser Agent und IP mitloggen für Debug Zwecke
  88. $user->setLastBrowserAgentAndIp("IP Address: ". $request->getClientIp() ."\n\nBrowser Agent:\n". $request->headers->get('user-agent'));
  89. $user->setLastHeartbeat();
  90. $em->persist($user);
  91. $em->flush();
  92. }
  93. return new Response('Heartbeat signal received!');
  94. }
  95. }