src/Controller/userController/StartController.php line 649

Open in your IDE?
  1. <?php
  2. namespace App\Controller\userController;
  3. use App\Controller\api\GoogleMapsController;
  4. use App\Controller\basisController\AllgemeineFunktionenController;
  5. use App\Controller\basisController\UserBasisController;
  6. use App\Entity\StatistikSuchbegriffe;
  7. use App\Repository\BranchenKategorienRepository;
  8. use App\Repository\BranchenRepository;
  9. use App\Repository\FirmenBlogRepository;
  10. use App\Repository\FirmenDateienRepository;
  11. use App\Repository\FirmenprofilRepository;
  12. use App\Repository\KonfiguratorThemenRepository;
  13. use App\Repository\SchulungenRepository;
  14. use App\Repository\SchulungsArtRepository;
  15. use App\Repository\SchulungsfilterRepository;
  16. use App\Repository\SchulungsfilterungRepository;
  17. use App\Repository\SchulungsTermineRepository;
  18. use App\Repository\SchulungWerbungRepository;
  19. use App\Repository\StatistikSuchbegriffeRepository;
  20. use App\Repository\UserFavoritenRepository;
  21. use App\Repository\UserProfilRepository;
  22. use App\Repository\UserRepository;
  23. use App\Repository\ZielgruppeRepository;
  24. use Doctrine\ORM\EntityManagerInterface;
  25. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Symfony\Component\HttpFoundation\Response;
  29. use Symfony\Component\Routing\Annotation\Route;
  30. use Symfony\Contracts\HttpClient\HttpClientInterface;
  31. class StartController extends UserBasisController
  32. {
  33.     #[Route('/user/weiterleitung'name'user_weiterleitung')]
  34.     public function user_weiterleitung(Request $request): Response
  35.     {
  36.         $user $this->getUser()?->getId();
  37.         if ($user != null) {
  38.             if ($request->getSession()->get('appUser')) {
  39.                 if (in_array("ROLE_FIRMA"$this->getUser()->getRoles())) {
  40.                     return $this->redirectToRoute('user_firma', ['id' => 0'seite' => 'info']);
  41.                 }
  42.             } else {
  43.                 if (in_array("ROLE_CELSEO_MASTERADMIN"$this->getUser()->getRoles())) {
  44.                     return $this->redirectToRoute('admin_start');
  45.                 }
  46.                 if (in_array("ROLE_FIRMA_ADMIN"$this->getUser()->getRoles())) {
  47.                     return $this->redirectToRoute('admin_firmenadmin_start');
  48.                 }
  49.             }
  50.             if (in_array("ROLE_FIRMA"$this->getUser()->getRoles())) {
  51.                 return $this->redirectToRoute('user_firma', ['id' => 0'seite' => 'info']);
  52.             }
  53.         }
  54.         return $this->redirectToRoute('user_start');
  55.     }
  56.     #[Route('/'name'user_start')]
  57.     public function index(FirmenBlogRepository       $firmenBlogRepository,
  58.                           FirmenprofilRepository     $firmenprofilRepository,
  59.                           SchulungsArtRepository     $schulungsArtRepository,
  60.                           ZielgruppeRepository       $zielgruppeRepository,
  61.                           UserFavoritenRepository    $userFavoritenRepository,
  62.                           UserRepository             $userRepository,
  63.                           SchulungsTermineRepository $schulungsTermineRepository,
  64.                           SchulungWerbungRepository  $schulungWerbungRepository): Response
  65.     {
  66.         $userId $this->getUser()?->getId();
  67.         $sessionId $this->session->getId();
  68.         $meinStatus 0;
  69.         if ($userId == null) {
  70.             $favoriten $userFavoritenRepository->findBy(['session_id' => $sessionId]);
  71.         } else {
  72.             $favoriten $userFavoritenRepository->findBy(['user_id' => $userId]);
  73.             $meinStatus 1;
  74.             if ($this->getUser()?->getFirmenProfil() != null) {
  75.                 $meinStatus 2;
  76.                 if ($this->getUser()->getFirmenProfil()->getCelseoIntranetId() != null) {
  77.                     $meinStatus 3;
  78.                 }
  79.             }
  80.         }
  81.         $schulungen = [];
  82.         $werbungen $schulungWerbungRepository->findWerbungAktiv(3);
  83.         foreach ($werbungen as $werbung) {
  84.             $schulungen[] = $werbung->getSchulung();
  85.         }
  86.         $schulungenRest $schulungsTermineRepository->findSchlungsTerminNeuste(10$meinStatus);
  87.         foreach ($schulungenRest as $schulungenRestTemp) {
  88.             $schulungAdd true;
  89.             foreach ($schulungen as $schulung) {
  90.                 if ($schulung->getId() == $schulungenRestTemp->getSchulung()->getId()) {
  91.                     $schulungAdd false;
  92.                 }
  93.             }
  94.             if ($schulungAdd) {
  95.                 $schulungen[] = $schulungenRestTemp->getSchulung();
  96.             }
  97.             if (count($schulungen) >= 6) {
  98.                 break;
  99.             }
  100.         }
  101.         return $this->render('user/start/index.html.twig', [
  102.             'dozenten' => $userRepository->findAll(),
  103.             'schulungen' => $schulungen,
  104.             'schulungsarten' => $schulungsArtRepository->findAll(),
  105.             'zielgruppen' => $zielgruppeRepository->findAll(),
  106.             'favoriten' => $favoriten,
  107.             'firmenprofile' => $firmenprofilRepository->findAll(),
  108.             'blogs' => $firmenBlogRepository->findBy(['aktiv' => 1], ['datum' => 'DESC'], 100),
  109.         ]);
  110.     }
  111.     #[Route('/user/start/weitere'name'user_start_weitere')]
  112.     public function user_start_weitere(Request                    $request,
  113.                                        FirmenprofilRepository     $firmenprofilRepository,
  114.                                        UserFavoritenRepository    $userFavoritenRepository,
  115.                                        SchulungsTermineRepository $schulungsTermineRepository): Response
  116.     {
  117.         $meinStatus 0;
  118.         $userId $this->getUser()?->getId();
  119.         $sessionId $this->session->getId();
  120.         if ($userId == null) {
  121.             $favoriten $userFavoritenRepository->findBy(['session_id' => $sessionId]);
  122.         } else {
  123.             $favoriten $userFavoritenRepository->findBy(['user_id' => $userId]);
  124.             $meinStatus 1;
  125.             if ($this->getUser()?->getFirmenProfil() != null) {
  126.                 $meinStatus 2;
  127.                 if ($this->getUser()->getFirmenProfil()->getCelseoIntranetId() != null) {
  128.                     $meinStatus 3;
  129.                 }
  130.             }
  131.         }
  132.         $termine = [];
  133.         $terminIds = [];
  134.         $array_termine_vorhanden $request->get('array_termine_vorhanden');
  135.         $neueSeminareCounter $request->get('neueSeminareCounter');
  136.         $anzahlSchulungen = ($neueSeminareCounter 3) + 10;
  137.         $schulungenRest $schulungsTermineRepository->findSchlungsTerminNeuste($anzahlSchulungen$meinStatus);
  138.         foreach ($schulungenRest as $schulungenRestTemp) {
  139.             $schulungAdd true;
  140.             foreach ($array_termine_vorhanden as $vorhanden) {
  141.                 if ($vorhanden == $schulungenRestTemp->getId()) {
  142.                     $schulungAdd false;
  143.                 }
  144.             }
  145.             if ($schulungAdd) {
  146.                 $termine[] = $schulungenRestTemp;
  147.                 $terminIds[] = $schulungenRestTemp->getId();
  148.             }
  149.             if (count($termine) >= 3) {
  150.                 break;
  151.             }
  152.         }
  153.         $ergebnis = [];
  154.         $ergebnis["weitere_seminare_gefunden"] = $this->render('user/start/weitere_seminare.html.twig', [
  155.             'termine' => $termine,
  156.             'favoriten' => $favoriten,
  157.             'firmenprofile' => $firmenprofilRepository->findAll(),
  158.         ])->getContent();
  159.         $ergebnis["weitere_termine_ids"] = $terminIds;
  160.         $ergebnis["anzahl_termine"] = count($termine);
  161.         return new JsonResponse($ergebnis);
  162.     }
  163.     #[Route('/user/start/seminarfilter'name'user_start_seminarfilter')]
  164.     public function user_start_seminarfilter(Request $request): Response
  165.     {
  166.         $filter json_decode($request->get('filter'), true);
  167.         return $this->render('user/start/seminarfilter.html.twig', [
  168.             'filter' => $filter,
  169.         ]);
  170.     }
  171.     #[Route('/user/start/seminarfilter_plz_suche'name'user_start_seminarfilter_plz_suche')]
  172.     public function user_start_seminarfilter_plz_suche(Request $request,
  173.                                                        GoogleMapsController   $googleMapsController,
  174.                                                        HttpClientInterface    $httpClient): Response
  175.     {
  176.         $plz $request->get('plz');
  177.         $returnData = [];
  178.         $returnData['lat'] = 0;
  179.         $returnData['lng'] = 0;
  180.         $ergebnis $googleMapsController->googleMapsKoordinatenSuchen('Deutschland ' $plz$httpClient);
  181.         if (count($ergebnis) > 0) {
  182.             $returnData['lat'] = $ergebnis[0]['geometry']['location']['lat'];
  183.             $returnData['lng'] = $ergebnis[0]['geometry']['location']['lng'];
  184.             $returnData["error"] = false;
  185.         } else {
  186.             $returnData["error"] = true;
  187.         }
  188.         return new JsonResponse($returnData);
  189.     }
  190.     #[Route('/user/start/seminarergebnisse'name'user_start_seminarergebnisse')]
  191.     public function user_start_seminarergebnisse(Request                         $request,
  192.                                                  SchulungenRepository            $schulungenRepository,
  193.                                                  SchulungsTermineRepository      $schulungsTermineRepository,
  194.                                                  SchulungsfilterungRepository    $schulungsfilterungRepository,
  195.                                                  SchulungsfilterRepository       $schulungsfilterRepository,
  196.                                                  StatistikSuchbegriffeRepository $statistikSuchbegriffeRepository,
  197.                                                  KonfiguratorThemenRepository    $konfiguratorThemenRepository,
  198.                                                  SchulungsArtRepository          $schulungsArtRepository,
  199.                                                  BranchenRepository              $branchenRepository,
  200.                                                  BranchenKategorienRepository    $kategorienRepository,
  201.                                                  FirmenprofilRepository          $firmenprofilRepository,
  202.                                                  ZielgruppeRepository            $zielgruppeRepository,
  203.                                                  GoogleMapsController            $googleMapsController,
  204.                                                  EntityManagerInterface          $entityManager): Response
  205.     {
  206.         $schulungen null;
  207.         $schulungstermine null;
  208.         $filter json_decode($request->get('filter'), true);
  209.         $suchkriterien = [];
  210.         $userId $this->getUser()?->getId();
  211.         $meinStatus 0;
  212.         $suchkriterien['nur_celsisten'] = [0];
  213.         if ($userId != null) {
  214.             $meinStatus 1;
  215.             $suchkriterien['nur_celsisten'][] = 1;
  216.             if ($this->getUser()?->getFirmenProfil() != null) {
  217.                 $meinStatus 2;
  218.                 $suchkriterien['nur_celsisten'][] = 2;
  219.                 if ($this->getUser()->getFirmenProfil()->getCelseoIntranetId() != null) {
  220.                     $meinStatus 3;
  221.                     $suchkriterien['nur_celsisten'][] = 3;
  222.                 }
  223.             }
  224.         }
  225.         if (count($filter['schulungsart']) > 0) {
  226.             $suchkriterien['schulungsart'] = [];
  227.             foreach ($filter['schulungsart'] as $schulungsart) {
  228.                 $suchkriterien['schulungsart'][] = $schulungsart;
  229.             }
  230.         }
  231.         if (count($filter['branche']) > 0) {
  232.             $suchkriterien['branche'] = [];
  233.             foreach ($filter['branche'] as $branche) {
  234.                 $suchkriterien['branche'][] = $branche;
  235.             }
  236.         }
  237.         if (count($filter['kategorie']) > 0) {
  238.             $suchkriterien['kategorie'] = [];
  239.             foreach ($filter['kategorie'] as $kategorie) {
  240.                 $suchkriterien['kategorie'][] = $kategorie;
  241.             }
  242.         }
  243.         if (count($filter['themengebiet']) > 0) {
  244.             $suchkriterien['thema'] = [];
  245.             foreach ($filter['themengebiet'] as $thema) {
  246.                 $suchkriterien['thema'][] = $thema;
  247.             }
  248.         }
  249.         if (count($filter['zielgruppe']) > 0) {
  250.             $suchkriterien['zielgruppe'] = [];
  251.             foreach ($filter['zielgruppe'] as $zielgruppe) {
  252.                 $suchkriterien['zielgruppe'][] = $zielgruppe;
  253.             }
  254.         }
  255.         if (count($filter['anbieter']) > 0) {
  256.             $suchkriterien['anbieter'] = [];
  257.             foreach ($filter['anbieter'] as $anbieter) {
  258.                 $suchkriterien['anbieter'][] = $anbieter;
  259.             }
  260.         }
  261.         $treffer = [];
  262.         $restAnzeige = [];
  263.         $restAnzeige['schulungsart'] = [];
  264.         $restAnzeige['branche'] = [];
  265.         $restAnzeige['kategorie'] = [];
  266.         $restAnzeige['thema'] = [];
  267.         $restAnzeige['zielgruppe'] = [];
  268.         $restAnzeige['anbieter'] = [];
  269.         $schulungsfilter $schulungsfilterRepository->findBy($suchkriterien);
  270.         $arr_schulung = [];
  271.         $arr_schulungsart = [];
  272.         $arr_branche = [];
  273.         $arr_kategorie = [];
  274.         $arr_thema = [];
  275.         $arr_zielgruppe = [];
  276.         $arr_anbieter = [];
  277.         foreach ($schulungsfilter as $sFilter) {
  278.             $schulungID $sFilter->getSchulung()->getId();
  279.             $arr_schulung[] = $schulungID;
  280.             $arr_schulungsart[] = $sFilter->getSchulungsart();
  281.             $arr_branche[] = $sFilter->getBranche();
  282.             $arr_kategorie[] = $sFilter->getKategorie();
  283.             $arr_thema[] = $sFilter->getThema();
  284.             $arr_zielgruppe[] = $sFilter->getZielgruppe();
  285.             $arr_anbieter[] = $sFilter->getAnbieter();
  286.             $setzeNeueSchulungsfilter true;
  287.             $setzeSchulungsart true;
  288.             $setzeBranche true;
  289.             $setzeKategorie true;
  290.             $setzeThema true;
  291.             $setzeZielgruppe true;
  292.             $setzeAnbieter true;
  293.             for ($i 0$i count($treffer); $i++) {
  294.                 if ($treffer[$i]['schulungId'] == $schulungID) {
  295.                     $setzeNeueSchulungsfilter false;
  296.                     $fuegeHinzu true;
  297.                     foreach ($treffer[$i]['schulungsart'] as $tID) {
  298.                         if ($tID == $sFilter->getSchulungsart()) {
  299.                             $fuegeHinzu false;
  300.                             $setzeSchulungsart false;
  301.                         }
  302.                     }
  303.                     if ($fuegeHinzu) {
  304.                         $treffer[$i]['schulungsart'][] = $sFilter->getSchulungsart();
  305.                     }
  306.                     $fuegeHinzu true;
  307.                     foreach ($treffer[$i]['branche'] as $tID) {
  308.                         if ($tID == $sFilter->getBranche()) {
  309.                             $fuegeHinzu false;
  310.                             $setzeBranche false;
  311.                         }
  312.                     }
  313.                     if ($fuegeHinzu) {
  314.                         $treffer[$i]['branche'][] = $sFilter->getBranche();
  315.                     }
  316.                     $fuegeHinzu true;
  317.                     foreach ($treffer[$i]['kategorie'] as $tID) {
  318.                         if ($tID == $sFilter->getKategorie()) {
  319.                             $fuegeHinzu false;
  320.                             $setzeKategorie false;
  321.                         }
  322.                     }
  323.                     if ($fuegeHinzu) {
  324.                         $treffer[$i]['kategorie'][] = $sFilter->getKategorie();
  325.                     }
  326.                     $fuegeHinzu true;
  327.                     foreach ($treffer[$i]['thema'] as $tID) {
  328.                         if ($tID == $sFilter->getThema()) {
  329.                             $fuegeHinzu false;
  330.                             $setzeThema false;
  331.                         }
  332.                     }
  333.                     if ($fuegeHinzu) {
  334.                         $treffer[$i]['thema'][] = $sFilter->getThema();
  335.                     }
  336.                     $fuegeHinzu true;
  337.                     foreach ($treffer[$i]['zielgruppe'] as $tID) {
  338.                         if ($tID == $sFilter->getZielgruppe()) {
  339.                             $fuegeHinzu false;
  340.                             $setzeZielgruppe false;
  341.                         }
  342.                     }
  343.                     if ($fuegeHinzu) {
  344.                         $treffer[$i]['zielgruppe'][] = $sFilter->getZielgruppe();
  345.                     }
  346.                     $fuegeHinzu true;
  347.                     foreach ($treffer[$i]['anbieter'] as $tID) {
  348.                         if ($tID == $sFilter->getAnbieter()) {
  349.                             $fuegeHinzu false;
  350.                             $setzeAnbieter false;
  351.                         }
  352.                     }
  353.                     if ($fuegeHinzu) {
  354.                         $treffer[$i]['anbieter'][] = $sFilter->getAnbieter();
  355.                     }
  356.                 }
  357.             }
  358.             if ($setzeNeueSchulungsfilter) {
  359.                 $tmpData = [];
  360.                 $tmpData['schulungId'] = $schulungID;
  361.                 $tmpData['schulungsart'] = [];
  362.                 $tmpData['schulungsart'][] = $sFilter->getSchulungsart();
  363.                 $tmpData['branche'] = [];
  364.                 $tmpData['branche'][] = $sFilter->getBranche();
  365.                 $tmpData['kategorie'] = [];
  366.                 $tmpData['kategorie'][] = $sFilter->getKategorie();
  367.                 $tmpData['thema'] = [];
  368.                 $tmpData['thema'][] = $sFilter->getThema();
  369.                 $tmpData['zielgruppe'] = [];
  370.                 $tmpData['zielgruppe'][] = $sFilter->getZielgruppe();
  371.                 $tmpData['anbieter'] = [];
  372.                 $tmpData['anbieter'][] = $sFilter->getAnbieter();
  373.                 $treffer[] = $tmpData;
  374.             }
  375.             if ($setzeSchulungsart) {
  376.                 $setzeNeu true;
  377.                 for ($i 0$i count($restAnzeige['schulungsart']); $i++) {
  378.                     if ($restAnzeige['schulungsart'][$i]['id'] == $sFilter->getSchulungsart()) {
  379.                         $restAnzeige['schulungsart'][$i]['anzahl'] = $restAnzeige['schulungsart'][$i]['anzahl'] + 1;
  380.                         $setzeNeu false;
  381.                     }
  382.                 }
  383.                 if ($setzeNeu) {
  384.                     $tmpData = [];
  385.                     $tmpData['id'] = $sFilter->getSchulungsart();
  386.                     $tmpData['anzahl'] = 1;
  387.                     $restAnzeige['schulungsart'][] = $tmpData;
  388.                 }
  389.             }
  390.             if ($setzeBranche) {
  391.                 $setzeNeu true;
  392.                 for ($i 0$i count($restAnzeige['branche']); $i++) {
  393.                     if ($restAnzeige['branche'][$i]['id'] == $sFilter->getBranche()) {
  394.                         $restAnzeige['branche'][$i]['anzahl'] = $restAnzeige['branche'][$i]['anzahl'] + 1;
  395.                         $setzeNeu false;
  396.                     }
  397.                 }
  398.                 if ($setzeNeu) {
  399.                     $tmpData = [];
  400.                     $tmpData['id'] = $sFilter->getBranche();
  401.                     $tmpData['anzahl'] = 1;
  402.                     $restAnzeige['branche'][] = $tmpData;
  403.                 }
  404.             }
  405.             if ($setzeKategorie) {
  406.                 $setzeNeu true;
  407.                 for ($i 0$i count($restAnzeige['kategorie']); $i++) {
  408.                     if ($restAnzeige['kategorie'][$i]['id'] == $sFilter->getKategorie()) {
  409.                         $restAnzeige['kategorie'][$i]['anzahl'] = $restAnzeige['kategorie'][$i]['anzahl'] + 1;
  410.                         $setzeNeu false;
  411.                     }
  412.                 }
  413.                 if ($setzeNeu) {
  414.                     $tmpData = [];
  415.                     $tmpData['id'] = $sFilter->getKategorie();
  416.                     $tmpData['anzahl'] = 1;
  417.                     $restAnzeige['kategorie'][] = $tmpData;
  418.                 }
  419.             }
  420.             if ($setzeThema) {
  421.                 $setzeNeu true;
  422.                 for ($i 0$i count($restAnzeige['thema']); $i++) {
  423.                     if ($restAnzeige['thema'][$i]['id'] == $sFilter->getThema()) {
  424.                         $restAnzeige['thema'][$i]['anzahl'] = $restAnzeige['thema'][$i]['anzahl'] + 1;
  425.                         $setzeNeu false;
  426.                     }
  427.                 }
  428.                 if ($setzeNeu) {
  429.                     $tmpData = [];
  430.                     $tmpData['id'] = $sFilter->getThema();
  431.                     $tmpData['anzahl'] = 1;
  432.                     $restAnzeige['thema'][] = $tmpData;
  433.                 }
  434.             }
  435.             if ($setzeZielgruppe) {
  436.                 $setzeNeu true;
  437.                 for ($i 0$i count($restAnzeige['zielgruppe']); $i++) {
  438.                     if ($restAnzeige['zielgruppe'][$i]['id'] == $sFilter->getZielgruppe()) {
  439.                         $restAnzeige['zielgruppe'][$i]['anzahl'] = $restAnzeige['zielgruppe'][$i]['anzahl'] + 1;
  440.                         $setzeNeu false;
  441.                     }
  442.                 }
  443.                 if ($setzeNeu) {
  444.                     $tmpData = [];
  445.                     $tmpData['id'] = $sFilter->getZielgruppe();
  446.                     $tmpData['anzahl'] = 1;
  447.                     $restAnzeige['zielgruppe'][] = $tmpData;
  448.                 }
  449.             }
  450.             if ($setzeAnbieter) {
  451.                 $setzeNeu true;
  452.                 for ($i 0$i count($restAnzeige['anbieter']); $i++) {
  453.                     if ($restAnzeige['anbieter'][$i]['id'] == $sFilter->getAnbieter()) {
  454.                         $restAnzeige['anbieter'][$i]['anzahl'] = $restAnzeige['anbieter'][$i]['anzahl'] + 1;
  455.                         $setzeNeu false;
  456.                     }
  457.                 }
  458.                 if ($setzeNeu) {
  459.                     $tmpData = [];
  460.                     $tmpData['id'] = $sFilter->getAnbieter();
  461.                     $tmpData['anzahl'] = 1;
  462.                     $restAnzeige['anbieter'][] = $tmpData;
  463.                 }
  464.             }
  465.         }
  466.         $arr_schulung array_unique($arr_schulung);
  467.         $arr_schulungsart array_unique($arr_schulungsart);
  468.         $arr_branche array_unique($arr_branche);
  469.         $arr_kategorie array_unique($arr_kategorie);
  470.         $arr_thema array_unique($arr_thema);
  471.         $arr_zielgruppe array_unique($arr_zielgruppe);
  472.         $arr_anbieter array_unique($arr_anbieter);
  473.         if (strlen($filter['suchbegriff']) > 0) {
  474.             if ($meinStatus 0) {
  475.                 $suchEingabe strtolower(trim($filter['suchbegriff']));
  476.                 $eingabeSuchbegriffe $statistikSuchbegriffeRepository->findOneBy(['user' => $this->getUser(), 'wort' => $suchEingabe]);
  477.                 if ($eingabeSuchbegriffe == null) {
  478.                     $speichernSuchbegriff = new StatistikSuchbegriffe();
  479.                     $speichernSuchbegriff->setUser($this->getUser());
  480.                     $speichernSuchbegriff->setWort($suchEingabe);
  481.                     $speichernSuchbegriff->setDatum(new \DateTime('now', new \DateTimeZone('Europe/Berlin')));
  482.                     $entityManager->persist($speichernSuchbegriff);
  483.                     $entityManager->flush();
  484.                 }
  485.             }
  486.             $schulungsfilterungen $schulungsfilterungRepository->findSchlungenNachName($filter$meinStatus);
  487.             $schulungsIDs = [];
  488.             foreach ($schulungsfilterungen as $schulungsfilterung) {
  489.                 $schulungsIDs[] = $schulungsfilterung->getSchulung()->getId();
  490.             }
  491.             if (count($schulungsIDs) > 0) {
  492.                 $schulungen $schulungenRepository->findBy(['id' => $schulungsIDs]);
  493.             }
  494.         } else {
  495.             $schulungen $schulungenRepository->findBy(['id' => $arr_schulung], ['id' => 'DESC']);
  496.         }
  497.         $datumJetzt = new \DateTime('now', new \DateTimeZone('Europe/Berlin'));
  498.         $jetztUS $datumJetzt->format("Y-m-d H:i:s");
  499.         $termine null;
  500.         if ($schulungen != null) {
  501.             $terminIDs = [];
  502.             foreach ($schulungen as $schulung) {
  503.                 $alleTermine = [];
  504.                 foreach ($schulung->getSchulungstermine() as $termin) {
  505.                     $tmpTermin['terminId'] = $termin->getId();
  506.                     if ($termin->getAnmeldeschluss() == null) {
  507.                         if ($schulung->getSchulungsart()->getId() == 5) {
  508.                             $tmpTermin['datum'] = $termin->getBis()->format('Y-m-d H:i:s');
  509.                         } else {
  510.                             $tmpTermin['datum'] = $termin->getVon()->format('Y-m-d H:i:s');
  511.                         }
  512.                     } else {
  513.                         $tmpTermin['datum'] = $termin->getAnmeldeschluss()->format('Y-m-d H:i:s');
  514.                     }
  515.                     $alleTermine[] = $tmpTermin;
  516.                 }
  517.                 $key_values array_column($alleTermine'datum');
  518.                 array_multisort($key_valuesSORT_ASC$alleTermine);
  519.                 foreach ($alleTermine as $termin) {
  520.                     if ($schulung->getSchulungsart()->getId() == || $schulung->getSchulungsart()->getId() == 4) {
  521.                         $terminIDs[] = $termin['terminId'];
  522.                         break;
  523.                     } else {
  524.                         if ($termin['datum'] >= $jetztUS) {
  525.                             $terminIDs[] = $termin['terminId'];
  526.                             /*break;*/
  527.                         }
  528.                     }
  529.                 }
  530.             }
  531.             $termine $schulungsTermineRepository->findBy(['id' => $terminIDs], ['von' => 'DESC']);
  532.         }
  533.         $entfernungen = [];
  534.         if ($this->getUser()?->getUserProfil() != null && $termine != null) {
  535.             foreach ($termine as $termin) {
  536.                 if ($termin->getGoogleLen() != null) {
  537.                     $lat 0;
  538.                     $len 0;
  539.                     if ($this->getUser()->getUserProfil()->getGoogleLat() != null) {
  540.                         $lat $this->getUser()->getUserProfil()->getGoogleLat();
  541.                         $len $this->getUser()->getUserProfil()->getGoogleLen();
  542.                     } else {
  543.                         if ($this->getUser()->getFirmenprofil() != null && $this->getUser()->getFirmenprofil()->getGoogleLat() != null) {
  544.                             $lat $this->getUser()->getFirmenprofil()->getGoogleLat();
  545.                             $len $this->getUser()->getFirmenprofil()->getGoogleLen();
  546.                         }
  547.                     }
  548.                     if ($lat != 0) {
  549.                         $entfernungInMeter $googleMapsController->vincentyGreatCircleDistance($lat$len$termin->getGoogleLat(), $termin->getGoogleLen());
  550.                         $entfernung = [];
  551.                         $entfernung['terminId'] = $termin->getId();
  552.                         $entfernung['km'] = round($entfernungInMeter 10002);
  553.                         $entfernungen[] = $entfernung;
  554.                     }
  555.                 }
  556.             }
  557.         }
  558.         $firmen $firmenprofilRepository->findBy(['id' => $arr_anbieter]);
  559.         $ergebnis = [];
  560.         $ergebnis["schulungstermine"] = $this->render('user/start/seminarergebnisse.html.twig', [
  561.             'filter' => $filter,
  562.             'termine' => $termine,
  563.             'entfernungen' => $entfernungen,
  564.             'firmen' => $firmen,
  565.         ])->getContent();
  566.         $ergebnis["suchfilter"] = $this->render('user/start/filter.html.twig', [
  567.             'filter' => $filter,
  568.             'schulungsarten' => $schulungsArtRepository->findBy(['id' => $arr_schulungsart]),
  569.             'branchen' => $branchenRepository->findBy(['id' => $arr_branche]),
  570.             'kategorien' => $kategorienRepository->findBy(['id' => $arr_kategorie]),
  571.             'themen' => $konfiguratorThemenRepository->findBy(['id' => $arr_thema]),
  572.             'zielgruppen' => $zielgruppeRepository->findBy(['id' => $arr_zielgruppe]),
  573.             'firmen' => $firmen,
  574.             'restAnzeige' => $restAnzeige,
  575.         ])->getContent();
  576.         $ergebnis["seminarfilter"] = $filter;
  577.         return new JsonResponse($ergebnis);
  578.     }
  579.     #[
  580.         Route('/user/blog/{id}'name'user_blog')]
  581.     public function user_blog($idFirmenBlogRepository $firmenBlogRepository): Response
  582.     {
  583.         $meineFirmenId $this->getUser()?->getFirmenProfil()?->getId();
  584.         $blog $firmenBlogRepository->findOneBy(['id' => $id]);
  585.         if ($blog->getAktiv() == && $blog->getFirma()->getId() != $meineFirmenId) {
  586.             return $this->redirectToRoute('user_start');
  587.         }
  588.         return $this->render('user/start/blog_ansehen.html.twig', [
  589.             'blog' => $blog,
  590.         ]);
  591.     }
  592.     #[Route('/user/gast_favoriten'name'user_gast_favoriten'methods: ['GET'])]
  593.     public function user_gast_favoriten(FirmenprofilRepository  $firmenprofilRepository,
  594.                                         UserFavoritenRepository $userFavoritenRepository): Response
  595.     {
  596.         return $this->render('user/start/gast_favoriten.html.twig', [
  597.             'favoriten' => $userFavoritenRepository->findBy(['session_id' => $this->session->getId()]),
  598.             'firmenprofile' => $firmenprofilRepository->findAll(),
  599.         ]);
  600.     }
  601.     // Bild einbinden aus dem var Ordner mit Berechtigungsabfrage
  602.     #[Route('/firmenlogo/{id}'name'firmenlogo_anzeigen'methods: ['GET'])]
  603.     public function firmenlogo($idFirmenprofilRepository $firmenprofilRepository): Response
  604.     {
  605.         $firmenprofil $firmenprofilRepository->findOneBy(['id' => $id]);
  606.         $filePath $this->getParameter('admin_ordner') . '/logo/' $id '/' $firmenprofil->getLogo();
  607.         //return new JsonResponse("", 403);
  608.         return new BinaryFileResponse($filePath);
  609.     }
  610.     // Bild einbinden aus dem var Ordner mit Berechtigungsabfrage
  611.     #[Route('user/profilbild/laden/{id}'name'user_profilbild_laden'methods: ['GET'])]
  612.     public function meinProfilbild($idUserProfilRepository $userProfilRepository): Response
  613.     {
  614.         if ($id == 0) {
  615.             $filePath $this->getParameter('user_ordner') . '/0/profilbild/kein_user.png';
  616.         } else {
  617.             $userProfil $userProfilRepository->findOneBy(['user' => $id]);
  618.             $filePath $this->getParameter('user_ordner') . '/' $id '/profilbild/' $userProfil->getProfilbild();
  619.         }
  620.         //return new JsonResponse("", 403);
  621.         return new BinaryFileResponse($filePath);
  622.     }
  623.     #[Route('/dateien/{firmaId}/{dateiname}'name'oeffentliche_dateien_anzeigen'methods: ['GET'])]
  624.     public function oeffentliche_dateien_anzeigen($firmaId$dateiname,
  625.                                                   FirmenDateienRepository $firmenDateienRepository): Response
  626.     {
  627.         $datei $firmenDateienRepository->findOneBy(['firma' => $firmaId'speichername' => $dateiname]);
  628.         $filePath $this->getParameter('admin_ordner') . '/dateimanager/' $datei->getFirma()->getId() . '/' $datei->getSpeichername();
  629.         //return new JsonResponse("", 403);
  630.         return new BinaryFileResponse($filePath);
  631.     }
  632.     #[Route('/campus_online_statistik'name'campus_online_statistik')]
  633.     public function campus_online_statistik(AllgemeineFunktionenController $allgemeineFunktionenController): Response
  634.     {
  635.         return $allgemeineFunktionenController->getOnlineStatistik();
  636.     }
  637. }