src/Controller/DefaultController.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\DefaultStreets;
  4. use App\Entity\DefaultZip;
  5. use App\Entity\User;
  6. use App\Repository\DefaultStreetsRepository;
  7. use App\Repository\DefaultZipRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\Filesystem\Filesystem;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  18. use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
  19. use Symfony\Component\Serializer\Serializer;
  20. class DefaultController extends AbstractController
  21. {
  22.     public $uploadPath;
  23.     public $em;
  24.     public function __construct(string $uploadPath,EntityManagerInterface $entityManager){
  25.         $this->em $entityManager;
  26.         $this->uploadPath $uploadPath;
  27.     }
  28.     /**
  29.      * @Route("/home", name="app_homepage")
  30.      * @IsGranted("ROLE_USER")
  31.      */
  32.     public function index(): Response
  33.     {
  34.         return $this->render('default/index.html.twig', [
  35.             'title' => 'Dashboard',
  36.             'css' => 'baseElements/dashbordcss.html.twig',
  37.             'js' =>'baseElements/dashbordjs.html.twig',
  38.         ]);
  39.     }
  40.     /**
  41.      * @Route("/", name="app_landing")
  42.      */
  43.     public function default(Request $request): Response
  44.     {
  45.         return $this->render('landing.html.twig', [
  46.             'controller_name' => 'DefaultController',
  47.         ]);
  48.     }
  49.     /**
  50.      * @param Request $request
  51.      * @Route("/contactform")
  52.      */
  53.     public function contactForm(Request $request){
  54.         dd($request);
  55.         return new Response('success');
  56.     }
  57.     /**
  58.      * @Route ("/addadmin")
  59.      * @IsGranted("ROLE_APPADMIN")
  60.      */
  61.     public function addAdmin(UserPasswordHasherInterface $passwordHasher,EntityManagerInterface $manager){
  62.         $user = new User();
  63.         $user->setEmail('admin@admin.de');
  64.         $user->setDeleted(false);
  65.         $user->setActive(true);
  66.         $user->setFirstName("Axel");
  67.         $user->setLastName("Obermann");
  68.         $user->setRoles(["ROLE_ADMIN","ROLE_APPADMIN"]);
  69.         $user->setPassword($passwordHasher->hashPassword($user,"engage"));
  70.         $manager->persist($user);
  71.         $manager->flush();
  72.         dd('jau');
  73.     }
  74.     /**
  75.      * @Route ("/default/get/globalCities")
  76.      */
  77.     public function getCities(Request $request,DefaultZipRepository $defaultZipRepository){
  78.         $cities $defaultZipRepository->findBy(['zip' => $request->get('plz')] );
  79.         $serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new
  80.         JsonEncoder()));
  81.         $cities $serializer->serialize($cities,'json');
  82.         return new Response($cities);
  83.     }
  84.     /**
  85.      * @param Request $request
  86.      * @param DefaultStreetsRepository $defaultStreetsRepository
  87.      * @Route ("/default/get/globalStreets")
  88.      */
  89.     public function getGlobalStreets(Request $request,DefaultStreetsRepository $defaultStreetsRepository){
  90.         $streets $defaultStreetsRepository->findBy(['zip' => $request->get('plz')]);
  91. //dd($streets);
  92.         $serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new
  93.         JsonEncoder()));
  94.         $streets $serializer->serialize($streets,'json');
  95.         return new Response($streets);
  96.         //dd($streets);
  97.     }
  98.     /**
  99.      * @param Request $request
  100.      * @return mixed
  101.      * @Route ("/getStreets")
  102.      */
  103.     public function globalGetStreets(Request $request,DefaultZipRepository $defaultZipRepository){
  104.         //dd($request);
  105.         ini_set("auto_detect_line_endings"true);
  106.         ini_set('memory_limit''3G');
  107.         ini_set('max_execution_time'5000);
  108.         $zips $defaultZipRepository->findAll();
  109.         //dd($zips);
  110.         $counter 0;
  111.         $filecounter 0;
  112.         $fs = new Filesystem();
  113.         $fs->dumpFile($this->uploadPath "/strassen.sql"'');
  114.         foreach ($zips as $zip){
  115.             $curl curl_init();
  116.             curl_setopt_array($curl, array(
  117.                 CURLOPT_URL => 'https://swt.joulesapp.de/service/streets?zip='.$zip->getZip().'&city="'.urlencode($zip->getTown()).'"',
  118.                 CURLOPT_RETURNTRANSFER => true,
  119.                 CURLOPT_ENCODING => '',
  120.                 CURLOPT_MAXREDIRS => 10,
  121.                 CURLOPT_TIMEOUT => 0,
  122.                 CURLOPT_FOLLOWLOCATION => true,
  123.                 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  124.                 CURLOPT_CUSTOMREQUEST => 'GET',
  125.                 CURLOPT_HTTPHEADER => array(
  126.                     'API-KEY: 41e8c86729c737ef90ad4184bb5152bf',
  127.                     'Cookie: lang=de; session=jroh26d8kqdlit4t5af6k3clek'
  128.                 ),
  129.             ));
  130.             $response curl_exec($curl);
  131.             $streets json_decode($response,true);
  132.             if ($streets != "[]"){
  133.                 $insertline "INSERT INTO `default_streets` (`zip`, `street`) VALUES ";
  134.                 $fs->appendToFile($this->uploadPath "/strassen.sql"$insertline PHP_EOL);
  135.                 foreach ($streets as $street){
  136.                     $valueline "('" .$zip->getZip() . "','" str_replace("'","\'",$street) . "')";
  137.                     if ($filecounter == 288) {
  138.                         $valueline .= ";";
  139.                         $filecounter 0;
  140.                         $fs->appendToFile($this->uploadPath "/strassen.sql"$valueline PHP_EOL);
  141.                         $fs->appendToFile($this->uploadPath "/strassen.sql"$insertline PHP_EOL);
  142.                     } else {
  143.                         $valueline .= ",";
  144.                         $fs->appendToFile($this->uploadPath "/strassen.sql"$valueline PHP_EOL);
  145.                         $filecounter++;
  146.                     }
  147.                     $counter++;
  148.                 }
  149.             }
  150.         }
  151.         dd();
  152.         return $streets;
  153.     }
  154.     /**
  155.      * @param Request $request
  156.      * @Route ("/test")
  157.      */
  158.     public function test(Request $request){
  159.         ini_set("auto_detect_line_endings"true);
  160.         ini_set('memory_limit''3G');
  161.         ini_set('max_execution_time'5000);
  162.         //$uploadedFile = $request->files->get("upload");
  163.         //$test = $uploaderHelper->uploadImportPreisFile($uploadedFile);
  164.         $handle fopen($this->uploadPath "/plz.csv""r");
  165.         while (($line fgets($handle)) !== false) {
  166.             $parts explode(";"$line);
  167.             $plz = new DefaultZip();
  168.             $plz->setZip($parts[3]);
  169.             $plz->setTown($parts[2]);
  170.             $plz->setCounty($parts[4]);
  171.             $plz->setRegion($parts[5]);
  172.             $this->em->persist($plz);
  173.             $this->em->flush();
  174.             //dump($parts);
  175.         }
  176.         dd();
  177.     }
  178. }