@extends('layouts.app') @section('title', 'Mes Demandes') @section('content')

Mes Demandes

Gérez toutes vos demandes de services, équipements et ventes urgentes

{{-- Guide des statuts et bonnes pratiques --}}

Statuts :

  • 🟡 En attente – Action requise de votre part
  • 🟢 Acceptée – Rendez-vous confirmé
  • 🔴 Refusée – Demande déclinée

Conseils :

  • ⚡ Répondez rapidement aux demandes
  • 📞 Contactez le client en cas de question
  • ⭐ Un bon service = bonnes évaluations
@php // Combiner toutes les demandes $allRequests = collect(); // Ajouter les services if(isset($serviceBookings) && $serviceBookings->count() > 0) { foreach($serviceBookings as $booking) { // Determine if this is a multi-slot session $isMultiSlot = isset($booking->is_multi_slot) && $booking->is_multi_slot; // Get client rating info $clientUser = ($booking->client && $booking->client->user) ? $booking->client->user : null; $clientRating = $clientUser ? $clientUser->client_rating : null; $clientReviewsCount = $clientUser ? $clientUser->client_reviews_count : 0; $allRequests->push((object)[ 'id' => $booking->id ?? null, 'type' => 'service', 'title' => ($booking->service ? ($booking->service->title ?? $booking->service->name) : 'Service') ?? 'Service', 'client_name' => ($booking->client && $booking->client->user) ? ($booking->client->user->name ?? 'N/A') : 'N/A', 'client_user' => $clientUser, 'client_rating' => $clientRating, 'client_reviews_count' => $clientReviewsCount, 'status' => $booking->status ?? 'unknown', 'created_at' => $booking->created_at ?? now(), 'image' => ($booking->service && $booking->service->images && $booking->service->images->count() > 0) ? $booking->service->images->first()->image_path : null, 'category' => ($booking->service && $booking->service->category && $booking->service->category->first()) ? $booking->service->category->first()->name : null, 'price' => $isMultiSlot ? ($booking->total_session_price ?? 0) : ($booking->service ? ($booking->service->price ?? null) : null), 'price_type' => $booking->service ? ($booking->service->price_type ?? null) : null, 'route_show' => $booking->id ? route('prestataire.bookings.show', $booking->id) : '#', 'route_accept' => $booking->id ? route('prestataire.bookings.accept', $booking) : '#', 'route_reject' => $booking->id ? route('prestataire.bookings.reject', $booking) : '#', 'is_multi_slot' => $isMultiSlot, 'total_slots' => $isMultiSlot ? ($booking->total_slots ?? 1) : 1, 'session_duration' => $isMultiSlot ? ($booking->session_duration ?? 0) : null, 'original' => $booking ]); } } // Ajouter les équipements if(isset($equipmentRentalRequests) && $equipmentRentalRequests->count() > 0) { foreach($equipmentRentalRequests as $request) { // Get client rating info $clientUser = ($request->client && $request->client->user) ? $request->client->user : null; $clientRating = $clientUser ? $clientUser->client_rating : null; $clientReviewsCount = $clientUser ? $clientUser->client_reviews_count : 0; $allRequests->push((object)[ 'id' => $request->id ?? null, 'type' => 'equipment', 'title' => ($request->equipment ? ($request->equipment->name ?? 'Équipement') : 'Équipement') ?? 'Équipement', 'client_name' => ($request->client && $request->client->user) ? ($request->client->user->name ?? 'N/A') : 'N/A', 'client_user' => $clientUser, 'client_rating' => $clientRating, 'client_reviews_count' => $clientReviewsCount, 'status' => $request->status ?? 'unknown', 'created_at' => $request->created_at ?? now(), 'image' => ($request->equipment && $request->equipment->main_photo) ? $request->equipment->main_photo : (($request->equipment && $request->equipment->photos && count($request->equipment->photos) > 0) ? $request->equipment->photos[0] : null), 'category' => ($request->equipment && $request->equipment->category) ? $request->equipment->category->name : (($request->equipment && $request->equipment->subcategory) ? $request->equipment->subcategory->name : null), 'start_date' => $request->start_date ?? null, 'end_date' => $request->end_date ?? null, 'route_show' => $request->id ? route('prestataire.equipment-rental-requests.show', $request->id) : '#', 'route_accept' => $request->id ? route('prestataire.equipment-rental-requests.accept', $request) : '#', 'route_reject' => $request->id ? route('prestataire.equipment-rental-requests.reject', $request) : '#', 'original' => $request ]); } } // Ajouter les ventes urgentes if(isset($urgentSales) && $urgentSales->count() > 0) { foreach($urgentSales as $sale) { // Get the latest contact for display purposes $latestContact = $sale->contacts ? $sale->contacts->first() : null; $clientName = ($latestContact && $latestContact->user) ? $latestContact->user->name : 'N/A'; $allRequests->push((object)[ 'id' => $sale->id ?? null, 'type' => 'urgent_sale', 'title' => $sale->title ?? 'Vente urgente', 'client_name' => $clientName, 'status' => $sale->status ?? 'unknown', 'created_at' => $sale->created_at ?? now(), 'image' => ($sale->photos && count($sale->photos) > 0) ? $sale->photos[0] : null, 'category' => $sale->category ? $sale->category->name : null, 'price' => $sale->price ?? null, 'price_min' => $sale->price_min ?? null, 'price_max' => $sale->price_max ?? null, 'route_show' => $sale->id ? route('prestataire.urgent-sales.show', $sale->id) : '#', 'route_accept' => null, // Urgent sales don't have accept action 'route_reject' => null, // Urgent sales don't have reject action 'original' => $sale, 'client' => ($latestContact && $latestContact->user) ? $latestContact->user : null ]); } } // Trier par date de création (plus récent en premier) $allRequests = $allRequests->sortByDesc('created_at'); @endphp @if($allRequests->count() > 0)

Toutes les demandes

{{ $allRequests->count() }}
@foreach($allRequests as $item)
@if($item->image) {{ $item->title }} @else
@if($item->type === 'service') @elseif($item->type === 'equipment') @else @endif
@endif
@if($item->type === 'service') SERVICE @elseif($item->type === 'equipment') ÉQUIPEMENT @else VENTE URGENTE @endif

{{ $item->title }}

@if($item->type === 'service' && $item->original->client && $item->original->client->user) @if($item->original->client->user->profile_photo_url) {{ $item->client_name }} @elseif($item->original->client->user->client && $item->original->client->user->client->photo) {{ $item->client_name }} @elseif($item->original->client->user->avatar) {{ $item->client_name }} @else
{{ substr($item->client_name, 0, 1) }}
@endif @elseif($item->type === 'equipment' && $item->original->client && $item->original->client->user) @if($item->original->client->user->profile_photo_url) {{ $item->client_name }} @elseif($item->original->client->user->client && $item->original->client->user->client->photo) {{ $item->client_name }} @elseif($item->original->client->user->avatar) {{ $item->client_name }} @else
{{ substr($item->client_name, 0, 1) }}
@endif @elseif($item->type === 'urgent_sale' && $item->client) @if($item->client->profile_photo_url) {{ $item->client_name }} @elseif($item->client->client && $item->client->client->photo) {{ $item->client_name }} @elseif($item->client->avatar) {{ $item->client_name }} @else
{{ substr($item->client_name, 0, 1) }}
@endif @else
{{ substr($item->client_name, 0, 1) }}
@endif

{{ $item->client_name }}

{{-- Afficher la note du client --}} @if(isset($item->client_rating) && $item->client_rating)
@for($i = 1; $i <= 5; $i++) @endfor {{ number_format($item->client_rating, 1) }} ({{ $item->client_reviews_count ?? 0 }})
@elseif(isset($item->client_reviews_count) && $item->client_reviews_count == 0) Nouveau client @endif
@if($item->category)

Cat: {{ $item->category }}

@endif @if($item->type === 'service') @if(isset($item->is_multi_slot) && $item->is_multi_slot)
{{ $item->total_slots }} créneaux @if($item->session_duration) @php $hours = floor($item->session_duration / 60); $minutes = $item->session_duration % 60; @endphp @if($hours > 0) {{ $hours }}h{{ $minutes > 0 ? sprintf('%02d', $minutes) : '' }} @else {{ $minutes }} min @endif @endif

Prix total: {{ number_format($item->price ?? 0, 2, ',', ' ') }}€

@elseif($item->price)

Prix: {{ number_format($item->price ?? 0, 0, ',', ' ') }}€{{ ($item->price_type ?? '') === 'per_hour' ? '/h' : (($item->price_type ?? '') === 'per_day' ? '/jour' : '') }}

@endif @elseif($item->type === 'equipment' && $item->start_date && $item->end_date)

Période: {{ \Carbon\Carbon::parse($item->start_date)->format('d/m/Y') }} - {{ \Carbon\Carbon::parse($item->end_date)->format('d/m/Y') }}

@elseif($item->type === 'urgent_sale') @if($item->price_min && $item->price_max)

Prix: {{ number_format($item->price_min ?? 0, 0, ',', ' ') }}€ - {{ number_format($item->price_max ?? 0, 0, ',', ' ') }}€

@elseif($item->price)

Prix: {{ number_format($item->price ?? 0, 0, ',', ' ') }}€

@endif @endif

{{ $item->created_at ? $item->created_at->format('d/m/Y à H:i') : 'N/A' }}

@endforeach
@else @endif
@endsection