Реализовал отслеживание изменений на форме редактирования заказа

This commit is contained in:
Никита Потапов 2024-12-04 16:36:07 +04:00
parent dbf68b6614
commit e396435644
3 changed files with 132 additions and 30 deletions

View File

@ -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;
}
}

View File

@ -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();
}
}
}

View File

@ -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<OrderViewModel>();
}
catch (Exception ex)
{
MessageBox.Show("Âûáåðèòå ñòðîêó");
return;
}
var service = Program.ServiceProvider?.GetService(typeof(FormOrderEdit));
if (!(service is FormOrderEdit form))
{
return;
}
var selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>();
form.OrderId = Convert.ToInt32(selectedOrder.Id);
if (form.ShowDialog() == DialogResult.OK)
{
@ -127,26 +136,32 @@ namespace InternetShopForms
{
try
{
var selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>();
if (selectedOrder != null)
OrderViewModel? selectedOrder = null;
try
{
var result = MessageBox.Show(
"Âû õîòèòå óäàëèòü çàêàç?",
"Ïðåäóïðåæäåíèå",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question
);
selectedOrder = tableComponent.GetSelectedObject<OrderViewModel>();
}
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)
{