using ProjectLibrary.Entites; using ProjectLibrary.Repositores; using ProjectLibrary.Repositories; namespace ProjectLibrary.Forms { public partial class FTicket_Extension : Form { private readonly ITicketExtensionsRepository _ticketExtensionsRepository; private int? _extensionId; public int Id { set { try { var ticket = _ticketExtensionsRepository.ReadTicketExtensionById(value); if (ticket == null) { throw new InvalidOperationException("Заказ не найден."); } comboBoxId.SelectedItem = ticket.ReaderID; dtpLastUpdateDate.Text = ticket.LastUpdateDate.ToString(); dtpNextUpdateDate.Text = ticket.NextUpdateDate.ToString(); _extensionId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при загрузке данных", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } public FTicket_Extension(ITicketExtensionsRepository ticketRepository, IReaderRepository readerRepository) { InitializeComponent(); _ticketExtensionsRepository = ticketRepository ?? throw new ArgumentNullException(nameof(ticketRepository)); readerRepository = readerRepository ?? throw new ArgumentNullException(nameof(readerRepository)); comboBoxId.DataSource = readerRepository.ReadReaders(); comboBoxId.DisplayMember = "Name"; // Предполагается, что у Reader есть свойство Name comboBoxId.ValueMember = "Id"; // И свойство Id для идентификации } private void btnSave_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(dtpLastUpdateDate.Text) || string.IsNullOrWhiteSpace(dtpNextUpdateDate.Text) || comboBoxId.SelectedItem == null) { throw new Exception("Не все поля заполнены."); } var ticket = TicketExtensions.CreateEntity( 0, (int)comboBoxId.SelectedValue!, DateTime.Parse(dtpLastUpdateDate.Text), DateTime.Parse(dtpNextUpdateDate.Text) ); if (_extensionId.HasValue) { _ticketExtensionsRepository.UpdateTicketExtension(ticket); } else { _ticketExtensionsRepository.CreateTicketExtension(ticket); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } } }