@extends('layouts.app') @use('Illuminate\Support\Facades\Storage') @section('title', 'Tableau de bord - Prestataire') @push('styles') @endpush @section('content')
{{-- Guide de démarrage interactif pour les nouveaux prestataires --}} @php $hasServices = ($totalServices ?? 0) > 0; $hasEquipment = ($equipmentCount ?? 0) > 0; $hasInventory = ($inventoryCount ?? 0) > 0; $hasProfilePhoto = auth()->user()->profile_photo_path || auth()->user()->avatar; $hasQrViews = false; // À connecter avec les vraies stats $hasAvailability = isset($weeklyAvailability) && $weeklyAvailability && $weeklyAvailability->count() > 0; $hasUrgentSale = ($urgentProductsCount ?? 0) > 0; $hasPaymentsSetup = !empty($prestataire?->stripe_account_id); $hasFood = ($foodOrdersCount ?? 0) > 0; $isNewUser = (!$hasServices && !$hasEquipment && !$hasUrgentSale) || (($profileCompletion['percentage'] ?? 0) < 60); $onboardingSteps = [ [ 'key' => 'profile', 'title' => 'Compléter votre profil', 'description' => 'Photo, description, catégories et contact', 'completed' => $hasProfilePhoto, 'url' => route('prestataire.profile.edit') ], [ 'key' => 'service', 'title' => 'Créer une prestation', 'description' => 'Événementiel, esthétique, travaux… + réservation', 'completed' => $hasServices, 'url' => route('prestataire.services.create') ], [ 'key' => 'planning', 'title' => 'Activer le planning', 'description' => 'Horaires + disponibilités pour automatiser les réservations', 'completed' => $hasAvailability, 'url' => route('prestataire.availability.index') ], [ 'key' => 'equipment', 'title' => 'Ajouter du matériel à louer', 'description' => 'Location + disponibilité + demandes', 'completed' => $hasEquipment, 'url' => route('prestataire.equipment.create') ], [ 'key' => 'shop', 'title' => 'Créer une annonce (boutique)', 'description' => 'Produits + stock + inventaire', 'completed' => $hasUrgentSale || $hasInventory, 'url' => route('prestataire.urgent-sales.create') ], [ 'key' => 'payments', 'title' => 'Configurer paiements', 'description' => 'Moyens de paiement + acompte/caution (blocage)', 'completed' => $hasPaymentsSetup, 'url' => (\Illuminate\Support\Facades\Route::has('prestataire.payments.connect') ? route('prestataire.payments.connect') : route('prestataire.payments.index')) ], ]; @endphp {{-- Checklist d'onboarding pour les nouveaux utilisateurs --}} @if($isNewUser) @endif
{{ $requestsCount ?? $bookingsCount ?? 0 }}
Reserv.
{{ $inventoryCount ?? 0 }}
Stock
{{ $deliveriesCount ?? 0 }}
Livrais.
@if(function_exists('payment_feature_enabled') && payment_feature_enabled())
{{ $financeCount ?? 0 }}
Finance
@endif
QR
QR code
+
Videos
📅
Agenda
@php $activeDaysCount = isset($weeklyAvailability) ? $weeklyAvailability->where('is_active', true)->count() : 0; @endphp {{ $activeDaysCount }}/7
Dispo
📄
Devis
🍽️
{{ $foodOrdersCount ?? 0 }}
Food
@php $driverProfilesPresta = \App\Models\DeliveryDriver::query() ->select(['id', 'is_internal', 'employer_prestataire_id']) ->where('user_id', auth()->id()) ->get(); $externalDriverProfilePresta = $driverProfilesPresta->first(function ($driverItem) { return !((bool) ($driverItem->is_internal ?? false) && !empty($driverItem->employer_prestataire_id)); }); $internalDriverProfilePresta = $driverProfilesPresta->first(function ($driverItem) { return (bool) ($driverItem->is_internal ?? false) && !empty($driverItem->employer_prestataire_id); }); $hasExternalDriverPresta = (bool) $externalDriverProfilePresta; // Règle métier: ce bouton est réservé au flux livreur EXTERNE. $driverSpaceUrlPresta = $hasExternalDriverPresta ? route('driver.dashboard') : route('driver.register'); $driverSpaceValuePresta = $hasExternalDriverPresta ? 'Go' : '+'; $driverSpaceLabelPresta = $hasExternalDriverPresta ? 'Mon espace livreur' : 'Devenir livreur'; $driverShortcutLabelPresta = $hasExternalDriverPresta ? 'Livreur' : 'Livreur+'; @endphp
🚴
{{ $driverSpaceValuePresta }}
{{ $driverShortcutLabelPresta }}
Navigation croisée

Basculer en espace client pour réserver chez d'autres prestataires ou suivre vos achats.

Ouvrir le mode client
Pilotage

Vos pôles d'activité

Services, location, boutique, stock et food dans une grille plus lisible.

Mes services

{{ $totalServices ?? 0 }} service(s)

{{ $activeServices ?? 0 }}
En cours
{{ $totalServices ?? 0 }}
Total

Mon matériel

{{ $equipmentCount ?? 0 }} équipement(s)

{{ $equipmentRentalRequestsCount ?? 0 }}
Demandes
{{ $activeRentalsCount ?? 0 }}
Locations

Mes annonces

Offres & promos

{{ $urgentSalesCount ?? 0 }}
Ventes
{{ $urgentProductsCount ?? 0 }}
Produits

Mon inventaire

Stock & produits

{{ $inventoryCount ?? 0 }}
Articles
{{ $lowStockCount ?? 0 }}
Stock bas

Mon Menu

Commandes alimentaires

@php $foodTablesExist = \Illuminate\Support\Facades\Schema::hasTable('food_products'); $foodProductsCount = 0; $pendingFoodOrders = 0; $preparingFoodOrders = 0; if ($foodTablesExist) { try { $foodProductsCount = $prestataire->foodProducts()->count(); $pendingFoodOrders = $prestataire->foodOrders()->where('status', 'pending')->count(); $preparingFoodOrders = $prestataire->foodOrders()->whereIn('status', ['accepted', 'preparing'])->count(); } catch (\Exception $e) { // Tables not ready yet } } @endphp @if(!$foodTablesExist)

Migration requise : exécutez php artisan migrate

@else
{{ $foodProductsCount }}
Produits
{{ $pendingFoodOrders }}
En attente
{{ $preparingFoodOrders }}
En cours
@if($pendingFoodOrders > 0)

{{ $pendingFoodOrders }} commande(s) en attente !

@endif @endif
@if(Route::has('prestataire.food-orders.dashboard')) Tableau de bord cuisine @else

Fonctionnalité bientôt disponible

@endif
Opportunités

Appels d'offres

Repérez vite les demandes pertinentes et les invitations non lues.

Appels d'Offres @if(($unreadInvitations ?? 0) > 0) {{ $unreadInvitations }} nouvelle(s) @endif

Trouvez des clients qui recherchent vos services

{{ $tenderStats['available'] ?? 0 }}
Disponibles
{{ $tenderStats['responded'] ?? 0 }}
Propositions
{{ $tenderStats['shortlisted'] ?? 0 }}
Présélect.
{{ $tenderStats['accepted'] ?? 0 }}
Acceptées
@if(isset($recentTenders) && $recentTenders->count() > 0) @endif
Explorer les appels Mes propositions @if(auth()->user()->client) Mes demandes créées @endif @if(($unreadInvitations ?? 0) > 0) Invitations ({{ $unreadInvitations }}) @endif
Compte

Profil et confiance

Gardez votre profil clair et votre statut de vérification visible.

@if(session('success')) @endif @if($errors->any()) @endif

Mon profil

Gérer mes informations

Profil

Vérification de compte

@if(auth()->user()->prestataire->isVerified()) Compte vérifié @else En attente de vérification @endif

@if(auth()->user()->prestataire->isVerified()) @endif
@if(auth()->user()->prestataire->isVerified())

Félicitations !

Votre compte est vérifié et bénéficie du badge "Prestataire Vérifié"

@else

Vérifiez votre compte

Obtenez le badge "Prestataire Vérifié" pour gagner la confiance des clients

@endif
@if(auth()->user()->prestataire->isVerified()) Vérification @else Vérifier @endif
@push('scripts') @endpush @endsection