@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)
Démarrage rapide
Où aller selon ton activité
Services
Si tu vends une prestation (coiffeuse, traiteur, décoratrice…), utilise Mes services.
Matériel
Si tu as du matériel à mettre en location, utilise Mon matériel.
Annonces
Si tu es vendeur/vendeuse, utilise Mes annonces (produits).
Mon menu
Si tu fais de la restauration rapide sur commande (repas du jour, tiramisu…), utilise Mon menu.
@endif

Tableau de bord @if(auth()->user()->is_verified) Vérifié @endif

Gérez toutes vos activités depuis votre espace personnel

{{ $requestsCount ?? $bookingsCount ?? 0 }}
Demandes
{{ $inventoryCount ?? 0 }}
Inventaire
{{ $deliveriesCount ?? 0 }}
Livraisons
@if(function_exists('payment_feature_enabled') && payment_feature_enabled())
{{ $financeCount ?? 0 }}
Finance
@endif
QR
Mon Code
+
Vidéo
📅
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'; @endphp
🚴
{{ $driverSpaceValuePresta }}
{{ $driverSpaceLabelPresta }}

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

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
@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