namespace practiceApplicaiton; public partial class ClientsPage : ContentPage { private Client? _selected; public ClientsPage() => InitializeComponent(); protected override async void OnAppearing() { base.OnAppearing(); await LoadAsync(); } private async Task LoadAsync(string search = "") { try { ClientsList.ItemsSource = await Repository.GetClientsAsync(search); } catch (Exception ex) { await DisplayAlert("Ошибка", ex.Message, "OK"); } } private async void OnSearchChanged(object sender, TextChangedEventArgs e) => await LoadAsync(e.NewTextValue); private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) { _selected = e.CurrentSelection.FirstOrDefault() as Client; EditButton.IsEnabled = DeleteButton.IsEnabled = _selected != null; } private async void OnAddClicked(object sender, EventArgs e) { await Navigation.PushAsync(new ClientEditPage(null)); await LoadAsync(); } private async void OnEditClicked(object sender, EventArgs e) { if (_selected == null) return; await Navigation.PushAsync(new ClientEditPage(_selected)); await LoadAsync(); } private async void OnDeleteClicked(object sender, EventArgs e) { if (_selected == null) return; bool ok = await DisplayAlert("Удалить", $"Удалить клиента {_selected.FullName}?", "Да", "Отмена"); if (!ok) return; try { await Repository.DeleteClientAsync(_selected.ClientId); await LoadAsync(); } catch (Exception ex) { await DisplayAlert("Ошибка", ex.Message, "OK"); } } }