using System; using System.Windows.Forms; using YourNamespace.Entities; using YourNamespace.Repositories; namespace YourNamespace.Forms { public partial class FormFlight : Form { private readonly IFlightRepository _flightRepository; private readonly IPlaneRepository _planeRepository; private readonly IAirportRepository _airportRepository; private int? _flightId; public int Id { set { try { var flight = _flightRepository.ReadFlightById(value); if (flight == null) { throw new InvalidDataException(nameof(flight)); } numericUpDownFlightNumber.Value = flight.FlightNumber; dateTimePickerDeparture.Value = flight.DepartureDateTime; dateTimePickerArrival.Value = flight.ArrivalDateTime; comboBoxPlane.SelectedValue = flight.PlaneId; comboBoxAirport.SelectedValue = flight.AirportId; _flightId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormFlight(IFlightRepository flightRepository, IPlaneRepository planeRepository, IAirportRepository airportRepository) { InitializeComponent(); _flightRepository = flightRepository ?? throw new ArgumentNullException(nameof(flightRepository)); _planeRepository = planeRepository ?? throw new ArgumentNullException(nameof(planeRepository)); _airportRepository = airportRepository ?? throw new ArgumentNullException(nameof(airportRepository)); comboBoxPlane.DataSource = _planeRepository.ReadPlanes(); comboBoxPlane.DisplayMember = "Model"; comboBoxPlane.ValueMember = "Id"; comboBoxAirport.DataSource = _airportRepository.ReadAirports(); comboBoxAirport.DisplayMember = "Name"; comboBoxAirport.ValueMember = "Id"; } private void ButtonSave_Click(object sender, EventArgs e) { try { if (comboBoxPlane.SelectedIndex < 0 || comboBoxAirport.SelectedIndex < 0) { throw new Exception("Имеются незаполненные поля"); } if (_flightId.HasValue) { _flightRepository.UpdateFlight(CreateFlight(_flightId.Value)); } else { _flightRepository.CreateFlight(CreateFlight(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); private Flight CreateFlight(int id) => Flight.CreateEntity(id, (int)numericUpDownFlightNumber.Value, dateTimePickerDeparture.Value, dateTimePickerArrival.Value, (int)comboBoxPlane.SelectedValue, (int)comboBoxAirport.SelectedValue); } }