src/Controller/DefaultController.php line 128

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AvatarDTO;
  4. use App\Entity\User;
  5. use App\Entity\School;
  6. use App\Repository\CityRepository;
  7. use App\Repository\RegionRepository;
  8. use App\Repository\PrefectureRepository;
  9. use App\Repository\SchoolRepository;
  10. use App\Form\AvatarType;
  11. use App\Services\FileUploader;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\RedirectResponse;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\Security\Core\Security;
  22. use Symfony\Component\Security\Core\User\UserInterface;
  23. use Symfony\Component\HttpKernel\KernelInterface;
  24. use Symfony\Contracts\Translation\TranslatorInterface;
  25. class DefaultController extends AbstractController {
  26.     private PrefectureRepository $prefectureRepository;
  27.     private CityRepository $cityRepository;
  28.     private RegionRepository $regionRepository;
  29.     private SchoolRepository $schoolRepository;
  30.     private TranslatorInterface $translator;
  31.     public function __construct(
  32.         PrefectureRepository    $prefectureRepository,
  33.         CityRepository          $cityRepository,
  34.         RegionRepository        $regionRepository,
  35.         SchoolRepository        $schoolRepository,
  36.         TranslatorInterface     $translator
  37.     ) {
  38.         $this->prefectureRepository $prefectureRepository;
  39.         $this->cityRepository $cityRepository;
  40.         $this->regionRepository $regionRepository;
  41.         $this->schoolRepository $schoolRepository;
  42.         $this->translator $translator;
  43.     }
  44.     #[Route(path'/'name'homepage'methods: ['GET'])]
  45.     public function indexAction(Request $request): RedirectResponse {
  46.         return $this->redirectToRoute('dashboard_index');
  47.     }
  48.     #[Route(path'/rgpd_informations'name'rgpd_informations'methods: ['GET'])]
  49.     public function showRgpdInformationsAction(Request $request): Response {
  50.         try {
  51.             return $this->render('information_rgpd_' $request->getLocale() . '.html.twig');
  52.         } catch (\Exception $e) {
  53.             return $this->render('information_rgpd.html.twig');
  54.         }
  55.     }
  56.     #[Route(path'/change_profile'name'change_profile'methods: ['GET''POST'])]
  57.     #[IsGranted('ROLE_USER')]
  58.     public function newAction(
  59.         Request $request,
  60.         Security $security,
  61.         EntityManagerInterface $em,
  62.         FileUploader $fileUploader
  63.     ): RedirectResponse|Response {
  64.         $avatar = new AvatarDTO();
  65.         $form $this->createForm(AvatarType::class, $avatar);
  66.         $form->handleRequest($request);
  67.         /** @var User $user */
  68.         $user $security->getUser();
  69.         if ($form->isSubmitted() && $form->isValid()) {
  70.             $avatarDescription $form->get('file')->getData();
  71.             if ($avatarDescription) {
  72.                 $avatarDescriptionFileName $fileUploader->uploadAvatar($avatarDescription$user->getImageName());
  73.                 $user->setImageName($avatarDescriptionFileName);
  74.             }
  75.             $em->persist($user);
  76.             $em->flush();
  77.         }
  78.         return $this->render('user/avatar.html.twig', [
  79.             'avatar' => $avatar,
  80.             'form' => $form->createView(),
  81.             'username' => $user->getUserIdentifier(),
  82.         ]);
  83.     }
  84.     #[Route(path'/get_js_translation'name'get_js_translation'methods: ['GET'])]
  85.     public function getJsTranslation(Request $request): JsonResponse {
  86.         //Read xml file
  87.         $fichier $this->getParameter('kernel.project_dir') . DIRECTORY_SEPARATOR 'translations' DIRECTORY_SEPARATOR 'messages.' $request->getLocale() . '.xlf';
  88.         $contenu simplexml_load_file($fichier);
  89.         $result = array();
  90.         foreach($contenu as $files) {
  91.             foreach($files as $file)
  92.                 foreach($file as $body)
  93.                     // echo strpos($body->source,"menu.") . '<br>' ;
  94.                     if((strpos($body->source,"js.") > -) ||
  95.                        (strpos($body->source,"time.") > -) ||
  96.                        (strpos($body->source,"country.") > -) ||
  97.                        (strpos($body->source,"sectors.") > -) ||
  98.                        (strpos($body->source,"sub_sectors.") > -) ||
  99.                        (strpos($body->source,"legal_status.") > -) ||
  100.                        (strpos($body->source,"diplomas.") > -)
  101.                     ) {
  102.                         $src = (string)$body->source;
  103.                         $target str_replace("'""\"",$body->target);
  104.                         if(strlen($target) == 0) {
  105.                             $target $src;
  106.                         }
  107.                         $result[$src] = $target;
  108.                     }
  109.         }
  110.         return new JsonResponse($result);
  111.     }
  112.     #[Route(path'/getRegionsByCountry'name'get_regions_by_country'methods: ['GET'])]
  113.     public function getRegionsByCountry(Request $request): JsonResponse|Response {
  114.         $idCountry $request->query->get("countryId");
  115.         $regions = [];
  116.         $cities = [];
  117.         $regionsRepos $this->regionRepository->findByCountry($idCountry);
  118.         foreach ($regionsRepos as $region) {
  119.             $repos $this->cityRepository->findByRegion($region->getId());
  120.             foreach ($repos as $city) {
  121.                 $cities[$city->getId()] = $city->getName();
  122.             }
  123.             $regions[$region->getId()] = $this->translator->trans($region->getName());
  124.         }
  125.         return new JsonResponse(["regions"=>$regions"cities"=>$cities]);
  126.     }
  127.     #[Route(path'/getPrefecturesByRegion'name'get_prefectures_by_region'methods: ['GET'])]
  128.     public function getPrefecturesByRegion(Request $request): JsonResponse|Response {
  129.         $idRegion $request->query->get("regionId");
  130.         $prefectures[] = [];
  131.         $cities[] = [];
  132.         $prefecturesRepos $this->prefectureRepository->findByRegion($idRegion);
  133.         $citiesRepos $this->cityRepository->findByRegion($idRegion);
  134.         foreach ($citiesRepos as $city) {
  135.             $cities[$city->getId()] = $city->getName();
  136.         }
  137.         foreach ($prefecturesRepos as $prefecture) {
  138.             $prefectures[$prefecture->getId()] = $prefecture->getName();
  139.         }
  140.         return new JsonResponse(["prefectures"=>$prefectures"cities"=>$cities]);
  141.     }
  142.     #[Route(path'/getCitiesByPrefecture'name'get_cities_by_prefecture'methods: ['GET'])]
  143.     public function getCitiesByPrefecture(Request $request ): JsonResponse|Response {
  144.         $idPrefecture $request->query->get("prefectureId");
  145.         $cities[] = [];
  146.         $repos $this->cityRepository->findByPrefecture($idPrefecture);
  147.         foreach ($repos as $city) {
  148.             $cities[$city->getId()] = $city->getName();
  149.         }
  150.         return new JsonResponse(["cities"=>$cities]);
  151.     }
  152.     #[Route(path'/getCitiesByCountry'name'get_cities_by_country'methods: ['GET'])]
  153.     public function getCitiesByCountry(Request $request ): JsonResponse|Response {
  154.         $idCountry $request->query->get("countryId");
  155.         $regionsRepos $this->regionRepository->findByCountry($idCountry);
  156.         $citiesRepos = [];
  157.         foreach ($regionsRepos as $region) {
  158.             $citiesRepos array_merge($citiesRepos$this->cityRepository->findByRegion($region->getId()));
  159.         }
  160.         $cities[] = [];
  161.         foreach ($citiesRepos as $city) {
  162.             $cities[$city->getId()] = $city->getName() . '-' $this->translator->trans($city->getRegion()->getName());
  163.         }
  164.         return new JsonResponse($cities);
  165.     }
  166.     #[Route(path'/getCitiesByRegion'name'get_cities_by_region'methods: ['GET'])]
  167.     public function getCitiesByRegion(Request $request ): JsonResponse|Response {
  168.         $idRegion $request->query->get("regionId");
  169.         $citiesRepos $this->cityRepository->findByRegion($idRegion);
  170.         $cities[] = [];
  171.         foreach ($citiesRepos as $city) {
  172.             $cities[$city->getId()] = $city->getName() . '-' $this->translator->trans($city->getRegion()->getName());
  173.         }
  174.         return new JsonResponse($cities);
  175.     }
  176.     #[Route(path'/getRegionAndPrefectureByCity'name'get_region_and_prefecture_by_city'methods: ['GET'])]
  177.     public function getRegionAndPrefecturesByCity(Request $request): JsonResponse|Response {
  178.         $idCity $request->query->get("cityId");
  179.         $city $this->cityRepository->find($idCity);
  180.         $prefectureId null;
  181.         $prefectureName null;
  182.         $city->getPrefecture() ? $prefectureId $city->getPrefecture()->getId() : null;
  183.         $city->getPrefecture() ? $prefectureName $city->getPrefecture()->getName() : null;
  184.         return new JsonResponse(["regionId"=>$city->getRegion()->getId(),
  185.             "regionName"=>$city->getRegion()->getName(),
  186.             "prefectureId"=>$prefectureId,
  187.             "prefectureName"=>$prefectureName
  188.             ]);
  189.     }
  190.     #[Route(path'/getSchoolsByCountry'name'get_schools_by_country'methods: ['GET'])]
  191.     public function getSchoolsByCountry(Request $request): JsonResponse|Response {
  192.         $idCountry $request->query->get("countryId");
  193.         $schoolsRepos $this->schoolRepository->findByCountry($idCountry);
  194.         $schools = [];
  195.         foreach ($schoolsRepos as $school) {
  196.             // $schools[] = ["id"=>$school->getId(), "name"=>($school->getName(). " (" . $school->getCity()->getName()). ")"];
  197.             $schools[$school->getId()] = $school->getName(). " (" $school->getCity()->getName(). ")";
  198.         }
  199.         return new JsonResponse($schools);
  200.     }
  201.     #[Route(path'/getSchoolsByRegion'name'get_schools_by_region'methods: ['GET'])]
  202.     public function getSchoolsByRegion(Request $request): JsonResponse|Response {
  203.         $idRegion $request->query->get("regionId");
  204.         // var_dump($idRegion);die();
  205.         $schoolsRepos $this->schoolRepository->findByRegion($idRegion);
  206.         $schools = [];
  207.         foreach ($schoolsRepos as $school) {
  208.             // $schools[] = ["id"=>$school->getId(), "name"=>($school->getName(). " (" . $school->getCity()->getName()). ")"];
  209.             $schools[$school->getId()] = $school->getName(). " (" $school->getCity()->getName(). ")";
  210.         }
  211.         return new JsonResponse($schools);
  212.     }
  213.     #[Route(path'/getSchoolsByPrefecture'name'get_schools_by_prefecture'methods: ['GET'])]
  214.     public function getSchoolsByPrefecture(Request $request): JsonResponse|Response {
  215.         $idPrefecture $request->query->get("prefectureId");
  216.         $cities $this->cityRepository->findByPrefecture($idPrefecture);
  217.         $schoolsRepos = [];
  218.         foreach ($cities as $city) {
  219.             $schoolsRepos array_merge($schoolsRepos$this->schoolRepository->findBycity($city));
  220.         }
  221.         $schools = [];
  222.         foreach ($schoolsRepos as $school) {
  223.             // if (!array_key_exists('id', $schools)) {
  224.             //     $schools[] = ["id"=>$school->getId(), "name"=>($school->getName(). " (" . $school->getCity()->getName()). ")"];
  225.                 $schools[$school->getId()] = $school->getName(). " (" $school->getCity()->getName(). ")";
  226.             // }
  227.         }
  228.         return new JsonResponse($schools);
  229.     }
  230.     #[Route(path'/getSchoolsByCity'name'get_schools_by_city'methods: ['GET'])]
  231.     public function getSchoolsBycity(Request $request): JsonResponse|Response {
  232.         $idCity $request->query->get("cityId");
  233.         $schoolsRepos $this->schoolRepository->findBycity($idCity);
  234.         $schools = [];
  235.         foreach ($schoolsRepos as $school) {
  236.             // $schools[] = ["id"=>$school->getId(), "name"=>($school->getName(). " (" . $school->getCity()->getName()). ")"];
  237.             $schools[$school->getId()] = $school->getName(). " (" $school->getCity()->getName(). ")";
  238.         }
  239.         return new JsonResponse($schools);
  240.     }
  241. }