@extends('layouts.app') @push('styles') @vite('resources/css/pages/admin-dashboard.css') @endpush @section('content') @include('components.admin-header') @php $totalUsers = \App\Models\User::count(); $activeUsers = \App\Models\User::where('is_admin', false)->where('is_active', true)->count(); $pendingUsers = \App\Models\User::where('is_admin', false)->where('is_active', false)->count(); $adminCount = \App\Models\User::where('is_admin', true)->count(); $totalProducts = \App\Models\Product::count(); $users = \App\Models\User::latest()->get(); // Inscriptions par mois (6 derniers mois) $months = collect(); for ($i = 5; $i >= 0; $i--) { $date = now()->subMonths($i); $count = \App\Models\User::where('is_admin', false) ->whereYear('created_at', $date->year) ->whereMonth('created_at', $date->month) ->count(); $months->push(['label' => $date->isoFormat('MMM YY'), 'count' => $count]); } // Statistiques vidéos & stockage $totalVideos = \App\Models\Product::whereNotNull('video')->where('video','!=','')->count(); $formatBytes = function(int $bytes): string { if ($bytes >= 1073741824) return round($bytes/1073741824,2).' Go'; if ($bytes >= 1048576) return round($bytes/1048576,2).' Mo'; if ($bytes >= 1024) return round($bytes/1024,1).' Ko'; return $bytes.' o'; }; $totalVideoBytes = \App\Models\Product::whereNotNull('video')->where('video','!=','')->pluck('video') ->sum(fn($p) => \Illuminate\Support\Facades\Storage::disk('public')->exists($p) ? \Illuminate\Support\Facades\Storage::disk('public')->size($p) : 0); $totalImageBytes = \App\Models\Product::whereNotNull('image')->where('image','!=','')->pluck('image') ->sum(fn($p) => \Illuminate\Support\Facades\Storage::disk('public')->exists($p) ? \Illuminate\Support\Facades\Storage::disk('public')->size($p) : 0); $totalVideoSize = $formatBytes((int)$totalVideoBytes); $totalImageSize = $formatBytes((int)$totalImageBytes); $totalImages = \App\Models\Product::whereNotNull('image')->where('image','!=','')->count(); // Top 5 utilisateurs par nombre de produits $topUsers = \App\Models\User::where('is_admin', false) ->withCount('products') ->orderByDesc('products_count') ->limit(5) ->get(); // Répartition comptes $withLogo = \App\Models\User::where('is_admin', false)->whereNotNull('logo')->where('logo','!=','')->count(); $withoutLogo = \App\Models\User::where('is_admin', false)->where(fn($q) => $q->whereNull('logo')->orWhere('logo',''))->count(); $withProducts2 = \App\Models\User::where('is_admin', false)->has('products')->count(); $noProducts = \App\Models\User::where('is_admin', false)->doesntHave('products')->count(); @endphp
PANNEAU D'ADMINISTRATION

Bonjour, {{ auth()->user()->name }}

Voici un aperçu de votre plateforme aujourd'hui.

{{ now()->isoFormat('dddd D MMMM YYYY') }}
@foreach([ ['val'=>$totalUsers, 'label'=>'Utilisateurs', 'bg'=>'#dbeafe','color'=>'#1d4ed8','icon'=>'M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197','delay'=>'0s'], ['val'=>$activeUsers, 'label'=>'Comptes actifs', 'bg'=>'#d1fae5','color'=>'#065f46','icon'=>'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z','delay'=>'.1s'], ['val'=>$pendingUsers, 'label'=>'En attente', 'bg'=>'#fef3c7','color'=>'#92400e','icon'=>'M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z','delay'=>'.2s'], ['val'=>$totalProducts,'label'=>'Produits total', 'bg'=>'#ede9fe','color'=>'#5b21b6','icon'=>'M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4','delay'=>'.3s'], ] as $s)
{{ $s['val'] }}
{{ $s['label'] }}
@endforeach {{-- Vidéos publiées --}}
{{ $totalVideos }}
Vidéos publiées
{{ $totalVideoSize }}
{{-- Images publiées --}}
{{ $totalImages }}
Images publiées
{{ $totalImageSize }}
Inscriptions par mois
6 derniers mois — utilisateurs uniquement
Statuts comptes
Répartition
Actifs {{ $activeUsers }}
En attente {{ $pendingUsers }}
Admins {{ $adminCount }}
Top 5 — utilisateurs actifs
Classement par nombre de produits
Profil complet
Logo & produits
Avec logo {{ $withLogo }}
Sans logo {{ $withoutLogo }}
Avec produits {{ $withProducts2 }}
Sans produits {{ $noProducts }}

Gestion des utilisateurs

{{ $totalUsers }} utilisateurs enregistrés

@foreach(['Utilisateur','Statut','Téléphone','Mapage','Logo','Actions'] as $th) @endforeach @foreach($users as $u) @endforeach
{{ $th }}
{{ strtoupper(substr($u->name, 0, 1)) }}
{{ $u->name }}
@if($u->is_admin) Admin @endif
@if($u->is_admin) Admin @elseif($u->is_active) Actif @else En attente @endif {{ $u->phone ?? '—' }}
@if($u->logo && \Storage::disk('public')->exists($u->logo)) Logo @else Aucun @endif
@if(!$u->is_admin) @endif Voir page
{{ $totalUsers }} utilisateurs au total
Informations système
État de la plateforme
@foreach([ ['dot'=>'#10b981','label'=>'Laravel','value'=>app()->version()], ['dot'=>'#3b82f6','label'=>'PHP','value'=>PHP_VERSION], ['dot'=>'#8b5cf6','label'=>'Base de données','value'=>'MySQL'], ['dot'=>'#f59e0b','label'=>'Environnement','value'=>app()->environment()], ] as $info)
{{ $info['label'] }}
{{ $info['value'] }}
@endforeach
Système opérationnel
Résumé
Vue d'ensemble
@php $withMapage = \App\Models\User::whereNotNull('mapage')->where('mapage','!=','')->count(); $withLogo = \App\Models\User::whereNotNull('logo')->where('logo','!=','')->count(); $withProducts = \App\Models\User::has('products')->count(); @endphp @foreach([ ['label'=>'Pages configurées','val'=>$withMapage,'total'=>$totalUsers,'color'=>'#1a8ed4'], ['label'=>'Avec logo','val'=>$withLogo,'total'=>$totalUsers,'color'=>'#8b5cf6'], ['label'=>'Avec produits','val'=>$withProducts,'total'=>$totalUsers,'color'=>'#10b981'], ] as $bar)
{{ $bar['label'] }} {{ $bar['val'] }}/{{ $bar['total'] }}
@php $pct = $bar['total'] > 0 ? round($bar['val']/$bar['total']*100) : 0; @endphp
@endforeach
Modifier le mot de passe
Compte administrateur
Mon profil
Informations personnelles
{{-- ── SECTION REDIRECTIONS ── --}}
Redirections
Gérer les redirections URL du site
{{-- Formulaire ajout --}} {{-- Tableau --}} @if($redirections->count() > 0)
@foreach($redirections as $redir) @endforeach
# Lien source URL cible Actions
{{ $redir->id }} {{ $redir->source }} {{ $redir->destination }}
@else
🔗
Aucune redirection

Cliquez sur "Nouvelle redirection" pour en créer une.

@endif
{{-- Modal modifier redirection --}}
@endsection