<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use w3des\AdminBundle\Service\Nodes;
use w3des\AdminBundle\Entity\File;
class WaterQualityController extends AbstractController
{
private Nodes $nodes;
public function __construct(Nodes $nodes)
{
$this->nodes = $nodes;
}
/**
* @Route("/jakosc-wody", name="water_quality")
*/
public function index(Request $request)
{
$filterYear = $request->query->get('year');
if (!$filterYear) {
$request->query->set('year', date("Y"));
$filterYear = $request->query->get('year');
}
$items = $this->nodes->getNodes('water_quality', [
'where' => [],
'locale' => $request->getLocale()
])['list'] ?? [];
/**
* SORTOWANIE PO POS
*/
usort($items, function($a, $b) {
return ($a->pos ?? 0) <=> ($b->pos ?? 0);
});
$data = [];
$years = [];
foreach ($items as $item) {
$itemYear = $item->vars->get('year') ?? null;
if ($itemYear) {
$years[] = (string)$itemYear;
}
if ($filterYear && (string)$filterYear !== (string)$itemYear) {
continue;
}
$contentModules = [];
if (isset($item->modules['content'])) {
foreach ($item->modules['content'] as $module) {
$children = [];
foreach ($module->children ?? [] as $child) {
$vars = $child->vars;
$name = $vars->has('name') ? $vars->name : 'plik';
$fileObj = $vars->has('file') ? $vars->get('file') : null;
if ($fileObj instanceof File) {
$children[] = [
'name' => $name,
'path' => $fileObj->getPath() ?: '',
];
}
}
if ($children) {
$contentModules[] = $children;
}
}
}
$data[] = [
'title' => $item->vars->get('title') ?? '',
'year' => $itemYear,
'content_modules' => $contentModules
];
}
$years = array_unique($years);
rsort($years);
return $this->render('water_quality/index.html.twig', [
'items' => $data,
'years' => $years,
'selected_year' => $filterYear
]);
}
}