src/Controller/WaterQualityController.php line 92

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use w3des\AdminBundle\Service\Nodes;
  7. use w3des\AdminBundle\Entity\File;
  8. class WaterQualityController extends AbstractController
  9. {
  10. private Nodes $nodes;
  11. public function __construct(Nodes $nodes)
  12. {
  13. $this->nodes = $nodes;
  14. }
  15. /**
  16. * @Route("/jakosc-wody", name="water_quality")
  17. */
  18. public function index(Request $request)
  19. {
  20. $filterYear = $request->query->get('year');
  21. if (!$filterYear) {
  22. $request->query->set('year', date("Y"));
  23. $filterYear = $request->query->get('year');
  24. }
  25. $items = $this->nodes->getNodes('water_quality', [
  26. 'where' => [],
  27. 'locale' => $request->getLocale()
  28. ])['list'] ?? [];
  29. /**
  30. * SORTOWANIE PO POS
  31. */
  32. usort($items, function($a, $b) {
  33. return ($a->pos ?? 0) <=> ($b->pos ?? 0);
  34. });
  35. $data = [];
  36. $years = [];
  37. foreach ($items as $item) {
  38. $itemYear = $item->vars->get('year') ?? null;
  39. if ($itemYear) {
  40. $years[] = (string)$itemYear;
  41. }
  42. if ($filterYear && (string)$filterYear !== (string)$itemYear) {
  43. continue;
  44. }
  45. $contentModules = [];
  46. if (isset($item->modules['content'])) {
  47. foreach ($item->modules['content'] as $module) {
  48. $children = [];
  49. foreach ($module->children ?? [] as $child) {
  50. $vars = $child->vars;
  51. $name = $vars->has('name') ? $vars->name : 'plik';
  52. $fileObj = $vars->has('file') ? $vars->get('file') : null;
  53. if ($fileObj instanceof File) {
  54. $children[] = [
  55. 'name' => $name,
  56. 'path' => $fileObj->getPath() ?: '',
  57. ];
  58. }
  59. }
  60. if ($children) {
  61. $contentModules[] = $children;
  62. }
  63. }
  64. }
  65. $data[] = [
  66. 'title' => $item->vars->get('title') ?? '',
  67. 'year' => $itemYear,
  68. 'content_modules' => $contentModules
  69. ];
  70. }
  71. $years = array_unique($years);
  72. rsort($years);
  73. return $this->render('water_quality/index.html.twig', [
  74. 'items' => $data,
  75. 'years' => $years,
  76. 'selected_year' => $filterYear
  77. ]);
  78. }
  79. }