@extends('layouts.dashboard') @section('title', ($prospect->prospect_type ?? 'prospect') === 'client' && Route::currentRouteName() === 'portefeuille.show' ? ('Détails du client - ' . (trim(($prospect->first_name ?? '') . ' ' . ($prospect->last_name ?? '')) ?: 'Prénom NOM')) : ('Détails du Prospect - ' . (trim(($prospect->first_name ?? '') . ' ' . ($prospect->last_name ?? '')) ?: 'Prénom NOM'))) @section('page-title', '') @push('styles') @endpush @section('content')
  • Général
  • Devis
  • Contrat
  • Documents
  • Mail
  • Proposition
  • @if(($prospect->prospect_type ?? 'prospect') === 'client' && Route::currentRouteName() === 'portefeuille.show')
  • Réclamations
  • @endif
  • Échanges
  • RGPD

Informations Personnelles

Prénom
{{ $prospect->first_name ?? 'Non renseigné' }}
Nom
{{ $prospect->last_name ?? 'Non renseigné' }}
Email
{{ $prospect->email ?? 'Non renseigné' }}
Téléphone
{{ $prospect->phone ?? 'Non renseigné' }}
Date de création du profil {{ $prospect->created_at ? $prospect->created_at->tz(config('app.timezone'))->format('d/m/Y à H:i') : 'N/A' }}
Date du dernier devis @if($prospect->devis && $prospect->devis->count() > 0) {{ $prospect->devis->sortByDesc('devis_requested_at')->first()->devis_requested_at->tz(config('app.timezone'))->format('d/m/Y à H:i') }} @else Aucun devis @endif
Dernière modification {{ $prospect->updated_at ? $prospect->updated_at->tz(config('app.timezone'))->format('d/m/Y à H:i') : 'N/A' }}
Source {{ $prospect->source ?? 'Manuel' }}
@if($prospect->ambassadeur)
Ambassadeur {{ $prospect->ambassadeur->first_name }} {{ $prospect->ambassadeur->last_name }}
@endif
Nombre de devis {{ $prospect->devis ? $prospect->devis->count() : 0 }}
Statut du client
Dossier complet {{ ($prospect->dossier_complet ?? 0) ? 'Dossier complet' : 'Dossier incomplet' }}
Type

Notes internes

@csrf @method('PUT')

Devis créés

@if($prospect->devis && $prospect->devis->count() > 0)
@foreach($prospect->devis->sortByDesc('devis_requested_at') as $devis) @endforeach
Numéro de devis Date du devis Statut Actions
Devis #{{ $devis->id }} {{ $devis->devis_requested_at ? $devis->devis_requested_at->tz(config('app.timezone'))->format('d/m/Y à H:i') : 'Date non disponible' }} @if($devis->status === 'traite') Traité @elseif($devis->status === 'en_attente') En attente @else {{ ucfirst(str_replace('_', ' ', $devis->status)) }} @endif
@else

Aucun devis créé pour ce prospect.

@endif
@php $assureurOptions = ['Xenassur', 'Mutuelle des motards', 'April', 'Solly Azar']; $contractsRaw = $prospect->form_data['contracts'] ?? null; $contracts = is_array($contractsRaw) ? $contractsRaw : []; $isPortefeuilleShow = Route::currentRouteName() === 'portefeuille.show'; @endphp

Contrats

Le Type du prospect est calculé automatiquement selon les contrats (actif / résilié).

Liste des contrats

@if(count($contracts) === 0)

Aucun contrat pour le moment

@else @if($isPortefeuilleShow)
@foreach($contracts as $contract) @php $contractId = (string)($contract['id'] ?? ''); $contractAssureurRaw = (string)($contract['assureur'] ?? 'A compléter'); if (trim($contractAssureurRaw) === 'Mutuelle des mots') { $contractAssureurRaw = 'Mutuelle des motards'; } $contractAssureur = $contractAssureurRaw; $isInList = in_array($contractAssureur, $assureurOptions, true); $otherValue = $isInList ? '' : $contractAssureur; $contractDetails = (string)($contract['details'] ?? ''); $contractStatut = ($contract['statut'] ?? 'resilie') === 'actif' ? 'actif' : 'resilie'; $leftColor = $contractStatut === 'actif' ? '#6fb87d' : '#1f2937'; @endphp @endforeach
Contrat Statut Actions
{{ mb_strtoupper($contractAssureur) }}
{{ $contractDetails }}
@else
@foreach($contracts as $contract) @php $contractId = (string)($contract['id'] ?? ''); $contractAssureurRaw = (string)($contract['assureur'] ?? 'A compléter'); if (trim($contractAssureurRaw) === 'Mutuelle des mots') { $contractAssureurRaw = 'Mutuelle des motards'; } $contractAssureur = $contractAssureurRaw; $isInList = in_array($contractAssureur, $assureurOptions, true); $otherValue = $isInList ? '' : $contractAssureur; $contractDetails = (string)($contract['details'] ?? ''); $contractStatut = ($contract['statut'] ?? 'resilie') === 'actif' ? 'actif' : 'resilie'; $cardBorderColor = $contractStatut === 'actif' ? 'rgba(111, 184, 125, 0.40)' : 'rgba(31, 41, 55, 0.25)'; $cardBg = $contractStatut === 'actif' ? 'rgba(111, 184, 125, 0.12)' : 'rgba(31, 41, 55, 0.06)'; @endphp
{{ mb_strtoupper($contractAssureur) }}
{{ $contractDetails }}
@endforeach
@endif @endif

Glissez-déposez vos fichiers ici

ou

Formats acceptés : PDF, DOC, DOCX, JPG, JPEG, PNG

Documents uploadés

Aucun document uploadé pour le moment

Checklist des documents

@csrf @method('PUT') @php try { // Récupérer toutes les entrées de checklist avec checked = 1 $checklistItems = $prospect->documentChecklist()->where('checked', 1)->pluck('document_type')->toArray(); // Créer un tableau avec true pour les types cochés $checklist = []; foreach ($checklistItems as $type) { $checklist[$type] = true; } } catch (\Exception $e) { $checklist = []; } @endphp

Glissez-déposez vos fichiers ici

ou

PDF, Word, images (JPG, PNG, GIF, WebP), vidéos (MP4, WebM, MOV, AVI) — max 100 Mo

Fichiers déposés (échanges avec le client)

Aucun fichier pour le moment

Export des données personnelles

Conformément au RGPD, vous pouvez télécharger l’intégralité des données et documents liés à ce prospect : informations générales, devis, documents déposés, échanges et emails envoyés (le tout dans une archive ZIP).

Télécharger toutes les données (ZIP)

Envoyer un email

@csrf
@if(!(($prospect->prospect_type ?? 'prospect') === 'client' && Route::currentRouteName() === 'portefeuille.show'))
@php $savedRefusals = []; try { if (\Schema::hasTable('prospect_mail_refusals')) { $savedRefusals = \DB::table('prospect_mail_refusals') ->where('prospect_id', $prospect->id) ->where('checked', 1) ->pluck('refusal_type') ->toArray(); } } catch (\Exception $e) { \Log::warning('Erreur chargement refus mail', ['error' => $e->getMessage()]); $savedRefusals = []; } @endphp
@php $savedMissingInfo = []; try { if (\Schema::hasTable('prospect_mail_missing_info')) { $savedMissingInfo = \DB::table('prospect_mail_missing_info') ->where('prospect_id', $prospect->id) ->where('checked', 1) ->pluck('missing_info_type') ->toArray(); } } catch (\Exception $e) { \Log::warning('Erreur chargement infos manquantes mail', ['error' => $e->getMessage()]); $savedMissingInfo = []; } @endphp
@endif

Déposer le devis

Glissez-déposez le devis ici

ou

Formats acceptés : PDF, DOC, DOCX

Devis chargé

Aucun devis chargé pour le moment

Pack assureur

@csrf @method('PUT') @php $savedPacks = []; try { if (\Schema::hasTable('prospect_fic_packs')) { $savedPacks = \DB::table('prospect_fic_packs') ->where('prospect_id', $prospect->id) ->where('checked', 1) ->pluck('pack_type') ->toArray(); } } catch (\Exception $e) { \Log::warning('Erreur chargement packs FIC', ['error' => $e->getMessage()]); $savedPacks = []; } @endphp

Envoyer un email

@csrf
@if(($prospect->prospect_type ?? 'prospect') === 'client' && Route::currentRouteName() === 'portefeuille.show')

Nouvelle réclamation

@csrf

Réclamations

@if($prospect->reclamations && $prospect->reclamations->count() > 0)
@foreach(($prospect->reclamations ?? collect())->sortByDesc('created_at') as $reclamation) @endforeach
Sujet Date de création Actions
{{ $reclamation->sujet ?? 'Sans sujet' }} {{ $reclamation->created_at->tz(config('app.timezone'))->format('d/m/Y à H:i') }}
@else

Aucune réclamation enregistrée

@endif
@endif
@push('scripts') @endpush @endsection