import 'package:flutter/material.dart'; import 'package:p_tits_pas/models/user.dart'; import 'package:p_tits_pas/services/user_service.dart'; import 'package:p_tits_pas/widgets/admin/common/admin_list_header.dart'; import 'package:p_tits_pas/widgets/admin/common/admin_list_state.dart'; import 'package:p_tits_pas/widgets/admin/common/admin_user_card.dart'; class AdminManagementWidget extends StatefulWidget { const AdminManagementWidget({super.key}); @override State createState() => _AdminManagementWidgetState(); } class _AdminManagementWidgetState extends State { bool _isLoading = false; String? _error; List _admins = []; List _filteredAdmins = []; final TextEditingController _searchController = TextEditingController(); @override void initState() { super.initState(); _loadAdmins(); _searchController.addListener(_onSearchChanged); } @override void dispose() { _searchController.dispose(); super.dispose(); } Future _loadAdmins() async { setState(() { _isLoading = true; _error = null; }); try { final list = await UserService.getAdministrateurs(); if (!mounted) return; setState(() { _admins = list; _filteredAdmins = list; _isLoading = false; }); } catch (e) { if (!mounted) return; setState(() { _error = e.toString(); _isLoading = false; }); } } void _onSearchChanged() { final query = _searchController.text.toLowerCase(); setState(() { _filteredAdmins = _admins.where((u) { final name = u.fullName.toLowerCase(); final email = u.email.toLowerCase(); return name.contains(query) || email.contains(query); }).toList(); }); } @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ AdminListHeader( searchController: _searchController, searchHint: 'Rechercher un administrateur...', actionLabel: 'Créer un admin', onActionPressed: () { // TODO: Créer admin }, ), const SizedBox(height: 16), AdminListState( isLoading: _isLoading, error: _error, isEmpty: _filteredAdmins.isEmpty, emptyMessage: 'Aucun administrateur trouvé.', list: ListView.builder( 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: () { // TODO: Modifier admin }, ), IconButton( icon: const Icon(Icons.delete), tooltip: 'Supprimer', onPressed: () { // TODO: Supprimer admin }, ), ], ); }, ), ), ], ), ); } }