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:
@@ -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,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user