From e3964356441afab7e773a0a740d493947c6d89f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=9F=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BF=D0=BE=D0=B2?= Date: Wed, 4 Dec 2024 16:36:07 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=20=D0=BE=D1=82=D1=81=D0=BB=D0=B5=D0=B6=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BD=D0=B0=20=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B5=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Orders/FormOrderEdit.Designer.cs | 23 ++--- .../InternetShopForms/Orders/FormOrderEdit.cs | 90 ++++++++++++++++++- .../Orders/FormOrdersList.cs | 49 ++++++---- 3 files changed, 132 insertions(+), 30 deletions(-) diff --git a/InternetShop/InternetShopForms/Orders/FormOrderEdit.Designer.cs b/InternetShop/InternetShopForms/Orders/FormOrderEdit.Designer.cs index 24fda51..1d07bcc 100644 --- a/InternetShop/InternetShopForms/Orders/FormOrderEdit.Designer.cs +++ b/InternetShop/InternetShopForms/Orders/FormOrderEdit.Designer.cs @@ -35,7 +35,7 @@ labelOrderImage = new Label(); textBoxImagePath = new TextBox(); buttonSelectImage = new Button(); - list1 = new WinFormsLibrary1.List(); + listBoxComponentProducts = new WinFormsLibrary1.List(); labelOrderProducts = new Label(); SuspendLayout(); // @@ -47,6 +47,7 @@ textBoxCustomerFIO.PlaceholderText = "Иванов Иван Иванович"; textBoxCustomerFIO.Size = new Size(688, 27); textBoxCustomerFIO.TabIndex = 0; + textBoxCustomerFIO.TextChanged += textBoxCustomerFIO_TextChanged; // // labelCustomerFIO // @@ -91,6 +92,7 @@ textBoxImagePath.Name = "textBoxImagePath"; textBoxImagePath.Size = new Size(544, 27); textBoxImagePath.TabIndex = 5; + textBoxImagePath.TextChanged += textBoxImagePath_TextChanged; // // buttonSelectImage // @@ -103,14 +105,14 @@ buttonSelectImage.UseVisualStyleBackColor = true; buttonSelectImage.Click += buttonSelectImage_Click; // - // list1 + // listBoxComponentProducts // - list1.Location = new Point(-21, 117); - list1.Margin = new Padding(3, 4, 3, 4); - list1.Name = "list1"; - list1.SelectedItem = ""; - list1.Size = new Size(382, 371); - list1.TabIndex = 7; + listBoxComponentProducts.Location = new Point(-21, 117); + listBoxComponentProducts.Margin = new Padding(3, 4, 3, 4); + listBoxComponentProducts.Name = "listBoxComponentProducts"; + listBoxComponentProducts.SelectedItem = ""; + listBoxComponentProducts.Size = new Size(382, 371); + listBoxComponentProducts.TabIndex = 7; // // labelOrderProducts // @@ -127,7 +129,7 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(833, 382); Controls.Add(labelOrderProducts); - Controls.Add(list1); + Controls.Add(listBoxComponentProducts); Controls.Add(buttonSelectImage); Controls.Add(textBoxImagePath); Controls.Add(labelOrderImage); @@ -137,6 +139,7 @@ Controls.Add(textBoxCustomerFIO); Name = "FormOrderEdit"; Text = "Заказ"; + FormClosing += FormOrderEdit_FormClosing; Load += FormOrderEdit_Load; ResumeLayout(false); PerformLayout(); @@ -151,7 +154,7 @@ private Label labelOrderImage; private TextBox textBoxImagePath; private Button buttonSelectImage; - private WinFormsLibrary1.List list1; + private WinFormsLibrary1.List listBoxComponentProducts; private Label labelOrderProducts; } } \ No newline at end of file diff --git a/InternetShop/InternetShopForms/Orders/FormOrderEdit.cs b/InternetShop/InternetShopForms/Orders/FormOrderEdit.cs index 20e7698..cbb2088 100644 --- a/InternetShop/InternetShopForms/Orders/FormOrderEdit.cs +++ b/InternetShop/InternetShopForms/Orders/FormOrderEdit.cs @@ -1,4 +1,6 @@ -using InternetShopContracts.LogicsContracts; +using DocumentFormat.OpenXml.Bibliography; +using InternetShopContracts.DataViewModels; +using InternetShopContracts.LogicsContracts; namespace InternetShopForms.Orders { @@ -6,20 +8,102 @@ namespace InternetShopForms.Orders { private IOrderLogic _orderLogic; public int? OrderId; + private bool IsFieldsChanged = false; + private string OriginalTitle; public FormOrderEdit(IOrderLogic orderLogic) { InitializeComponent(); _orderLogic = orderLogic; + OriginalTitle = Text; + writeComponentCustomerEmail.ChangeText += textBoxCustomerEmail_Changed; + listBoxComponentProducts.SelectedElementChange += listBoxProductsList_Changed; + } + + private void FieldChanged() + { + if (!IsFieldsChanged) + { + Text = OriginalTitle + "*"; + } + IsFieldsChanged = true; } private void buttonSelectImage_Click(object sender, EventArgs e) { - // todo + using (OpenFileDialog openFileDialog = new OpenFileDialog()) + { + openFileDialog.InitialDirectory = "d:\\tmp"; + openFileDialog.Filter = "Image files (*.jpg;*.png)|*.jpg;*.png|All files (*.*)|*.*"; + openFileDialog.FilterIndex = 1; + openFileDialog.RestoreDirectory = true; + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + string prevText = textBoxImagePath.Text; + textBoxImagePath.Text = openFileDialog.FileName; + if (prevText != textBoxImagePath.Text) + { + FieldChanged(); + } + } + } } private void FormOrderEdit_Load(object sender, EventArgs e) { - // todo + if (OrderId != null) + { + LoadData(); + } + } + + private void LoadData() + { + OrderViewModel? orderViewModel = _orderLogic.ReadElement( + new InternetShopContracts.DataSearchModels.OrderSearchModel { Id = OrderId } + ); + if (orderViewModel == null) + { + MessageBox.Show("Заказ не найден", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + textBoxCustomerFIO.Text = orderViewModel.CustomerFIO; + textBoxImagePath.Text = orderViewModel.ImagePath; + writeComponentCustomerEmail.Text = orderViewModel.CustomerEmail; + listBoxComponentProducts.ListSet(orderViewModel.ProductNames.ToArray()); + } + + private void FormOrderEdit_FormClosing(object sender, FormClosingEventArgs e) + { + if (IsFieldsChanged) + { + DialogResult result = MessageBox.Show("Изменения не сохранятся, вы хотите выйти?", + "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (result == DialogResult.No) + { + e.Cancel = true; + } + } + } + + private void textBoxCustomerFIO_TextChanged(object sender, EventArgs e) + { + FieldChanged(); + } + + private void textBoxImagePath_TextChanged(object sender, EventArgs e) + { + FieldChanged(); + } + + private void listBoxProductsList_Changed(object sender, EventArgs e) + { + FieldChanged(); + } + + private void textBoxCustomerEmail_Changed(object sender, EventArgs e) + { + FieldChanged(); } } } diff --git a/InternetShop/InternetShopForms/Orders/FormOrdersList.cs b/InternetShop/InternetShopForms/Orders/FormOrdersList.cs index 9012914..1309353 100644 --- a/InternetShop/InternetShopForms/Orders/FormOrdersList.cs +++ b/InternetShop/InternetShopForms/Orders/FormOrdersList.cs @@ -8,6 +8,7 @@ using InternetShopForms.Orders; using InternetShopForms.Products; using InternetShopLogics.Logics; using System.Windows.Forms; +using WinFormsLibrary1; namespace InternetShopForms { @@ -109,13 +110,21 @@ namespace InternetShopForms private void EditOrder() { + OrderViewModel? selectedOrder = null; + try + { + selectedOrder = tableComponent.GetSelectedObject(); + } + catch (Exception ex) + { + MessageBox.Show(" "); + return; + } var service = Program.ServiceProvider?.GetService(typeof(FormOrderEdit)); if (!(service is FormOrderEdit form)) { return; } - - var selectedOrder = tableComponent.GetSelectedObject(); form.OrderId = Convert.ToInt32(selectedOrder.Id); if (form.ShowDialog() == DialogResult.OK) { @@ -127,26 +136,32 @@ namespace InternetShopForms { try { - var selectedOrder = tableComponent.GetSelectedObject(); - - if (selectedOrder != null) + OrderViewModel? selectedOrder = null; + try { - var result = MessageBox.Show( - " ?", - "", - MessageBoxButtons.YesNo, - MessageBoxIcon.Question - ); + selectedOrder = tableComponent.GetSelectedObject(); + } + catch (Exception ex) + { + MessageBox.Show(" "); + return; + } - if (result == DialogResult.Yes) - { - _orderLogic.Delete(new OrderSearchModel { Id = selectedOrder.Id }); - MessageBox.Show(" "); - LoadData(); - } + var result = MessageBox.Show( + " ?", + "", + MessageBoxButtons.YesNo, + MessageBoxIcon.Question + ); + + if (result == DialogResult.Yes) + { + _orderLogic.Delete(new OrderSearchModel { Id = selectedOrder.Id }); + MessageBox.Show(" "); LoadData(); } LoadData(); + } catch (Exception ex) {