@extends('layouts.app') @section('title', $prestataire->user->name . ' - Prestataire') @push('styles') @endpush @push('scripts') @endpush @section('content') @php use Illuminate\Support\Str; /* ── Statistiques générales ── */ $totalAvis = $allReviews->count(); $noteMoyenne = $totalAvis > 0 ? round($allReviews->avg('rating'), 1) : 0; $aDesServices = $allServices->count() > 0; $aDesEquipements = $allEquipments->count() > 0; $aDesProduits = $allUrgentSales->count() > 0; $aUnMenu = isset($foodProducts) && $foodProducts->count() > 0; $aDesVideos = $prestataire->videos && $prestataire->videos->count() > 0; $estEnLigne = $prestataire->user->is_online ?? false; /* ── Construction des onglets ── */ $onglets = []; if ($aDesServices) $onglets[] = ['id' => 'services', 'icon' => 'fa-concierge-bell', 'label' => 'Services', 'count' => $allServices->count()]; if ($aDesEquipements) $onglets[] = ['id' => 'location', 'icon' => 'fa-tools', 'label' => 'Location', 'count' => $allEquipments->count()]; if ($aDesProduits) $onglets[] = ['id' => 'boutique', 'icon' => 'fa-store', 'label' => 'Boutique', 'count' => $allUrgentSales->count()]; if ($aUnMenu) $onglets[] = ['id' => 'menu', 'icon' => 'fa-utensils', 'label' => 'Menu', 'count' => $foodProducts->count()]; $onglets[] = ['id' => 'avis', 'icon' => 'fa-star', 'label' => 'Avis', 'count' => $totalAvis]; $ongletActifParDefaut = $onglets[0]['id'] ?? 'avis'; /* ── Options de filtrage ── */ $categoriesServices = $allServices ->flatMap(fn ($s) => $s->categories?->pluck('name') ?? collect()) ->filter()->unique()->sort()->values(); $categoriesEquipements = $allEquipments->pluck('category.name')->filter()->unique()->sort()->values(); $etatsEquipements = $allEquipments->pluck('condition')->filter()->unique()->values(); $categoriesVentes = $allUrgentSales->pluck('category.name')->filter()->unique()->sort()->values(); $etatsVentes = collect(\App\Models\UrgentSale::CONDITION_OPTIONS) ->only($allUrgentSales->pluck('condition')->filter()->unique()->values()->all()); $categoriesMenu = collect(\App\Models\FoodProduct::categories()) ->only(($foodProducts ?? collect())->pluck('category')->filter()->unique()->values()->all()); /* ── Avatar du prestataire ── */ $urlAvatar = null; if ($prestataire->photo) { $urlAvatar = filter_var($prestataire->photo, FILTER_VALIDATE_URL) ? $prestataire->photo : asset('storage/' . $prestataire->photo); } elseif ($prestataire->user->avatar) { $urlAvatar = filter_var($prestataire->user->avatar, FILTER_VALIDATE_URL) ? $prestataire->user->avatar : asset('storage/' . $prestataire->user->avatar); } elseif ($prestataire->user->profile_photo_url) { $urlAvatar = $prestataire->user->profile_photo_url; } /* ── Nombre d'articles dans le panier ── */ $nbArticlesPanier = 0; if (auth()->check()) { try { $panierUtilisateur = \App\Models\Cart::forUserActive(auth()->id()); if ($panierUtilisateur) $nbArticlesPanier = $panierUtilisateur->items()->sum('quantity'); } catch (\Exception $e) { $nbArticlesPanier = 0; } } // Variables passées aux partials (compatibilité avec les noms existants) $tabs = $onglets; $totalReviews = $totalAvis; $averageRating = $noteMoyenne; $hasServices = $aDesServices; $hasEquipments = $aDesEquipements; $hasProducts = $aDesProduits; $hasFood = $aUnMenu; $hasVideos = $aDesVideos; $isOnline = $estEnLigne; $defaultActiveTab = $ongletActifParDefaut; $avatarUrl = $urlAvatar; $cartItemCount = $nbArticlesPanier; $serviceCategories = $categoriesServices; $equipmentCategories = $categoriesEquipements; $equipmentConditions = $etatsEquipements; $urgentCategories = $categoriesVentes; $urgentConditions = $etatsVentes; $foodCategoryOptions = $categoriesMenu; @endphp
{{-- En-tête avec avatar, nom, statut et bouton contact --}} @include('prestataires.partials._header') {{-- Barre de navigation par onglets --}} @include('prestataires.partials._nav')
{{-- Onglet Services --}} @if($aDesServices) @include('prestataires.partials._services') @endif {{-- Onglet Location de matériel --}} @if($aDesEquipements) @include('prestataires.partials._location') @endif {{-- Onglet Boutique (ventes) --}} @if($aDesProduits) @include('prestataires.partials._boutique') @endif {{-- Onglet Menu (restauration) --}} @if($aUnMenu) @include('prestataires.partials._menu') @endif {{-- Onglet Avis clients --}} @include('prestataires.partials._avis') {{-- Section À propos --}} @if($prestataire->description) @include('prestataires.partials._about') @endif {{-- Section Vidéos --}} @if($aDesVideos) @include('prestataires.partials._videos') @endif
{{-- Bouton flottant Suivre / Ne plus suivre --}} @auth @if(auth()->user()->isClient())
@if(auth()->user()->client && auth()->user()->client->isFollowing($prestataire->id))
@csrf @method('DELETE')
@else
@csrf
@endif
@endif @endauth
{{-- Modal vidéo (si pas de section vidéos, on le met quand même pour éviter les erreurs JS) --}} @if(!$aDesVideos)
@endif @endsection