@extends('layouts.dashboard') @section('title', 'Détails du Devis') @push('styles') @endpush @section('content')

Informations Générales

Numéro de devis Devis #{{ $devis->id }}
Date de demande {{ $devis->devis_requested_at ? $devis->devis_requested_at->tz(config('app.timezone'))->format('d/m/Y à H:i') : 'Date non disponible' }}
Statut {{ $devis->status === 'traite' ? 'Traité' : ($devis->status === 'en_attente' ? 'En attente' : ucfirst(str_replace('_', ' ', $devis->status))) }}
@php $answers = []; $organizedAnswers = []; if ($devis->form_data) { $formData = is_string($devis->form_data) ? json_decode($devis->form_data, true) : $devis->form_data; if (is_array($formData)) { // Format 1: answers formatées directement (nouveau format) if (isset($formData['answers']) && is_array($formData['answers']) && !empty($formData['answers'])) { $previousAnswer = null; foreach ($formData['answers'] as $formattedAnswer) { if (isset($formattedAnswer['field_title']) && isset($formattedAnswer['value'])) { $cleanTitle = preg_replace('/\{\{field:[^}]+\}\}/', '', $formattedAnswer['field_title']); $cleanTitle = preg_replace('/\*+/', '', $cleanTitle); $cleanTitle = preg_replace('/^[,\s]+/', '', $cleanTitle); $cleanTitle = trim($cleanTitle); // Si c'est une question "Pour quel montant", ajouter le contexte if (stripos($cleanTitle, 'pour quel montant') !== false && $previousAnswer) { $prevTitle = preg_replace('/\{\{field:[^}]+\}\}/', '', $previousAnswer['field_title'] ?? ''); $prevTitle = preg_replace('/\*+/', '', $prevTitle); $prevTitle = preg_replace('/^[,\s]+/', '', $prevTitle); $prevTitle = trim($prevTitle); if ($prevTitle && (stripos($prevTitle, 'souhaitez-vous') !== false || stripos($prevTitle, 'assurer') !== false)) { $cleanTitle = $prevTitle . ' - ' . $cleanTitle; } } $answers[] = [ 'field_title' => $cleanTitle ?: $formattedAnswer['field_title'], 'value' => $formattedAnswer['value'], 'field_type' => $formattedAnswer['field_type'] ?? null ]; $previousAnswer = $formattedAnswer; } } } // Format 2: raw_data avec form_response elseif (isset($formData['raw_data'])) { $rawData = $formData['raw_data']; $formResponse = $rawData['form_response'] ?? null; if ($formResponse && isset($formResponse['answers']) && is_array($formResponse['answers'])) { $rawAnswers = $formResponse['answers']; $fields = $formResponse['definition']['fields'] ?? []; $fieldsMap = []; foreach ($fields as $field) { if (isset($field['id'])) { $fieldsMap[$field['id']] = $field['title'] ?? ''; } } $previousFieldTitle = null; foreach ($rawAnswers as $rawAnswer) { $fieldId = $rawAnswer['field']['id'] ?? null; $fieldTitle = $fieldsMap[$fieldId] ?? 'Question'; $fieldTitle = preg_replace('/\{\{field:[^}]+\}\}/', '', $fieldTitle); $fieldTitle = preg_replace('/\*+/', '', $fieldTitle); $fieldTitle = preg_replace('/^[,\s]+/', '', $fieldTitle); $fieldTitle = trim($fieldTitle); if (stripos($fieldTitle, 'pour quel montant') !== false && $previousFieldTitle) { if (stripos($previousFieldTitle, 'souhaitez-vous') !== false || stripos($previousFieldTitle, 'assurer') !== false) { $fieldTitle = $previousFieldTitle . ' - ' . $fieldTitle; } } $value = null; if (isset($rawAnswer['email'])) { $value = $rawAnswer['email']; } elseif (isset($rawAnswer['text'])) { $value = $rawAnswer['text']; } elseif (isset($rawAnswer['phone_number'])) { $value = $rawAnswer['phone_number']; } elseif (isset($rawAnswer['date'])) { try { $value = \Carbon\Carbon::parse($rawAnswer['date'])->format('d/m/Y'); } catch (\Exception $e) { $value = $rawAnswer['date']; } } elseif (isset($rawAnswer['choice'])) { $value = $rawAnswer['choice']['label'] ?? ($rawAnswer['choice']['ref'] ?? null); } elseif (isset($rawAnswer['boolean'])) { $value = $rawAnswer['boolean'] ? 'Oui' : 'Non'; } elseif (isset($rawAnswer['number'])) { $value = (string)$rawAnswer['number']; } if ($value !== null) { $answers[] = [ 'field_title' => $fieldTitle, 'value' => $value, 'field_type' => $rawAnswer['type'] ?? null ]; } $previousFieldTitle = $fieldTitle; } } } } } // Organiser les réponses par catégories $categories = [ 'Véhicule' => ['marque', 'cylindrée', 'modèle', 'mise en circulation', 'propriétaire', 'véhicule', 'souhaitez'], 'Informations personnelles' => ['date de naissance', 'naissance', 'prénom', 'nom'], 'Adresse' => ['rue', 'code postal', 'ville', 'adresse', 'logement', 'numéro'], 'Situation' => ['locataire', 'propriétaire', 'hébergé', 'situation familiale', 'marié', 'célibataire', 'concubin', 'pacsé', 'divorcé', 'veuf', 'occupez'], 'Permis' => ['permis', 'obtention', 'titulaire'], 'Assurance' => ['bonus-malus', 'bonus malus', 'durée d\'assurance', 'sinistre', 'assureur', 'couverture', 'niveau', 'coefficient'], 'Options' => ['assistance', 'accessoire', 'équipement', 'montant', 'souhaitez-vous'], 'Autres' => [] ]; $organizedAnswers = []; foreach ($answers as $answer) { $cleanTitle = $answer['field_title'] ?? ''; $title = strtolower($cleanTitle); $categorized = false; foreach ($categories as $category => $keywords) { foreach ($keywords as $keyword) { if (stripos($title, $keyword) !== false) { if (!isset($organizedAnswers[$category])) { $organizedAnswers[$category] = []; } $organizedAnswers[$category][] = $answer; $categorized = true; break 2; } } } if (!$categorized) { if (!isset($organizedAnswers['Autres'])) { $organizedAnswers['Autres'] = []; } $organizedAnswers['Autres'][] = $answer; } } @endphp @if(!empty($answers)) @foreach($organizedAnswers as $category => $categoryAnswers) @if(!empty($categoryAnswers))

{{ $category }}

@foreach($categoryAnswers as $answer)
{{ $answer['field_title'] ?? 'Question' }} @if(is_array($answer['value'])) @if(isset($answer['value']['label'])) {{ $answer['value']['label'] }} @else {{ json_encode($answer['value'], JSON_UNESCAPED_UNICODE) }} @endif @else {{ $answer['value'] ?? 'N/A' }} @endif
@endforeach
@endif @endforeach @else

Aucune donnée de formulaire disponible pour ce devis.

@endif
@endsection