public async Task <List <Client> > FilteredList(ClientsSort sortParam, ClientsSearch searchParam, string searchInput) { var _clientsContext = _context.Client.OrderBy(c => c.FullName); var list = await _clientsContext.ToListAsync(); if (searchInput != null && searchInput != String.Empty) { switch (searchParam) { case ClientsSearch.FullName: list = list.FindAll(v => v.FullName.Contains(searchInput)); break; case ClientsSearch.PrefType: list = list.FindAll(v => v.PrefType.Contains(searchInput)); break; case ClientsSearch.PhoneNumber: list = list.FindAll(v => v.PhoneNumber.Contains(searchInput)); break; case ClientsSearch.PassportNo: list = list.FindAll(v => v.ClientPassportNo.Contains(searchInput)); break; } } switch (sortParam) { case ClientsSort.FullName: return(list.OrderBy(v => v.FullName).ToList()); case ClientsSort.PrefType: return(list.OrderBy(v => v.PrefType).ToList()); case ClientsSort.MaxRent: return(list.OrderBy(v => v.MaxRent).ToList()); default: return(list.OrderBy(v => v.FullName).ToList()); } }
async Task GetClientsAsync() { if (IsBusy) { return; } try { var clients = LocalDataService.GetClients(); if (clients != null) { Clients.ReplaceRange(clients); ClientsSearch.ReplaceRange(clients); IsBusy = false; } } catch (Exception ex) { Debug.WriteLine($"Unable to get clients: {ex.Message}"); await Application.Current.MainPage.DisplayAlert("Error!", ex.Message, "OK"); } finally { IsBusy = false; } }
async void SearchClients(string search) { if (Clients == null || IsBusy) { return; } try { var searchList = Clients.Where((f) => f.Name.ToLower().Contains(search.ToLower())); ClientsSearch.ReplaceRange(searchList); Title = $"{ClientsSearch.Count} clients"; } catch (Exception ex) { Debug.WriteLine($"Error while searching {ex.Message}"); await Application.Current.MainPage.DisplayAlert("Error!", ex.Message, "OK"); } }