using System; using System.Windows.Forms; using YourNamespace.Entities; using YourNamespace.Repositories; namespace YourNamespace.Forms { public partial class FormTicket : Form { private readonly ITicketRepository _ticketRepository; private readonly IPassengerRepository _passengerRepository; private readonly IFlightRepository _flightRepository; private int? _ticketId; public int Id { set { try { var ticket = _ticketRepository.ReadTicketById(value); if (ticket == null) { throw new InvalidDataException(nameof(ticket)); } comboBoxPassenger.SelectedValue = ticket.PassengerId; comboBoxFlight.SelectedValue = ticket.FlightId; dateTimePickerDateBuy.Value = ticket.DateBuy; numericUpDownTicketPrice.Value = ticket.TicketPrice; _ticketId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormTicket(ITicketRepository ticketRepository, IPassengerRepository passengerRepository, IFlightRepository flightRepository) { InitializeComponent(); _ticketRepository = ticketRepository ?? throw new ArgumentNullException(nameof(ticketRepository)); _passengerRepository = passengerRepository ?? throw new ArgumentNullException(nameof(passengerRepository)); _flightRepository = flightRepository ?? throw new ArgumentNullException(nameof(flightRepository)); comboBoxPassenger.DataSource = _passengerRepository.ReadPassengers(); comboBoxPassenger.DisplayMember = "Name"; comboBoxPassenger.ValueMember = "Id"; comboBoxFlight.DataSource = _flightRepository.ReadFlights(); comboBoxFlight.DisplayMember = "FlightNumber"; comboBoxFlight.ValueMember = "Id"; } private void ButtonSave_Click(object sender, EventArgs e) { try { if (comboBoxPassenger.SelectedIndex < 0 || comboBoxFlight.SelectedIndex < 0) { throw new Exception("Имеются незаполненные поля"); } if (_ticketId.HasValue) { _ticketRepository.UpdateTicket(CreateTicket(_ticketId.Value)); } else { _ticketRepository.CreateTicket(CreateTicket(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); private Ticket CreateTicket(int id) => Ticket.CreateEntity(id, (int)comboBoxPassenger.SelectedValue, (int)comboBoxFlight.SelectedValue, dateTimePickerDateBuy.Value, (int)numericUpDownTicketPrice.Value); } }