import 'package:flutter/material.dart'; import 'package:p_tits_pas/models/user.dart'; import 'package:p_tits_pas/screens/administrateurs/creation/gestionnaires_create.dart'; import 'package:p_tits_pas/services/user_service.dart'; import 'package:p_tits_pas/widgets/admin/common/admin_user_card.dart'; import 'package:p_tits_pas/widgets/admin/common/user_list.dart'; class AdminManagementWidget extends StatefulWidget { final String searchQuery; const AdminManagementWidget({ super.key, required this.searchQuery, }); @override State createState() => _AdminManagementWidgetState(); } class _AdminManagementWidgetState extends State { bool _isLoading = false; String? _error; List _admins = []; @override void initState() { super.initState(); _loadAdmins(); } @override void dispose() => super.dispose(); Future _loadAdmins() async { setState(() { _isLoading = true; _error = null; }); try { final list = await UserService.getAdministrateurs(); if (!mounted) return; setState(() { _admins = list; _isLoading = false; }); } catch (e) { if (!mounted) return; setState(() { _error = e.toString(); _isLoading = false; }); } } Future _openAdminEditDialog(AppUser user) async { final changed = await showDialog( context: context, barrierDismissible: false, builder: (dialogContext) { return AdminUserFormDialog( initialUser: user, adminMode: true, withRelais: false, ); }, ); if (changed == true) { await _loadAdmins(); } } @override Widget build(BuildContext context) { final query = widget.searchQuery.toLowerCase(); final filteredAdmins = _admins.where((u) { final name = u.fullName.toLowerCase(); final email = u.email.toLowerCase(); return name.contains(query) || email.contains(query); }).toList(); return UserList( isLoading: _isLoading, error: _error, isEmpty: filteredAdmins.isEmpty, emptyMessage: 'Aucun administrateur trouvé.', itemCount: filteredAdmins.length, itemBuilder: (context, index) { final user = filteredAdmins[index]; return AdminUserCard( title: user.fullName, subtitleLines: [ user.email, 'Rôle : ${user.role}', ], avatarUrl: user.photoUrl, actions: [ IconButton( icon: const Icon(Icons.edit), tooltip: 'Modifier', onPressed: () { _openAdminEditDialog(user); }, ), ], ); }, ); } }