ClientEditPage.xaml.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. namespace practiceApplicaiton;
  2. public partial class ClientEditPage : ContentPage
  3. {
  4. private readonly Client? _client;
  5. private List<TourFirm> _firms = [];
  6. public ClientEditPage(Client? client)
  7. {
  8. InitializeComponent();
  9. _client = client;
  10. Title = client == null ? "Новый клиент" : "Редактировать клиента";
  11. }
  12. protected override async void OnAppearing()
  13. {
  14. base.OnAppearing();
  15. _firms = await Repository.GetFirmsAsync();
  16. FirmPicker.ItemsSource = _firms.Select(f => f.FirmName).ToList();
  17. if (_client != null)
  18. {
  19. LastNameEntry.Text = _client.LastName;
  20. FirstNameEntry.Text = _client.FirstName;
  21. PatronymicEntry.Text = _client.Patronymic;
  22. PhoneEntry.Text = _client.PhoneNumber;
  23. FirmPicker.SelectedIndex = _firms.FindIndex(f => f.FirmId == _client.FirmId);
  24. }
  25. }
  26. private async void OnSaveClicked(object sender, EventArgs e)
  27. {
  28. if (string.IsNullOrWhiteSpace(LastNameEntry.Text) ||
  29. string.IsNullOrWhiteSpace(FirstNameEntry.Text) ||
  30. string.IsNullOrWhiteSpace(PhoneEntry.Text) ||
  31. FirmPicker.SelectedIndex < 0)
  32. {
  33. await DisplayAlert("Ошибка", "Заполните все обязательные поля", "OK");
  34. return;
  35. }
  36. var c = new Client
  37. {
  38. ClientId = _client?.ClientId ?? 0,
  39. FirmId = _firms[FirmPicker.SelectedIndex].FirmId,
  40. LastName = LastNameEntry.Text.Trim(),
  41. FirstName = FirstNameEntry.Text.Trim(),
  42. Patronymic = PatronymicEntry.Text?.Trim() ?? "",
  43. PhoneNumber = PhoneEntry.Text.Trim(),
  44. };
  45. try
  46. {
  47. if (_client == null) await Repository.AddClientAsync(c);
  48. else await Repository.UpdateClientAsync(c);
  49. await Navigation.PopAsync();
  50. }
  51. catch (Exception ex) { await DisplayAlert("Ошибка", ex.Message, "OK"); }
  52. }
  53. }