{{-- Page Contact — portage fidele de maquettes/Contact.dc.html. Page statique cote donnees (aucune variable fournie par ContactController, contenu identique a la maquette). Coordonnees issues de config('site.*'). Formulaire ADAPTATIF a 3 branches selon le besoin selectionne (maison / terrain / question), bascule en JS vanilla (initBrancheFormulaireContact, voir public/js/site.js) : les 3 jeux de champs sont dans le DOM, un seul jeu visible a la fois. - Branches "maison" et "question" => POST route('leads.contact.store') avec type_besoin (StoreMessageContactRequest). - Branche "terrain" => reutilise le composant partage resources/views/components/formulaire-terrain.blade.php (2 etapes), POST route('leads.terrain.store') avec origine=contact_section. Le formulaire terrain existe aussi en modale (origine=contact_modale), declenchee par les CTA "Etre rappele"... non, plus precisement par le CTA "Vendre mon terrain" du hero et le bloc "Je souhaite vendre un terrain" des 3 acces rapides (openTerrain dans la maquette). Modale "etre rappele" => x-modale-lead type="rappel" (bien-id null), POST route('leads.info-bien.store') avec type=rappel. Apres soumission invalide : la bonne branche du formulaire standard se rouvre via old('type_besoin') ; si c'est la branche terrain qui a echoue, old('origine') vaut contact_section ou contact_modale et la bonne instance du formulaire terrain se rouvre (voir formulaire-terrain.blade.php). Apres soumission reussie : MessageContactController flashe session('succes_origine') = 'contact_maison'|'contact_question', et LeadTerrainController flashe session('succes_origine') = 'contact_section'|'contact_modale' (ou 'terrain_section'|'terrain_modale' si le succes vient de l'autre page, non pertinent ici mais gere par robustesse). C'est la source PRIORITAIRE utilisee ci-dessous pour determiner $besoinInitial et pour l'affichage de la confirmation standard, ce qui permet de rouvrir la bonne branche (et la bonne instance section/modale du formulaire terrain, y compris la reouverture de la modale si c'est elle qui a soumis) avec le message contextualise correspondant, sans ambiguite. Carte/plan d'acces : pas d'image reelle fournie pour ce lot (bloc image-slot "Carte — Gedinne" dans la maquette), reproduit en placeholder neutre. A confirmer aupres du chef de projet (ex: integration Google Maps ulterieure). --}} @extends('layouts.site', ['active' => 'contact']) @section('titre', 'Contact - Biome Constructions') @php // Besoin initial de la branche standard, dans l'ordre de priorite // suivant : // 1. session('succes_origine') apres un succes (source fiable flashee // par MessageContactController / LeadTerrainController) : rouvre la // branche exacte qui a soumis, avec sa confirmation contextualisee. // 2. old('origine') / old('type_besoin') apres une erreur de validation // (rouvre la branche qui a echoue). // 3. 'maison' par defaut, comme dans la maquette (state.need = 'maison'). $succesOrigine = session('succes_origine'); $besoinInitial = 'maison'; if ($succesOrigine === 'contact_section' || $succesOrigine === 'contact_modale') { $besoinInitial = 'terrain'; } elseif ($succesOrigine === 'contact_maison' || $succesOrigine === 'contact_question') { $besoinInitial = str_replace('contact_', '', $succesOrigine); } elseif (old('origine') === 'contact_section' || old('origine') === 'contact_modale') { $besoinInitial = 'terrain'; } elseif (old('type_besoin')) { $besoinInitial = old('type_besoin'); } $coords = [ ['titre' => 'Par téléphone', 'valeur' => config('site.telephone'), 'cta' => 'Appeler maintenant', 'href' => 'tel:'.config('site.telephone_lien'), 'icone' => 'M6.5 4h-2A1.5 1.5 0 0 0 3 5.5C3 13.5 10.5 21 18.5 21A1.5 1.5 0 0 0 20 19.5v-2a1.5 1.5 0 0 0-1.2-1.47l-2.5-.5a1.5 1.5 0 0 0-1.5.66l-.7 1.05A11.3 11.3 0 0 1 7.3 12.9l1.05-.7a1.5 1.5 0 0 0 .66-1.5l-.5-2.5A1.5 1.5 0 0 0 6.5 4Z'], ['titre' => 'Par e-mail', 'valeur' => config('site.email'), 'cta' => 'Envoyer un e-mail', 'href' => 'mailto:'.config('site.email'), 'icone' => 'M3 5h18v14H3zM3 6l9 7 9-7'], ['titre' => 'Nos bureaux', 'valeur' => config('site.adresse.ligne1')."\n".config('site.adresse.ligne2'), 'cta' => "Voir l'itinéraire", 'href' => '#itineraire', 'icone' => 'M12 21s7-6.2 7-11a7 7 0 1 0-14 0c0 4.8 7 11 7 11Z'], ]; $acces = [ ['titre' => 'Je cherche une maison', 'texte' => 'Découvrez nos maisons neuves disponibles et trouvez celle qui vous correspond.', 'cta' => 'Voir les maisons', 'href' => route('acheter'), 'icone' => 'M3 11.2 12 4l9 7.2M5.4 10.2V20h13.2v-9.8'], ['titre' => 'Je souhaite vendre un terrain', 'texte' => 'Nous étudions votre terrain et vous faisons une proposition sans engagement.', 'cta' => 'Faire analyser mon terrain', 'icone' => 'M12 21s7-6.2 7-11a7 7 0 1 0-14 0c0 4.8 7 11 7 11ZM12 12.4a2.4 2.4 0 1 0 0-4.8 2.4 2.4 0 0 0 0 4.8Z'], ['titre' => "J'ai une question", 'texte' => "Notre équipe vous répond rapidement et vous conseille selon votre projet.", 'cta' => "Nous écrire", 'href' => '#contact-form', 'icone' => 'M21 11.5a8.5 8.5 0 0 1-12.2 7.6L3 21l1.9-5.8A8.5 8.5 0 1 1 21 11.5Z'], ]; $why = [ ['titre' => 'Réponse rapide', 'texte' => 'Nous vous répondons sous 24h ouvrées.'], ['titre' => 'Conseils personnalisés', 'texte' => 'Un accompagnement adapté à votre projet et vos besoins.'], ['titre' => 'Expertise locale', 'texte' => 'Spécialistes de la région et du marché immobilier wallon.'], ['titre' => 'Analyse gratuite de terrain', 'texte' => 'Vous souhaitez vendre ? Nous évaluons votre terrain sans engagement.'], ['titre' => 'Sans engagement', 'texte' => 'Toutes nos discussions restent confidentielles et sans obligation.'], ]; $budgets = ['Moins de 300.000 €', '300.000 € – 350.000 €', '350.000 € – 400.000 €', '400.000 € – 450.000 €', '450.000 € – 500.000 €', 'Plus de 500.000 €']; $sujets = ['Investissement immobilier', "Disponibilité d'un bien", 'Financement', "Demande d'informations", 'Autre']; @endphp @section('contenu') {{-- Modale "etre rappele" (generique, hors page Bien : bien-id null) --}} {{-- Modale terrain (hero "Vendre mon terrain" + bloc acces rapide) --}} {{-- HERO --}}
@php $imgHero = \App\Support\MediaSite::url($contenu->contenu('hero.image')); @endphp @if ($imgHero) Maison Biome @else @endif

Un projet immobilier ? Parlons-en.

Que vous recherchiez une maison neuve, souhaitiez vendre un terrain ou simplement obtenir des informations, notre équipe est à votre écoute.

Trouver ma maison
{{-- COORDONNEES --}}
@foreach ($coords as $c)
{!! $c['titre'] !!}
{{ $c['valeur'] }}
{!! $c['cta'] !!}
@endforeach
{{-- 3 ACCES --}}

Comment pouvons-nous vous aider ?

@foreach ($acces as $i => $a) @if ($i === 1) @else

{!! $a['titre'] !!}

{!! $a['texte'] !!}

{!! $a['cta'] !!}
@endif @endforeach
{{-- FORM --}}

Décrivez-nous votre projet

Sélectionnez votre besoin, le formulaire s'adapte pour mieux vous répondre.

{{-- Porte le besoin initial cote serveur pour le JS (voir initBrancheFormulaireContact) --}}
{{-- STANDARD : maison / question --}}
@if (session('succes') && ($succesOrigine !== null ? ($succesOrigine === 'contact_maison' || $succesOrigine === 'contact_question') : old('origine') === null))

Message envoyé !

Merci, un conseiller Biome vous recontacte sous 24h ouvrées.

@else
@csrf
@if (! old('origine')) @error('nom'){{ $message }}@enderror @endif
@if (! old('origine')) @error('prenom'){{ $message }}@enderror @endif
@if (! old('origine')) @error('email'){{ $message }}@enderror @endif
@if (! old('origine')) @error('telephone'){{ $message }}@enderror @endif
{{-- Champs specifiques a la branche "maison" --}}
@if (! old('origine')) @error('budget'){{ $message }}@enderror @endif
{{-- Champ specifique a la branche "question" --}}
@if (! old('origine')) @error('sujet'){{ $message }}@enderror @endif
@endif
{{-- TERRAIN : formulaire 2 etapes en section --}}

Pourquoi contacter Biome ?

@foreach ($why as $w)
{!! $w['titre'] !!}
{!! $w['texte'] !!}
@endforeach
{{-- CALLBACK --}}

Vous préférez être rappelé ?

Laissez-nous votre numéro et nous vous rappelons rapidement.

{{-- MAP --}}
@php // Carte OpenStreetMap du siege (coordonnees en config/site.php). // Servie sans cle ni cookie (RGPD) ; bouton vers l'app Google Maps. $carteLat = config('site.adresse.latitude'); $carteLon = config('site.adresse.longitude'); $carteBbox = ($carteLon - 0.012).','.($carteLat - 0.006).','.($carteLon + 0.012).','.($carteLat + 0.006); $carteOsm = 'https://www.openstreetmap.org/export/embed.html?bbox='.urlencode($carteBbox).'&layer=mapnik&marker='.urlencode($carteLat.','.$carteLon); // Liens Google Maps : memes coordonnees GPS exactes que la carte // OSM ci-dessus (config) -> carte et itineraire pointent tous les // deux exactement au meme endroit (le bureau). $carteMaps = 'https://www.google.com/maps/search/?api=1&query='.urlencode($carteLat.','.$carteLon); // Itineraire : URL Google Maps "directions" (format officiel // multiplateforme). Ouvre l'app Google Maps sur mobile (sinon le // web) avec un itineraire jusqu'au bureau. $carteItineraire = 'https://www.google.com/maps/dir/?api=1&destination='.urlencode($carteLat.','.$carteLon); @endphp

Venez nous rencontrer

{{ config('site.adresse.ligne1') }}
{{ config('site.adresse.ligne2') }}
Horaires
Lundi – Vendredi : 8h00 – 17h00
Calculer mon itinéraire
{{-- BANNER --}}
@php $imgBandeau = \App\Support\MediaSite::url($contenu->contenu('bandeau.image')); @endphp @if ($imgBandeau) Maison Biome @else
Maison Biome éclairée
@endif

Vous avez un projet immobilier ?

Notre équipe est à votre disposition pour en discuter et vous accompagner dans vos projets.

@endsection