<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;

#[Route('/map')]
class MapController extends AbstractController
{
    // Produit le contenu de la popup (quand on clique sur un tracé issu d’overpass)
    #[Route('/popup', name: 'app_map_popup')]
    public function popup(Request $request): Response
    {
        // Grosso modo, on récupère les données de la feature correspondante
        // Cf `assets/controllers/map_controller.js`
        $element = json_decode($request->query->get('element'), true);

        $josmCommands = [
            'imagery' => [
                'id' => 'osmfr',
            ],
        ];

        // TODO dans le cas d’un nœud il n’y a pas de bounds mais on doit
        // pouvoir trouver les coins d’une bbox autour sans trop de difficultés
        if (isset($element['bounds']) and isset($element['type'])) {
            $josmCommands['load_and_zoom'] = [
                'bottom' => $element['bounds']['minlat'],
                'top' => $element['bounds']['maxlat'],
                'left' => $element['bounds']['minlon'],
                'right' => $element['bounds']['maxlon'],
                'select' => sprintf('%s%d', $element['type'], $element['id']),
            ];
        }

        return $this->render('partials/_overpass-element-popup.html.twig', [
            'element' => $element,
            'josmCommands' => json_encode($josmCommands),
        ]);
    }
}
