@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