using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ProjectAirline.Entities.Enums; using ProjectAirline.Entities; using ProjectAirline.Repositories; namespace ProjectAirline.Forms; public partial class FormPassenger : Form { private readonly IPassengerRepository _passengerRepository; private int? _passengerId; public int Id { set { try { var passenger = _passengerRepository.ReadPassengerById(value); if (passenger == null) { throw new InvalidDataException(nameof(passenger)); } foreach (FoodPreferences elem in Enum.GetValues(typeof(FoodPreferences))) { if ((elem & passenger.FoodPreferences) != 0) { checkedListBoxType.SetItemChecked(checkedListBoxType.Items.IndexOf( elem), true); } } textBoxFirstname.Text = passenger.FirstName; textBoxLastname.Text = passenger.LastName; dateTimePickerBorn.Value = passenger.DateBirth; _passengerId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormPassenger(IPassengerRepository passengerRepository) { InitializeComponent(); _passengerRepository = passengerRepository ?? throw new ArgumentNullException(nameof(passengerRepository)); foreach (var elem in Enum.GetValues(typeof(FoodPreferences))) { checkedListBoxType.Items.Add(elem); } } private void ButtonSave_Click(object sender, EventArgs e) { try { if (checkedListBoxType.CheckedItems.Count == 0 || string.IsNullOrWhiteSpace(textBoxFirstname.Text) || string.IsNullOrWhiteSpace(textBoxLastname.Text) ) { throw new Exception("Имеются незаполненные поля"); } if (_passengerId.HasValue) { _passengerRepository.UpdatePassenger(CreatePassenger(_passengerId.Value)); } else { _passengerRepository.CreatePassenger(CreatePassenger(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonCancel_Click(object sender, EventArgs e) { Close(); } private Passenger CreatePassenger(int id) { FoodPreferences foodPreferences = FoodPreferences.None; foreach (var elem in checkedListBoxType.CheckedItems) { foodPreferences |= (FoodPreferences)elem; } return Passenger.CreateEntity(id, foodPreferences, textBoxFirstname.Text, textBoxLastname.Text); } }