fix: Utiliser box Hive membres pour filtre membre (#42)

- Correction du filtre membre : utilise membreRepository.getMembresBox()
- Récupère les membres depuis la box Hive (ope_users)
- Filtre uniquement les membres ayant des passages (memberIdsInPassages)
- Affichage : member.name ou member.firstName
- Tri alphabétique par nom

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-26 11:12:57 +01:00
parent a392305820
commit 6952417147

View File

@@ -598,21 +598,24 @@ class _HistoryContentState extends State<HistoryContent> {
/// Construit le dropdown de sélection de membre (admin uniquement) /// Construit le dropdown de sélection de membre (admin uniquement)
Widget _buildMemberDropdown() { Widget _buildMemberDropdown() {
// Récupérer les membres uniques depuis les passages de l'opération courante // Récupérer les IDs de membres uniques depuis les passages
final memberIds = <int>{}; final memberIdsInPassages = <int>{};
final memberNames = <int, String>{};
for (final passage in _originalPassages) { for (final passage in _originalPassages) {
if (!memberIds.contains(passage.fkUser)) { memberIdsInPassages.add(passage.fkUser);
memberIds.add(passage.fkUser);
// Utiliser le nom du passage (qui contient prenom + nom)
memberNames[passage.fkUser] = passage.name.isNotEmpty ? passage.name : 'Membre #${passage.fkUser}';
}
} }
// Récupérer les membres depuis la box Hive
final membresBox = membreRepository.getMembresBox();
final membres = membresBox.values.where((membre) {
return memberIdsInPassages.contains(membre.id);
}).toList();
// Trier par nom // Trier par nom
final sortedMembers = memberIds.toList() membres.sort((a, b) {
..sort((a, b) => (memberNames[a] ?? '').compareTo(memberNames[b] ?? '')); final nameA = a.name ?? a.firstName ?? '';
final nameB = b.name ?? b.firstName ?? '';
return nameA.compareTo(nameB);
});
return DropdownButtonFormField<int?>( return DropdownButtonFormField<int?>(
value: _selectedMemberId, value: _selectedMemberId,
@@ -628,11 +631,12 @@ class _HistoryContentState extends State<HistoryContent> {
value: null, value: null,
child: Text('Tous'), child: Text('Tous'),
), ),
...sortedMembers.map((memberId) { ...membres.map((membre) {
final displayName = membre.name ?? membre.firstName ?? 'Membre #${membre.id}';
return DropdownMenuItem<int?>( return DropdownMenuItem<int?>(
value: memberId, value: membre.id,
child: Text( child: Text(
memberNames[memberId] ?? 'Membre #$memberId', displayName,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
); );