Improve MemberAdminWindow search speed

This commit is contained in:
2023-03-20 21:55:41 +01:00
parent 3dc9c4eb97
commit 262db9e746

View File

@ -70,12 +70,15 @@ namespace Elwig.Windows {
private void RefreshMemberList() {
Context.Members.Load();
RefreshMemberListQuery();
}
private void RefreshMemberListQuery() {
IQueryable<Member> memberQuery = Context.Members;
if (ActiveMemberInput.IsChecked == true)
memberQuery = memberQuery.Where(m => m.IsActive);
List<Member> members = memberQuery.ToList();
members = members.OrderBy(m => m.FamilyName + " " + m.GivenName).ToList();
if (TextFilter.Count > 0) {
members = members
@ -89,6 +92,8 @@ namespace Elwig.Windows {
if (members.Count == 1)
MemberList.SelectedIndex = 0;
members = members.OrderBy(m => m.FamilyName + " " + m.GivenName).ToList();
RefreshInputs();
}
@ -134,7 +139,7 @@ namespace Elwig.Windows {
}
private void ActiveMemberInput_Changed(object sender, RoutedEventArgs evt) {
RefreshMemberList();
RefreshMemberListQuery();
}
private void NewMemberButton_Click(object sender, RoutedEventArgs evt) {
@ -273,8 +278,8 @@ namespace Elwig.Windows {
}
private void SearchInput_TextChanged(object sender, RoutedEventArgs evt) {
TextFilter = SearchInput.Text.ToLower().Split(" ").ToList().FindAll(s => s != "");
RefreshMemberList();
TextFilter = SearchInput.Text.ToLower().Split(" ").ToList().FindAll(s => s.Length >= 3 || s.All(c => char.IsDigit(c)));
RefreshMemberListQuery();
}
private void Menu_Member_SendEmail_Click(object sender, RoutedEventArgs evt) {