menu latéral ville
This commit is contained in:
parent
f4c5e048ff
commit
2e459122b5
11 changed files with 1008 additions and 236 deletions
|
@ -1007,6 +1007,101 @@ class PublicController extends AbstractController
|
|||
return $response;
|
||||
}
|
||||
|
||||
#[Route('/rss/city/{insee_code}/demandes', name: 'app_public_rss_city_demandes')]
|
||||
public function rssCityDemandes(string $insee_code): Response
|
||||
{
|
||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
|
||||
if (!$stats) {
|
||||
throw $this->createNotFoundException('Ville non trouvée');
|
||||
}
|
||||
|
||||
// Récupérer les demandes pour cette ville
|
||||
$demandes = $this->entityManager->getRepository(Demande::class)
|
||||
->createQueryBuilder('d')
|
||||
->where('d.insee = :insee')
|
||||
->setParameter('insee', $insee_code)
|
||||
->orderBy('d.createdAt', 'DESC')
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
$content = $this->renderView('public/rss/city_demandes.xml.twig', [
|
||||
'demandes' => $demandes,
|
||||
'city' => $stats,
|
||||
'base_url' => $this->getParameter('router.request_context.host'),
|
||||
]);
|
||||
|
||||
$response = new Response($content);
|
||||
$response->headers->set('Content-Type', 'application/rss+xml');
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
#[Route('/rss/city/{insee_code}/themes', name: 'app_public_rss_city_themes')]
|
||||
public function rssCityThemes(string $insee_code): Response
|
||||
{
|
||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
|
||||
if (!$stats) {
|
||||
throw $this->createNotFoundException('Ville non trouvée');
|
||||
}
|
||||
|
||||
// Récupérer les changements thématiques pour cette ville
|
||||
$followups = $stats->getCityFollowUps();
|
||||
$themeChanges = [];
|
||||
|
||||
foreach ($followups as $followup) {
|
||||
$name = $followup->getName();
|
||||
if (str_ends_with($name, '_count')) {
|
||||
$type = substr($name, 0, -6);
|
||||
if (!isset($themeChanges[$type])) {
|
||||
$themeChanges[$type] = [];
|
||||
}
|
||||
$themeChanges[$type][] = $followup;
|
||||
}
|
||||
}
|
||||
|
||||
// Trier les changements par date pour chaque thème
|
||||
foreach ($themeChanges as &$changes) {
|
||||
usort($changes, function($a, $b) {
|
||||
return $b->getDate() <=> $a->getDate();
|
||||
});
|
||||
}
|
||||
|
||||
$content = $this->renderView('public/rss/city_themes.xml.twig', [
|
||||
'themeChanges' => $themeChanges,
|
||||
'city' => $stats,
|
||||
'base_url' => $this->getParameter('router.request_context.host'),
|
||||
'followup_labels' => \App\Service\FollowUpService::getFollowUpThemes(),
|
||||
]);
|
||||
|
||||
$response = new Response($content);
|
||||
$response->headers->set('Content-Type', 'application/rss+xml');
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
#[Route('/city/{insee_code}/demandes', name: 'app_public_city_demandes')]
|
||||
public function cityDemandes(string $insee_code): Response
|
||||
{
|
||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
|
||||
if (!$stats) {
|
||||
throw $this->createNotFoundException('Ville non trouvée');
|
||||
}
|
||||
|
||||
// Récupérer les demandes pour cette ville
|
||||
$demandes = $this->entityManager->getRepository(Demande::class)
|
||||
->createQueryBuilder('d')
|
||||
->where('d.insee = :insee')
|
||||
->setParameter('insee', $insee_code)
|
||||
->orderBy('d.createdAt', 'DESC')
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
return $this->render('public/city_demandes.html.twig', [
|
||||
'demandes' => $demandes,
|
||||
'city' => $stats,
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/cities', name: 'app_public_cities')]
|
||||
public function cities(): Response
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue