BookingsPage.xaml.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. namespace practiceApplicaiton;
  2. public partial class BookingsPage : ContentPage
  3. {
  4. private Booking? _selected;
  5. public bool CanEdit => Database.IsAdmin;
  6. public BookingsPage()
  7. {
  8. InitializeComponent();
  9. BindingContext = this;
  10. }
  11. protected override async void OnAppearing()
  12. {
  13. base.OnAppearing();
  14. await LoadAsync();
  15. }
  16. private async Task LoadAsync(string search = "")
  17. {
  18. try
  19. {
  20. var data = await Repository.GetBookingsAsync(search);
  21. BookingsList.ItemsSource = data;
  22. }
  23. catch (Exception ex)
  24. {
  25. await DisplayAlert("Ошибка", ex.Message, "OK");
  26. }
  27. }
  28. private async void OnSearchChanged(object sender, TextChangedEventArgs e)
  29. => await LoadAsync(e.NewTextValue);
  30. private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
  31. {
  32. _selected = e.CurrentSelection.FirstOrDefault() as Booking;
  33. EditButton.IsEnabled = _selected != null;
  34. DeleteButton.IsEnabled = _selected != null;
  35. }
  36. private async void OnAddClicked(object sender, EventArgs e)
  37. {
  38. await Navigation.PushAsync(new BookingEditPage(null));
  39. await LoadAsync();
  40. }
  41. private async void OnEditClicked(object sender, EventArgs e)
  42. {
  43. if (_selected == null) return;
  44. await Navigation.PushAsync(new BookingEditPage(_selected));
  45. await LoadAsync();
  46. }
  47. private async void OnDeleteClicked(object sender, EventArgs e)
  48. {
  49. if (_selected == null) return;
  50. bool confirm = await DisplayAlert("Удалить",
  51. $"Удалить бронирование #{_selected.BookingId}?", "Да", "Отмена");
  52. if (!confirm) return;
  53. try
  54. {
  55. await Repository.DeleteBookingAsync(_selected.BookingId);
  56. await LoadAsync();
  57. }
  58. catch (Exception ex)
  59. {
  60. await DisplayAlert("Ошибка", ex.Message, "OK");
  61. }
  62. }
  63. }