@extends('layouts.app') @section('title', $prestataire->user->name . ' - Prestataire') @push('styles') @endpush @push('scripts') @endpush @section('content') @php $totalReviews = $allReviews->count(); $averageRating = $totalReviews > 0 ? round($allReviews->avg('rating'), 1) : 0; $hasProducts = $allUrgentSales->count() > 0; $hasFood = isset($foodProducts) && $foodProducts->count() > 0; $hasVideos = $prestataire->videos && $prestataire->videos->count() > 0; $hasServices = $allServices->count() > 0; $hasEquipments = $allEquipments->count() > 0; $isOnline = $prestataire->user->is_online ?? false; // Calcul des tabs actifs $tabs = []; if($hasServices) $tabs[] = ['id' => 'services', 'icon' => 'fa-concierge-bell', 'label' => 'Services', 'count' => $allServices->count()]; if($hasEquipments) $tabs[] = ['id' => 'location', 'icon' => 'fa-tools', 'label' => 'Location', 'count' => $allEquipments->count()]; if($hasProducts) $tabs[] = ['id' => 'boutique', 'icon' => 'fa-store', 'label' => 'Boutique', 'count' => $allUrgentSales->count()]; if($hasFood) $tabs[] = ['id' => 'menu', 'icon' => 'fa-utensils', 'label' => 'Menu', 'count' => $foodProducts->count()]; $tabs[] = ['id' => 'avis', 'icon' => 'fa-star', 'label' => 'Avis', 'count' => $totalReviews]; @endphp
{{-- HEADER COMPACT --}}
@php $avatarUrl = null; if ($prestataire->photo) { $avatarUrl = filter_var($prestataire->photo, FILTER_VALIDATE_URL) ? $prestataire->photo : asset('storage/' . $prestataire->photo); } elseif ($prestataire->user->avatar) { $avatarUrl = filter_var($prestataire->user->avatar, FILTER_VALIDATE_URL) ? $prestataire->user->avatar : asset('storage/' . $prestataire->user->avatar); } elseif ($prestataire->user->profile_photo_url) { $avatarUrl = $prestataire->user->profile_photo_url; } @endphp @if($avatarUrl) {{ $prestataire->user->name }} @else
{{ strtoupper(substr($prestataire->user->name, 0, 1)) }}
@endif @if($prestataire->isVerified()) @endif

{{ $prestataire->user->name }}

{{ $isOnline ? '● En ligne' : '○ Hors ligne' }} @if($totalReviews > 0) ★ {{ $averageRating }} ({{ $totalReviews }}) @endif
@auth @if(auth()->user()->isClient()) @endif @else @endauth
{{-- BARRE DE NAVIGATION FLOTTANTE STICKY --}} {{-- CONTENU PAR ONGLETS --}}
{{-- TAB: SERVICES --}} @if($hasServices)

Nos Services

Découvrez nos prestations professionnelles

@foreach($allServices as $service) @endforeach
@endif {{-- TAB: LOCATION / ÉQUIPEMENTS --}} @if($hasEquipments)

Location de Matériel

Équipements professionnels disponibles à la location

@foreach($allEquipments as $equipment) @endforeach
@endif {{-- TAB: BOUTIQUE --}} @if($hasProducts)

Notre Boutique

{{ $allUrgentSales->count() }} articles disponibles

{{-- Indicateur panier flottant dans la boutique --}} @auth @php $cartItemCount = 0; try { $userCart = \App\Models\Cart::forUserActive(auth()->id()); if ($userCart) { $cartItemCount = $userCart->items()->sum('quantity'); } } catch (\Exception $e) {} @endphp @endauth
@foreach($allUrgentSales as $sale) @php $availableQty = ($sale->quantity ?? 1) - ($sale->reserved_quantity ?? 0) - ($sale->sold_quantity ?? 0); @endphp
@if($sale->photos && count($sale->photos) > 0) @php $firstPhoto = $sale->photos[0]; @endphp @if(filter_var($firstPhoto, FILTER_VALIDATE_URL)) {{ $sale->title }} @else @endif @else
@endif @if($availableQty <= 3 && $availableQty > 0) Plus que {{ $availableQty }}! @elseif($availableQty <= 0) Épuisé @endif

{{ $sale->title }}

{{ Str::limit($sale->description, 60) }}

{{ number_format($sale->price, 2, ',', ' ') }} €
@if($availableQty > 0) @auth @php $sellerId = (int) ($sale->prestataire?->user_id ?? 0); $isOwnSale = (int) auth()->id() === $sellerId; $hasOnlinePayment = ($sale->payment_requirement ?? 'none') === 'full'; $hasStripeConnect = !empty($sale->prestataire?->stripe_account_id); $canAddToCart = !$isOwnSale && $hasOnlinePayment && $hasStripeConnect && \Illuminate\Support\Facades\Route::has('client.cart.add.urgent-sale'); @endphp @if($canAddToCart)
@csrf
@elseif($isOwnSale) Votre annonce @else {{ $hasOnlinePayment ? 'Contacter' : 'Réserver' }} @endif @else Connexion @endauth @else Épuisé @endif
@endforeach
@endif {{-- TAB: MENU FOOD --}} @if($hasFood)

Notre Menu

Commandez et faites-vous livrer

{{-- Lien vers la page complète de commande --}} @if($foodProducts->count() > 12) @endif
@endif {{-- TAB: AVIS --}}

Avis Clients

{{ $averageRating }}
@for($i = 1; $i <= 5; $i++) @endfor
{{ $totalReviews }} avis
{{-- Formulaire avis --}} @auth @if(auth()->user()->client && !$existingReview && $hasInteracted)

Donnez votre avis

@csrf
@for($i = 5; $i >= 1; $i--) @endfor
@endif @endauth {{-- Liste des avis --}} @if($totalReviews > 0)
@foreach($allReviews as $review)
{{ strtoupper(substr($review->client->name ?? 'A', 0, 1)) }}
{{ $review->client->name ?? 'Client' }}
@for($i = 1; $i <= 5; $i++) @endfor
{{ $review->created_at->diffForHumans() }}
@if($review->comment)

{{ $review->comment }}

@endif
@endforeach
@else

Aucun avis pour le moment

Soyez le premier à donner votre avis !
@endif
{{-- SECTION: À propos (toujours visible en bas) --}} @if($prestataire->description)

À propos

{{ $prestataire->description }}

@if($prestataire->city || $prestataire->phone)
@if($prestataire->city) {{ $prestataire->city }} @endif @auth @if($prestataire->phone && ($prestataire->phone_visible ?? true)) {{ $prestataire->phone }} @endif @endauth
@endif
@endif {{-- Vidéos (si existantes) --}} @if($hasVideos)

Nos Vidéos

@foreach($prestataire->videos as $video)
@if($video->thumbnail) {{ $video->title }} @else @endif
@endforeach
@endif
{{-- BOUTON FLOTTANT FOLLOW --}} @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 --}}
@endsection