import { prisma } from '@/lib/prisma'; import { getClients } from "@/app/actions/user"; import ToggleVerifyButton from '@/components/ToggleVerifyButton'; import FeaturedModal from '@/components/FeaturedModal'; import EntrepreneurActions from '@/components/EntrepreneurActions'; import PlanSelector from '@/components/PlanSelector'; import ClientActions from "@/components/ClientActions"; import ManualVerifyButton from "@/components/ManualVerifyButton"; import { ShieldAlert, ShieldX, ShieldCheck, Users, Briefcase, User, Mail, Phone, MapPin, MailCheck, MailX } from 'lucide-react'; import Link from 'next/link'; async function getBusinesses() { return await prisma.business.findMany({ where: { isActive: true }, include: { owner: true, }, orderBy: { createdAt: 'desc', }, }); } export default async function UsersPage({ searchParams }: { searchParams: Promise<{ tab?: string }> }) { const { tab = 'entrepreneurs' } = await searchParams; // Data for Entrepreneurs const businesses = await getBusinesses(); const pendingCount = businesses.filter((b: any) => !b.verified && !b.isSuspended && ['BOOSTER', 'EMPIRE'].includes(b.plan) ).length; // Data for Clients/Visitors const clientsResult = await getClients(); const clients = (clientsResult.success ? (clientsResult.data || []) : []) as any[]; return (

Gestion des Utilisateurs

Gérer les entrepreneurs et les visiteurs de la plateforme.

{/* Tabs */}
Entrepreneurs ({businesses.length}) {pendingCount > 0 && ( {pendingCount} )} Visiteurs ({clients.length})
{tab === 'entrepreneurs' ? (
{pendingCount > 0 && (
{pendingCount} en attente
Certifications Booster
)}
{businesses.length === 0 ? ( ) : ( businesses.map((business: any) => ( )) )}
Entreprise Catégorie Propriétaire Email Statut Forfait Mise en avant Action
Aucun entrepreneur trouvé.
{business.logoUrl ? ( {business.name} ) : ( LOGO )}
{business.name}
{business.location}
{business.category}
{business.owner.name}
{business.owner.email}
{business.owner.emailVerified ? ( Vérifié ) : (
Non vérifié
)}
{business.owner?.isSuspended ? ( Compte Suspendu ) : business.isSuspended ? ( Shop Masqué ) : business.verified ? ( Vérifié ) : ( En attente )}
) : (
{clients.length === 0 ? ( ) : ( clients.map((client: any) => ( )) )}
Utilisateur Contact Vérification Localisation Statut Action

Aucun visiteur trouvé.

{client.avatar ? ( {client.name} ) : ( client.name.charAt(0) )}

{client.name}

ID: {client.id.split('-')[0]}...

{client.email}
{client.phone && (
{client.phone}
)}
{client.emailVerified ? ( Vérifié ) : (
Non vérifié
)}
{client.location || "Non spécifié"}
{client.isSuspended ? ( <> Compte Suspendu {client.suspensionReason} ) : client.businesses ? ( Shop Inactif ) : ( Actif )}
)}
); }