{{--
Questionnaire METIER d'un sous-traitant (electricien, chauffage/sanitaire).
Rendu GENERIQUE : toute la structure vient de
config/questionnaires-metier.php, lue via
App\Services\Partenaires\SpecificationQuestionnaire. Ajouter un champ a la
config l'affiche ici et le valide cote serveur, sans toucher a cette vue.
Navigation entre etapes : reutilise le socle du formulaire partenaire
(public/js/site.js::initFormulairePartenaireEtapes) — memes attributs
data-*, donc NE PAS LES RENOMMER. Sans JavaScript, toutes les etapes
restent visibles et le formulaire s'envoie d'un bloc.
Cette page n'est pas dans la navigation du site : on y arrive par un lien
personnalise. Elle n'est donc pas indexable (noindex pose ci-dessous).
--}}
@extends('layouts.site')
@section('titre', 'Questionnaire '.$specification->libelle().' - Biome Constructions')
@section('meta')
{{-- Page atteinte par lien prive : jamais dans un index. --}}
@endsection
@section('contenu')
@php
$etapes = $specification->etapes();
$clesParEtape = $specification->clesParEtape();
$champsTous = $specification->champs();
// Valeurs a afficher : la saisie en cours (apres une erreur) prime sur
// ce qui est deja enregistre.
$valeur = function (string $cle) use ($reponses) {
return old('reponses.'.$cle, $reponses[$cle] ?? null);
};
// Valeurs courantes de TOUS les champs, calculees une fois : elles
// servent a evaluer les conditions d'affichage cote serveur (le JS
// reprend le relais ensuite).
$valeursActuelles = [];
foreach (array_keys($champsTous) as $cleChamp) {
$valeursActuelles[$cleChamp] = $valeur($cleChamp);
}
$afficherErreurs = $errors->hasAny(array_map(fn ($c) => 'reponses.'.$c, array_keys($champsTous)));
$afficherSucces = (bool) session('succes') && ! $afficherErreurs;
// Premiere etape en erreur, pour rouvrir le formulaire au bon endroit.
$etapeErreur = 1;
foreach ($clesParEtape as $numero => $cles) {
if ($errors->hasAny(array_map(fn ($c) => 'reponses.'.$c, $cles))) {
$etapeErreur = $numero;
break;
}
}
// Styles reprises du formulaire partenaire, pour que les deux
// formulaires publics se ressemblent.
$bordure = fn (string $cle): string => $errors->has('reponses.'.$cle) ? '#D64545' : '#DCE3EC';
$styleChamp = fn (string $cle): string => 'width:100%;box-sizing:border-box;height:50px;border:1.5px solid '.$bordure($cle).';border-radius:9px;padding:0 14px;font-family:var(--police-texte);font-size:15px;outline:none;color:var(--couleur-texte-titre-carte);background:#fff;';
$styleErreur = 'display:block;color:#D64545;font-size:12px;margin-top:5px;';
$styleLabel = 'display:block;font-family:var(--police-texte);font-size:14px;font-weight:600;color:var(--couleur-texte-titre-carte);margin-bottom:6px;';
$styleAide = 'display:block;font-size:12.5px;color:#9AA6B6;margin-top:4px;';
$styleFieldset = fn (string $cle): string => 'border:1.5px solid '.$bordure($cle).';border-radius:9px;padding:12px 16px 14px;margin:0;min-width:0;';
$styleLegende = 'padding:0 6px;font-family:var(--police-texte);font-size:14px;font-weight:600;color:var(--couleur-texte-titre-carte);';
$styleCase = 'display:flex;align-items:center;gap:9px;font-family:var(--police-texte);font-size:14.5px;color:var(--couleur-texte-titre-carte);cursor:pointer;';
$styleInputCase = 'width:17px;height:17px;flex:none;accent-color:var(--couleur-bleu-principal);cursor:pointer;';
$styleBoutonPrincipal = 'display:flex;align-items:center;justify-content:center;gap:9px;background:var(--couleur-bleu-principal);color:#fff;border:none;border-radius:10px;height:54px;padding:0 26px;font-family:var(--police-titres);font-size:16px;font-weight:600;cursor:pointer;';
$styleBoutonSecondaire = 'display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;color:var(--couleur-texte-titre-carte);border:1.5px solid #DCE3EC;border-radius:10px;height:54px;padding:0 22px;font-family:var(--police-titres);font-size:15px;font-weight:600;cursor:pointer;';
@endphp
Partenaires & sous-traitants
Questionnaire {{ $specification->libelle() }}
@if ($candidature->societe)
{{ $candidature->societe }} —
@endif
Ces informations nous permettent de vous proposer les chantiers qui correspondent
vraiment à votre façon de travailler.