<?php
namespace App\Controller;
use App\Entity\Skoda;
use App\Services\CiselnikObci;
use App\Services\Ciselniky;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Controller\ActivityCheckController;
use App\Entity\LastActivity;
use App\Entity\User;
use Symfony\Component\HttpFoundation\File\UploadedFile;
class DefaultController extends AbstractController implements ActivityCheckController {
public function checkUser(): void {
$user = $this->getUser();
if ($user instanceof User) {
$interval = $this->getParameter('password_change_interval') ?? 30;
if ($user->getPasswordChanged() < (new \DateTime("- $interval days"))) {
$this->addFlash('danger', 'security-password-expired');
}
}
}
/**
* @Route("/save-file/{slug}", name="add-file")
*/
public function fileUploadAction(Request $request, $slug = null) {
$dir = $this->getParameter('uploads_dir');
$rootDir = $this->getParameter('uploads_root_dir');
$maxSize = 25 * 1000 * 1000;
//$allowedTypes = ['image/png', 'image/jpeg'];
$allowedExtensions = ['png', 'PNG', 'jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'pdf', 'PDF', 'txt', 'TXT', 'xls', 'xlsx', 'doc', 'docx', 'ppt', 'pptx', 'pps', 'ppsx'];
$prefix = (new \DateTime('now'))->format('ymd') . '_';
$result = [];
$files = $request->files->get('files');
if ($files) {
foreach ($files as $key => $file) {
if ($file instanceof UploadedFile && ($file->getClientSize() < $maxSize)
//&& in_array($file->getClientMimeType(), $allowedTypes)
&& in_array($file->getClientOriginalExtension(), $allowedExtensions)
) {
$fullName = uniqid($prefix) . '.' . $file->getClientOriginalExtension();
$file->move($rootDir, $fullName);
$result[$key] = [
"name" => $file->getClientOriginalName(),
"fullName" => $fullName,
"size" => $file->getClientSize(),
"type" => $file->getClientMimeType(),
"url" => $dir . '/' . $fullName,
"ext" => $file->getClientOriginalExtension(),
];
}
}
//osetrit odpoved ak je result prazdny
return new JsonResponse(['files' => $result]);
}
echo('error');
return new JsonResponse(['error' => ['message' => 'Error']]);
}
/**
* @Route("/", name="homepage")
*/
public function indexAction() {
$this->checkUser();
// return $this->redirectToRoute('uvod');
return $this->render('default/uvod.html.twig');
}
/**
* @Route("/uvod", name="uvod")
*/
public function uvodAction() {
// return $this->render('default/uvod.html.twig');
return $this->redirectToRoute('homepage');
}
/**
* @Route("/visits", name="visits")
*/
public function visitsOldAction() {
return $this->redirectToRoute('report-visits');
}
/**
* @Route("/ciselniky", name="ciselniky")
*/
public function ciselnikyAction(
Request $request,
CiselnikObci $ciselnikObci,
Ciselniky $ciselniky
) {
if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
$result = [];
if ($request->get('cis_key')) {
// $result = $this->container->get('ciselnikObci')->getActual($request->get('cis_key'), $request->get('cis_value'));
$result = $ciselnikObci->getActual($request->get('cis_key'), $request->get('cis_value'));
} elseif ($request->get('operator_value')) {
// $result = $this->container->get('ciselniky')->getOperatorData($request->get('operator_value'));
$result = $ciselniky->getOperatorData($request->get('operator_value'));
} else {
//$result = $this->container->get('ciselnikObci')->getActual('zuj', 105);
}
return new JsonResponse($result);
} else {
return $this->redirectToRoute('homepage');
}
}
/**
* @Route("/calculator/{slug}", name="calculator")
*/
public function calculatorAction($slug) {
if ($slug == 'vypocet-eai-indexu') {
return $this->redirectToRoute('riziko');
// $url = 'https://oldenviskody.enviroportal.sk/Riziko.aspx';
// $content = file_get_contents($url);
// return $this->render('calculator/test.html.twig',[
// "test" => $content
// ]);
}
//return $this->render('calculator/vypocet_stary.html.twig');
return $this->redirectToRoute('uvod');
}
/**
* @Route("/riziko", name="riziko")
*/
public function rizikoAction() {
//return $this->render('calculator/vypocet_eai_indexu.html.twig');
return $this->riskAction();
}
/**
* @Route("/risk", name="risk")
*/
public function riskAction() {
$this->checkUser();
$css = [];
$js = [];
$pathToManifest = "react/risk/build";
$manifestPath = $pathToManifest . '/asset-manifest.json';
$manifestFile = fopen($manifestPath, "r");
$content = fread($manifestFile, filesize($manifestPath));
fclose($manifestFile);
foreach (json_decode($content, true)['entrypoints'] as $fileName) {
if ((mb_strrpos($fileName, "css") === mb_strlen($fileName) - mb_strlen("css"))) {
$css[] = "/" . $pathToManifest . "/" . $fileName;
} else {
$js[] = "/" . $pathToManifest . "/" . $fileName;
}
}
return $this->render('calculator/risk.html.twig', [
"jsArr" => $js,
"cssArr" => $css
]);
}
/**
* @Route("/mapy", name="mapy")
*/
public function mapyAction() {
$this->checkUser();
// $this->addFlash('warning', "maps-not-working");
// return $this->redirectToRoute('uvod');
return $this->render('default/mapy.html.twig');
}
/**
* @Route("/ochrana-osobnych-udajov", name="gdpr")
*/
public function gdprAction() {
$this->checkUser();
return $this->render('default/gdpr.html.twig');
}
/**
* @Route("/vyhlasenie-o-pristupnosti", name="vyhlasenie")
*/
public function vyhlasenieAction() {
$this->checkUser();
return $this->render('default/vyhlasenie.html.twig');
}
/**
* @Route("/pomocnik", name="help")
*/
public function helpAction() {
$this->checkUser();
return $this->render('default/help.html.twig');
}
/**
* @Route("/cookies", name="cookies")
*/
public function cookiesAction() {
$this->checkUser();
return $this->render('default/cookies.html.twig');
}
}