import 'package:flutter/material.dart'; import 'package:p_tits_pas/widgets/admin/base_user_management.dart'; class AdministrateurManagementWidget extends StatelessWidget { const AdministrateurManagementWidget({super.key}); @override Widget build(BuildContext context) { return BaseUserManagementWidget( config: UserDisplayConfig( title: 'Administrateur', role: 'administrateur', defaultIcon: Icons.admin_panel_settings, filterFields: [ FilterField( label: 'Rechercher', hint: 'Nom ou email', type: FilterType.text, filter: (user, query) { final fullName = '${user['firstName'] ?? ''} ${user['lastName'] ?? ''}' .toLowerCase(); final email = (user['email'] ?? '').toLowerCase(); return fullName.contains(query.toLowerCase()) || email.contains(query.toLowerCase()); }, ), FilterField( label: 'Statut', hint: 'Tous', type: FilterType.dropdown, options: ['actif', 'en_attente', 'inactif', 'supprimé'], filter: (user, status) { if (status.isEmpty) return true; return user['statut']?.toString().toLowerCase() == status.toLowerCase(); }, ), ], actions: [ const UserAction( icon: Icons.edit, color: Colors.orange, tooltip: 'Modifier', onPressed: _editAdministrateur, ), const UserAction( icon: Icons.security, color: Colors.blue, tooltip: 'Gérer droits', onPressed: _manageRights, ), const UserAction( icon: Icons.lock_reset, color: Colors.purple, tooltip: 'Réinitialiser MDP', onPressed: _resetPassword, ), const UserAction( icon: Icons.toggle_on, color: Colors.green, tooltip: 'Activer/Désactiver', onPressed: _toggleStatus, ), const UserAction( icon: Icons.delete, color: Colors.red, tooltip: 'Supprimer', onPressed: _deleteAdministrateur, ), ], getDisplayName: (user) => '${user['prenom'] ?? ''} ${user['nom'] ?? ''}', getSubtitle: (user) { final email = user['email'] ?? ''; final profession = user['profession'] ?? 'Non spécifiée'; final ville = user['ville'] ?? ''; // final statut = AdministrateurService.getStatutDisplay(user['statut']); final statut = user['statut'] ?? 'inactif'; final changementMdp = user['changement_mdp_obligatoire'] == true ? 'MDP à changer' : ''; return '$email\n$profession${ville.isNotEmpty ? ' • $ville' : ''}\nStatut: $statut ${changementMdp.isNotEmpty ? '• $changementMdp' : ''}'; }, )); } static Future _editAdministrateur( BuildContext context, Map user) async { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Modifier administrateur: ${user['prenom']} ${user['nom']}')), ); } static Future _manageRights( BuildContext context, Map user) async { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Gérer droits pour: ${user['prenom']} ${user['nom']}')), ); } static Future _resetPassword( BuildContext context, Map user) async { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Réinitialiser mot de passe pour: ${user['prenom']} ${user['nom']}')), ); } static Future _toggleStatus( BuildContext context, Map user) async { final currentStatus = user['statut'] ?? 'inactif'; final newStatus = currentStatus == 'actif' ? 'inactif' : 'actif'; ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( '${newStatus == 'actif' ? 'Activer' : 'Désactiver'} administrateur: ${user['prenom']} ${user['nom']}')), ); } static Future _deleteAdministrateur( BuildContext context, Map user) async { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Supprimer administrateur: ${user['prenom']} ${user['nom']}')), ); } }