ClientsPage.xaml.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. namespace practiceApplicaiton;
  2. public partial class ClientsPage : ContentPage
  3. {
  4. private Client? _selected;
  5. public ClientsPage() => InitializeComponent();
  6. protected override async void OnAppearing()
  7. {
  8. base.OnAppearing();
  9. await LoadAsync();
  10. }
  11. private async Task LoadAsync(string search = "")
  12. {
  13. try { ClientsList.ItemsSource = await Repository.GetClientsAsync(search); }
  14. catch (Exception ex) { await DisplayAlert("Ошибка", ex.Message, "OK"); }
  15. }
  16. private async void OnSearchChanged(object sender, TextChangedEventArgs e)
  17. => await LoadAsync(e.NewTextValue);
  18. private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
  19. {
  20. _selected = e.CurrentSelection.FirstOrDefault() as Client;
  21. EditButton.IsEnabled = DeleteButton.IsEnabled = _selected != null;
  22. }
  23. private async void OnAddClicked(object sender, EventArgs e)
  24. {
  25. await Navigation.PushAsync(new ClientEditPage(null));
  26. await LoadAsync();
  27. }
  28. private async void OnEditClicked(object sender, EventArgs e)
  29. {
  30. if (_selected == null) return;
  31. await Navigation.PushAsync(new ClientEditPage(_selected));
  32. await LoadAsync();
  33. }
  34. private async void OnDeleteClicked(object sender, EventArgs e)
  35. {
  36. if (_selected == null) return;
  37. bool ok = await DisplayAlert("Удалить",
  38. $"Удалить клиента {_selected.FullName}?", "Да", "Отмена");
  39. if (!ok) return;
  40. try
  41. {
  42. await Repository.DeleteClientAsync(_selected.ClientId);
  43. await LoadAsync();
  44. }
  45. catch (Exception ex) { await DisplayAlert("Ошибка", ex.Message, "OK"); }
  46. }
  47. }