{{--
Page Acheter — portage fidele de maquettes/Acheter.dc.html.
Donnees fournies par AcheterController@index :
- $biens : biens filtres/tries (deja calcules par le CRM, voir
CrmClientInterface::biens())
- $nombreBiens : count($biens)
- $communes : referentiel des 262 communes wallonnes, indexe par
cle normalisee (cle => ['nom','cle','province','d'],
voir resources/data/communes-wallonie.php)
- $comptesParCommune : nombre de biens par commune sur la liste COMPLETE
(non filtree), comme les compteurs de la carte de
la maquette qui ne dependent pas des filtres actifs
- $provinces : cle => libelle (5 provinces wallonnes, utilise pour
grouper la liste de communes et pour le filtre
provinces[] conserve en compatibilite, voir
AcheterController)
- $types : cle => libelle (select "Type de bien")
- $disponibilites : cle => libelle (select "Disponibilite")
- $tris : cle => libelle (select "Trier par")
- $filtres : valeurs normalisees pour pre-remplir le formulaire
(localite, budget_max, type, chambres_min,
disponibilite, provinces[], communes[], tri)
Filtres en GET vers route('acheter') : rechargement serveur complet
(pas d'AJAX), conforme a la consigne du lot.
NEWSLETTER : dans la maquette (bloc "NEWSLETTER" de Acheter.dc.html),
le champ email + bouton "Recevoir les nouveautes" ne sont relies a aucun
on-submit dans DCLogic (purement visuel, aucune action reelle dans la
source). Aucun endpoint backend d'inscription newsletter n'existe dans ce
lot (StoreMessageContactRequest exige telephone + type_besoin, semantique
differente). Le bloc est donc reproduit a l'identique visuellement mais
reste non fonctionnel, fidele au comportement de la maquette source.
A signaler si une vraie inscription newsletter est souhaitee.
--}}
@extends('layouts.site', ['active' => 'acheter'])
@section('titre', 'Acheter - Biome Constructions')
@php
$localite = $filtres['localite'];
$budgetMax = (int) $filtres['budget_max'];
$typeActif = $filtres['type'];
$chambresMin = (int) $filtres['chambres_min'];
$dispoActive = $filtres['disponibilite'];
$provincesActives = $filtres['provinces'];
$communesActives = $filtres['communes'];
$triActif = $filtres['tri'];
$plafondBudget = 1000000;
$hasFiltres = $localite !== ''
|| $provincesActives !== []
|| $communesActives !== []
|| $budgetMax < $plafondBudget
|| $typeActif !== 'all'
|| $chambresMin > 0
|| $dispoActive !== 'all';
$fmtEuro = static fn (int $n): string => number_format($n, 0, ',', '.').' €';
$budgetLabel = $budgetMax >= $plafondBudget ? '1.000.000 € et +' : $fmtEuro($budgetMax);
$countLabel = $nombreBiens.' '.($nombreBiens > 1 ? 'biens' : 'bien');
// Liste ACTIONNABLE : uniquement les communes ayant au moins un bien
// (les 262 completes restent dans le SVG plus bas), groupees par
// province (cle province => [cle commune => nom commune]), triees par
// ordre alphabetique du nom dans chaque groupe. Les 262 communes ne sont
// jamais toutes listees ici (pas de sens commercial).
$communesParProvince = [];
foreach ($communes as $cleCommune => $commune) {
if (($comptesParCommune[$cleCommune] ?? 0) < 1) {
continue;
}
$communesParProvince[$commune['province']][$cleCommune] = $commune['nom'];
}
foreach ($communesParProvince as $cleProvince => $liste) {
asort($communesParProvince[$cleProvince]);
}
@endphp
@section('contenu')
Cliquez sur le cœur d'un bien pour l'ajouter à vos favoris, puis retrouvez-les ici.
Voir tous les biens