@extends('layouts.app') @section('title', 'Ventes urgentes') @section('content') @php $flashMessage = session('success') ?? session('info') ?? (session('urgent_sale_just_created') ? 'Annonce créée avec succès. Vous pouvez maintenant gérer les demandes et ajuster votre stock.' : null); $filterValues = collect([ request('status'), request('category'), request('subcategory'), request('condition'), request('sort') !== 'created_at_desc' ? request('sort') : null, ])->filter(fn ($value) => !is_null($value) && $value !== ''); $hasActiveFilters = $filterValues->isNotEmpty(); $activeFilterCount = $filterValues->count(); @endphp
@php $statusTabs = [ ['value' => '', 'label' => 'Toutes', 'count' => $stats['total'] ?? 0], ['value' => 'active', 'label' => 'Actives', 'count' => $stats['active'] ?? 0], ['value' => 'sold', 'label' => 'Vendues', 'count' => $stats['sold'] ?? 0], ['value' => 'withdrawn', 'label' => 'Retirées', 'count' => $stats['withdrawn'] ?? 0], ]; $needsReviewCount = ($stats['reported'] ?? 0) + ($stats['blocked'] ?? 0); @endphp
@if($flashMessage)

Mise à jour enregistrée

{{ $flashMessage }}

@endif

Boutique prestataire

Ventes urgentes

{{ $stats['total'] ?? 0 }} annonce(s) au total

Suivez les demandes, ajustez vos annonces et gardez une vue nette sur le stock sans perdre d'espace.

{{ $stats['total'] ?? 0 }} total {{ $stats['active'] ?? 0 }} actives {{ $stats['sold'] ?? 0 }} vendues {{ number_format($stats['total_contacts'] ?? 0, 0, ',', ' ') }} contact(s) {{ number_format($stats['total_views'] ?? 0, 0, ',', ' ') }} vues @if($needsReviewCount > 0) {{ $needsReviewCount }} à surveiller @endif
@foreach($statusTabs as $tab) @php $tabQuery = request()->except('page', 'status'); if ($tab['value']) { $tabQuery['status'] = $tab['value']; } $isActiveTab = request('status', '') === $tab['value']; @endphp {{ $tab['label'] }} {{ $tab['count'] }} @endforeach

Filtres et tri

{{ $hasActiveFilters ? 'Affichage filtré selon vos critères actuels.' : 'Affinez la liste par statut, catégorie, état ou ordre de tri.' }}

@if($activeFilterCount > 0) {{ $activeFilterCount }} actif(s) @endif {{ $urgentSales->total() }} résultat(s)
@if($hasActiveFilters) Réinitialiser @endif

{{ $urgentSales->total() }} annonce(s) affichée(s)

Les demandes clientes se gèrent depuis le bouton Demandes.

@if($urgentSales->count() > 0)
@foreach($urgentSales as $sale) @php $statusClasses = match($sale->status) { 'active' => 'border-emerald-200 bg-emerald-50 text-emerald-700', 'sold' => 'border-slate-200 bg-slate-100 text-slate-700', 'withdrawn' => 'border-amber-200 bg-amber-50 text-amber-700', 'reported' => 'border-orange-200 bg-orange-50 text-orange-700', 'blocked' => 'border-rose-200 bg-rose-50 text-rose-700', default => 'border-slate-200 bg-slate-100 text-slate-700', }; $contactsCount = (int) ($sale->contacts_count ?? 0); $reportsCount = (int) ($sale->reports_count ?? 0); $photos = $sale->photos ?? []; $locationText = $sale->location ?: 'Lieu non précisé'; $shortDescription = trim(\Illuminate\Support\Str::limit(preg_replace('/\s+/', ' ', strip_tags($sale->description ?? '')), 150)); $availableQuantity = $sale->quantity !== null ? $sale->available_quantity : null; if (is_null($availableQuantity)) { $stockTone = 'text-slate-600'; $stockLabel = 'Stock non précisé'; } elseif ($availableQuantity > 5) { $stockTone = 'text-emerald-700'; $stockLabel = $availableQuantity . ' disponible(s)'; } elseif ($availableQuantity > 0) { $stockTone = 'text-amber-700'; $stockLabel = $availableQuantity . ' restante(s)'; } else { $stockTone = 'text-rose-700'; $stockLabel = 'Plus de stock'; } @endphp
@if(count($photos) > 0) @if(count($photos) > 1) {{ count($photos) }} @endif @else Aucune image @endif
{{ $sale->status_label }} @if($contactsCount > 0) {{ $contactsCount }} demande(s) @endif @if($sale->inventory_item_id) Inventaire lié @endif @if($reportsCount > 0) {{ $reportsCount }} signalement(s) @endif

{{ $sale->title }}

{{ $sale->category->name ?? 'Sans catégorie' }} Mise en ligne le {{ $sale->created_at->format('d/m/Y') }}

{{ number_format((float) $sale->price, 0, ',', ' ') }} €
{{ $sale->condition_label }}

{{ $shortDescription ?: 'Aucune description détaillée.' }}

{{ $stockLabel }} @if(($sale->sold_quantity ?? 0) > 0) {{ $sale->sold_quantity }} vendue(s) @endif @if(($sale->reserved_quantity ?? 0) > 0) {{ $sale->reserved_quantity }} réservée(s) @endif {{ number_format((int) $sale->views_count, 0, ',', ' ') }} vues {{ $contactsCount }} contact(s) {{ $locationText }}
@if($contactsCount > 0) Demandes @endif
Voir Modif.
@csrf @method('DELETE')
@endforeach
{{ $urgentSales->appends(request()->query())->links() }}
@else

Aucune vente urgente trouvée

{{ $hasActiveFilters ? 'Aucune annonce ne correspond aux filtres actuels.' : 'Vous n’avez pas encore publié de vente urgente.' }}

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