using ProjectAirline.Entities; using ProjectAirline.Repositories; 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; namespace ProjectAirline.Forms { public partial class FormAirplane : Form { private readonly IAirplaneRepository _airplaneRepository; private int? _airplaneId; public int Id { set { try { var airplane = _airplaneRepository.ReadAirplaneById(value); if (airplane == null) { throw new InvalidDataException(nameof(airplane)); } textBoxCountry.Text = airplane.Country; textBoxModel.Text = airplane.Model; numericUpDownCapacity.Value = airplane.Capacity; _airplaneId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormAirplane(IAirplaneRepository airplaneRepository) { InitializeComponent(); _airplaneRepository = airplaneRepository ?? throw new ArgumentNullException(nameof(airplaneRepository)); } private void ButtonAdd_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(textBoxCountry.Text) || string.IsNullOrWhiteSpace(textBoxModel.Text)) { throw new Exception("Имеются незаполненные поля"); } if (_airplaneId.HasValue) { _airplaneRepository.UpdateAirplane(CreateAirplane(_airplaneId.Value)); } else { _airplaneRepository.CreateAirplane(CreateAirplane(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); private Airplane CreateAirplane(int id) => Airplane.CreateEntity(id, textBoxCountry.Text, textBoxModel.Text, Convert.ToInt32(numericUpDownCapacity.Value)); } }