using Contracts.BindingModels; using Contracts.BusinessLogicContracts; using Contracts.SearchModels; namespace COP3_ { public partial class FormEdit : Form { private readonly IOrderLogic _orderLogic; private readonly ICityStatusLogic _orderStatusLogic; private int? _id; public int Id { set { _id = value; } } private bool isChanged = false; public FormEdit(IOrderLogic orderLogic, ICityStatusLogic orderStatusLogic) { _orderLogic = orderLogic; _orderStatusLogic = orderStatusLogic; InitializeComponent(); var orderList = _orderStatusLogic.ReadList(null); List list = new List(); foreach (var val in orderList) { list.Add(val.Name); } userControlCheckedList1.SetCheckedListBoxValues(list); userControlCheckedList1.ChangeTypeOfMaxChecked(Components.Types.Exception); userControlCheckedList1.MaxCheckedItemsCount = 6; userControlDatePicker1.MinDate = DateTime.Today.AddDays(1); userControlDatePicker1.MaxDate = DateTime.Today.AddDays(4); selectComponentOrderStatus.FillList(list); textBoxFIO.TextChanged += valueChanged; selectComponentOrderStatus.SelectComponentChanged += valueChanged; userControlDatePicker1.DataContextChanged += valueChanged; userControlCheckedList1.CheckedItemChanged += valueChanged; } private void FormEdit_Add_Load(object sender, EventArgs e) { LoadData(); } private void LoadData() { try { if (_id != null) { var element = _orderLogic.ReadElement(new OrderSearchModel { Id = _id.Value }); if (element != null) { textBoxFIO.Text = element.FIO; userControlCheckedList1.CheckedItemss = element.OrderPath.ToList(); selectComponentOrderStatus.SelectedValue = element.OrderDestination; userControlDatePicker1.Date = element.OrderDeliveryTime.ToDateTime(TimeOnly.MinValue); userControlCheckedList1.CheckedItemss = element.OrderPath.ToList(); } } isChanged = false; } catch (Exception) { throw; } } private void valueChanged(object sender, EventArgs e) { isChanged = true; } private void buttonClose_Click(object sender, EventArgs e) { if (isChanged == true) { var result = MessageBox.Show( "Есть несохраненные изменения. Вы уверены, что хотите закрыть?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question ); if (result == DialogResult.Yes) { Close(); } else if (result == DialogResult.No) { MessageBox.Show("Окей, тогда делайте дальше)", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { Close(); } } private void buttonSave_Click(object sender, EventArgs e) { try { var element = new OrderBindingModel { Id = _id ?? 0, FIO = textBoxFIO.Text, OrderPath = userControlCheckedList1.CheckedItemss.ToArray(), OrderDestination = selectComponentOrderStatus.SelectedValue.ToString(), OrderDeliveryTime = DateOnly.FromDateTime(userControlDatePicker1.Date), }; var operatingResult = _id.HasValue ? _orderLogic.Update(element) : _orderLogic.Create(element); if (!operatingResult) { throw new Exception("Ошибка при создании сущности"); } MessageBox.Show("Создание сущности прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult = DialogResult.OK; Close(); } catch (Exception ex) { MessageBox.Show(ex.Message + "Тут"); } } private void userControlCheckedList1_Load(object sender, EventArgs e) { } } }