src/Controller/WaterQualityController.php line 22

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. $items = $this->nodes->getNodes('water_quality', [
  22. 'where' => [],
  23. 'locale' => $request->getLocale()
  24. ])['list'] ?? [];
  25. usort($items, function ($a, $b) {
  26. $yearA = (int) ($a->vars->get('year') ?? 0);
  27. $yearB = (int) ($b->vars->get('year') ?? 0);
  28. if ($yearA !== $yearB) {
  29. return $yearB <=> $yearA;
  30. }
  31. return ($a->pos ?? 0) <=> ($b->pos ?? 0);
  32. });
  33. $data = [];
  34. $years = [];
  35. foreach ($items as $item) {
  36. $itemYear = $item->vars->get('year') ?? null;
  37. if ($itemYear) {
  38. $years[] = (string) $itemYear;
  39. }
  40. if ($filterYear !== null && (string) $filterYear !== (string) $itemYear) {
  41. continue;
  42. }
  43. $contentModules = [];
  44. if (isset($item->modules['content'])) {
  45. foreach ($item->modules['content'] as $module) {
  46. $children = [];
  47. foreach ($module->children ?? [] as $child) {
  48. $vars = $child->vars;
  49. $name = $vars->has('name') ? $vars->name : 'plik';
  50. $fileObj = $vars->has('file') ? $vars->get('file') : null;
  51. if ($fileObj instanceof File) {
  52. $children[] = [
  53. 'name' => $name,
  54. 'path' => $fileObj->getPath() ?: '',
  55. ];
  56. }
  57. }
  58. if ($children) {
  59. $contentModules[] = $children;
  60. }
  61. }
  62. }
  63. $data[] = [
  64. 'title' => $item->vars->get('title') ?? '',
  65. 'year' => $itemYear,
  66. 'content_modules' => $contentModules
  67. ];
  68. }
  69. $years = array_unique($years);
  70. rsort($years);
  71. return $this->render('water_quality/index.html.twig', [
  72. 'items' => $data,
  73. 'years' => $years,
  74. 'selected_year' => $filterYear
  75. ]);
  76. }
  77. }