<?php
namespace App\Controller;
use App\Entity\DefaultStreets;
use App\Entity\DefaultZip;
use App\Entity\User;
use App\Repository\DefaultStreetsRepository;
use App\Repository\DefaultZipRepository;
use Doctrine\ORM\EntityManagerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Serializer;
class DefaultController extends AbstractController
{
public $uploadPath;
public $em;
public function __construct(string $uploadPath,EntityManagerInterface $entityManager){
$this->em = $entityManager;
$this->uploadPath = $uploadPath;
}
/**
* @Route("/home", name="app_homepage")
* @IsGranted("ROLE_USER")
*/
public function index(): Response
{
return $this->render('default/index.html.twig', [
'title' => 'Dashboard',
'css' => 'baseElements/dashbordcss.html.twig',
'js' =>'baseElements/dashbordjs.html.twig',
]);
}
/**
* @Route("/", name="app_landing")
*/
public function default(Request $request): Response
{
return $this->render('landing.html.twig', [
'controller_name' => 'DefaultController',
]);
}
/**
* @param Request $request
* @Route("/contactform")
*/
public function contactForm(Request $request){
dd($request);
return new Response('success');
}
/**
* @Route ("/addadmin")
* @IsGranted("ROLE_APPADMIN")
*/
public function addAdmin(UserPasswordHasherInterface $passwordHasher,EntityManagerInterface $manager){
$user = new User();
$user->setEmail('admin@admin.de');
$user->setDeleted(false);
$user->setActive(true);
$user->setFirstName("Axel");
$user->setLastName("Obermann");
$user->setRoles(["ROLE_ADMIN","ROLE_APPADMIN"]);
$user->setPassword($passwordHasher->hashPassword($user,"engage"));
$manager->persist($user);
$manager->flush();
dd('jau');
}
/**
* @Route ("/default/get/globalCities")
*/
public function getCities(Request $request,DefaultZipRepository $defaultZipRepository){
$cities = $defaultZipRepository->findBy(['zip' => $request->get('plz')] );
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new
JsonEncoder()));
$cities = $serializer->serialize($cities,'json');
return new Response($cities);
}
/**
* @param Request $request
* @param DefaultStreetsRepository $defaultStreetsRepository
* @Route ("/default/get/globalStreets")
*/
public function getGlobalStreets(Request $request,DefaultStreetsRepository $defaultStreetsRepository){
$streets = $defaultStreetsRepository->findBy(['zip' => $request->get('plz')]);
//dd($streets);
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new
JsonEncoder()));
$streets = $serializer->serialize($streets,'json');
return new Response($streets);
//dd($streets);
}
/**
* @param Request $request
* @return mixed
* @Route ("/getStreets")
*/
public function globalGetStreets(Request $request,DefaultZipRepository $defaultZipRepository){
//dd($request);
ini_set("auto_detect_line_endings", true);
ini_set('memory_limit', '3G');
ini_set('max_execution_time', 5000);
$zips = $defaultZipRepository->findAll();
//dd($zips);
$counter = 0;
$filecounter = 0;
$fs = new Filesystem();
$fs->dumpFile($this->uploadPath . "/strassen.sql", '');
foreach ($zips as $zip){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://swt.joulesapp.de/service/streets?zip='.$zip->getZip().'&city="'.urlencode($zip->getTown()).'"',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'API-KEY: 41e8c86729c737ef90ad4184bb5152bf',
'Cookie: lang=de; session=jroh26d8kqdlit4t5af6k3clek'
),
));
$response = curl_exec($curl);
$streets = json_decode($response,true);
if ($streets != "[]"){
$insertline = "INSERT INTO `default_streets` (`zip`, `street`) VALUES ";
$fs->appendToFile($this->uploadPath . "/strassen.sql", $insertline . PHP_EOL);
foreach ($streets as $street){
$valueline = "('" .$zip->getZip() . "','" . str_replace("'","\'",$street) . "')";
if ($filecounter == 288) {
$valueline .= ";";
$filecounter = 0;
$fs->appendToFile($this->uploadPath . "/strassen.sql", $valueline . PHP_EOL);
$fs->appendToFile($this->uploadPath . "/strassen.sql", $insertline . PHP_EOL);
} else {
$valueline .= ",";
$fs->appendToFile($this->uploadPath . "/strassen.sql", $valueline . PHP_EOL);
$filecounter++;
}
$counter++;
}
}
}
dd();
return $streets;
}
/**
* @param Request $request
* @Route ("/test")
*/
public function test(Request $request){
ini_set("auto_detect_line_endings", true);
ini_set('memory_limit', '3G');
ini_set('max_execution_time', 5000);
//$uploadedFile = $request->files->get("upload");
//$test = $uploaderHelper->uploadImportPreisFile($uploadedFile);
$handle = fopen($this->uploadPath . "/plz.csv", "r");
while (($line = fgets($handle)) !== false) {
$parts = explode(";", $line);
$plz = new DefaultZip();
$plz->setZip($parts[3]);
$plz->setTown($parts[2]);
$plz->setCounty($parts[4]);
$plz->setRegion($parts[5]);
$this->em->persist($plz);
$this->em->flush();
//dump($parts);
}
dd();
}
}