Работает добавление, редактирование и удаление заказов
This commit is contained in:
parent
e396435644
commit
0f80c8fa43
@ -1,4 +1,5 @@
|
||||
using InternetShopDataModels.Models;
|
||||
using InternetShopContracts.DataViewModels;
|
||||
using InternetShopDataModels.Models;
|
||||
|
||||
namespace InternetShopContracts.DataBindingModels
|
||||
{
|
||||
@ -9,5 +10,16 @@ namespace InternetShopContracts.DataBindingModels
|
||||
public string ImagePath { get; set; } = string.Empty;
|
||||
public List<string> ProductNames { get; set; } = new List<string>();
|
||||
public int Id { get; set; }
|
||||
|
||||
public static OrderBindingModel FromViewModel(OrderViewModel viewModel)
|
||||
{
|
||||
OrderBindingModel model = new OrderBindingModel();
|
||||
model.Id = viewModel.Id;
|
||||
model.CustomerFIO = viewModel.CustomerFIO;
|
||||
model.CustomerEmail = viewModel.CustomerEmail;
|
||||
model.ImagePath = viewModel.ImagePath;
|
||||
model.ProductNames = viewModel.ProductNames;
|
||||
return model;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,16 @@ namespace InternetShopContracts.DataViewModels
|
||||
public List<string> ProductNames { get; set; } = new List<string>();
|
||||
[DisplayName("ID")]
|
||||
public int Id { get; set; }
|
||||
public string ProductsString => string.Join(", ", ProductNames);
|
||||
public string ProductsString
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.Join(", ", ProductNames);
|
||||
}
|
||||
set
|
||||
{
|
||||
ProductNames = value.Split(',').Select(x => x.ToString().Trim()).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Components" Version="1.0.5" />
|
||||
<PackageReference Include="Components" Version="1.0.6" />
|
||||
<PackageReference Include="FixedWinFormsLibrary1" Version="1.0.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
|
@ -28,6 +28,7 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormOrderEdit));
|
||||
textBoxCustomerFIO = new TextBox();
|
||||
labelCustomerFIO = new Label();
|
||||
writeComponentCustomerEmail = new UserComponentsOption19.WriteComponent();
|
||||
@ -35,8 +36,10 @@
|
||||
labelOrderImage = new Label();
|
||||
textBoxImagePath = new TextBox();
|
||||
buttonSelectImage = new Button();
|
||||
listBoxComponentProducts = new WinFormsLibrary1.List();
|
||||
labelOrderProducts = new Label();
|
||||
buttonAccept = new Button();
|
||||
buttonCancel = new Button();
|
||||
productsList = new Components.UserControlCheckedList();
|
||||
SuspendLayout();
|
||||
//
|
||||
// textBoxCustomerFIO
|
||||
@ -45,7 +48,7 @@
|
||||
textBoxCustomerFIO.Location = new Point(133, 6);
|
||||
textBoxCustomerFIO.Name = "textBoxCustomerFIO";
|
||||
textBoxCustomerFIO.PlaceholderText = "Иванов Иван Иванович";
|
||||
textBoxCustomerFIO.Size = new Size(688, 27);
|
||||
textBoxCustomerFIO.Size = new Size(741, 27);
|
||||
textBoxCustomerFIO.TabIndex = 0;
|
||||
textBoxCustomerFIO.TextChanged += textBoxCustomerFIO_TextChanged;
|
||||
//
|
||||
@ -63,7 +66,7 @@
|
||||
writeComponentCustomerEmail.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
writeComponentCustomerEmail.Location = new Point(133, 39);
|
||||
writeComponentCustomerEmail.Name = "writeComponentCustomerEmail";
|
||||
writeComponentCustomerEmail.Size = new Size(688, 44);
|
||||
writeComponentCustomerEmail.Size = new Size(741, 44);
|
||||
writeComponentCustomerEmail.TabIndex = 2;
|
||||
writeComponentCustomerEmail.Template = null;
|
||||
//
|
||||
@ -90,14 +93,14 @@
|
||||
textBoxImagePath.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBoxImagePath.Location = new Point(177, 83);
|
||||
textBoxImagePath.Name = "textBoxImagePath";
|
||||
textBoxImagePath.Size = new Size(544, 27);
|
||||
textBoxImagePath.Size = new Size(597, 27);
|
||||
textBoxImagePath.TabIndex = 5;
|
||||
textBoxImagePath.TextChanged += textBoxImagePath_TextChanged;
|
||||
//
|
||||
// buttonSelectImage
|
||||
//
|
||||
buttonSelectImage.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
buttonSelectImage.Location = new Point(724, 82);
|
||||
buttonSelectImage.Location = new Point(777, 82);
|
||||
buttonSelectImage.Name = "buttonSelectImage";
|
||||
buttonSelectImage.Size = new Size(97, 29);
|
||||
buttonSelectImage.TabIndex = 6;
|
||||
@ -105,15 +108,6 @@
|
||||
buttonSelectImage.UseVisualStyleBackColor = true;
|
||||
buttonSelectImage.Click += buttonSelectImage_Click;
|
||||
//
|
||||
// listBoxComponentProducts
|
||||
//
|
||||
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
|
||||
//
|
||||
labelOrderProducts.AutoSize = true;
|
||||
@ -123,13 +117,49 @@
|
||||
labelOrderProducts.TabIndex = 8;
|
||||
labelOrderProducts.Text = "Продукты в заказе";
|
||||
//
|
||||
// buttonAccept
|
||||
//
|
||||
buttonAccept.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonAccept.Location = new Point(777, 382);
|
||||
buttonAccept.Name = "buttonAccept";
|
||||
buttonAccept.Size = new Size(94, 29);
|
||||
buttonAccept.TabIndex = 9;
|
||||
buttonAccept.Text = "Сохранить";
|
||||
buttonAccept.UseVisualStyleBackColor = true;
|
||||
buttonAccept.Click += buttonAccept_Click;
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonCancel.Location = new Point(677, 382);
|
||||
buttonCancel.Name = "buttonCancel";
|
||||
buttonCancel.Size = new Size(94, 29);
|
||||
buttonCancel.TabIndex = 10;
|
||||
buttonCancel.Text = "Отмена";
|
||||
buttonCancel.UseVisualStyleBackColor = true;
|
||||
buttonCancel.Click += buttonCancel_Click;
|
||||
//
|
||||
// productsList
|
||||
//
|
||||
productsList.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
productsList.BackColor = Color.Transparent;
|
||||
productsList.CheckedItems = (List<string>)resources.GetObject("productsList.CheckedItems");
|
||||
productsList.Location = new Point(12, 155);
|
||||
productsList.Margin = new Padding(3, 4, 3, 4);
|
||||
productsList.MaxCheckedItemsCount = 1;
|
||||
productsList.Name = "productsList";
|
||||
productsList.Size = new Size(557, 255);
|
||||
productsList.TabIndex = 11;
|
||||
//
|
||||
// FormOrderEdit
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(8F, 20F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(833, 382);
|
||||
ClientSize = new Size(886, 423);
|
||||
Controls.Add(productsList);
|
||||
Controls.Add(buttonCancel);
|
||||
Controls.Add(buttonAccept);
|
||||
Controls.Add(labelOrderProducts);
|
||||
Controls.Add(listBoxComponentProducts);
|
||||
Controls.Add(buttonSelectImage);
|
||||
Controls.Add(textBoxImagePath);
|
||||
Controls.Add(labelOrderImage);
|
||||
@ -154,7 +184,9 @@
|
||||
private Label labelOrderImage;
|
||||
private TextBox textBoxImagePath;
|
||||
private Button buttonSelectImage;
|
||||
private WinFormsLibrary1.List listBoxComponentProducts;
|
||||
private Label labelOrderProducts;
|
||||
private Button buttonAccept;
|
||||
private Button buttonCancel;
|
||||
private Components.UserControlCheckedList productsList;
|
||||
}
|
||||
}
|
@ -1,31 +1,42 @@
|
||||
using DocumentFormat.OpenXml.Bibliography;
|
||||
using InternetShopContracts.DataBindingModels;
|
||||
using InternetShopContracts.DataViewModels;
|
||||
using InternetShopContracts.LogicsContracts;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace InternetShopForms.Orders
|
||||
{
|
||||
public partial class FormOrderEdit : Form
|
||||
{
|
||||
private IOrderLogic _orderLogic;
|
||||
private IProductLogic _productLogic;
|
||||
public int? OrderId;
|
||||
private bool IsFieldsChanged = false;
|
||||
private bool IsFieldsSaved = false;
|
||||
private string OriginalTitle;
|
||||
public FormOrderEdit(IOrderLogic orderLogic)
|
||||
private bool IsFormLoaded = false;
|
||||
public FormOrderEdit(IOrderLogic orderLogic, IProductLogic productLogic)
|
||||
{
|
||||
InitializeComponent();
|
||||
_orderLogic = orderLogic;
|
||||
OriginalTitle = Text;
|
||||
writeComponentCustomerEmail.ChangeText += textBoxCustomerEmail_Changed;
|
||||
listBoxComponentProducts.SelectedElementChange += listBoxProductsList_Changed;
|
||||
productsList.CheckedItemChanged += listBoxProductsList_Changed;
|
||||
_productLogic = productLogic;
|
||||
productsList.MaxCheckedItemsCount = 1000;
|
||||
writeComponentCustomerEmail.Template = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
|
||||
}
|
||||
|
||||
private void FieldChanged()
|
||||
{
|
||||
if (!IsFieldsChanged)
|
||||
if (IsFormLoaded)
|
||||
{
|
||||
Text = OriginalTitle + "*";
|
||||
if (!IsFieldsChanged)
|
||||
{
|
||||
Text = OriginalTitle + "*";
|
||||
}
|
||||
IsFieldsChanged = true;
|
||||
}
|
||||
IsFieldsChanged = true;
|
||||
}
|
||||
|
||||
private void buttonSelectImage_Click(object sender, EventArgs e)
|
||||
@ -51,13 +62,21 @@ namespace InternetShopForms.Orders
|
||||
|
||||
private void FormOrderEdit_Load(object sender, EventArgs e)
|
||||
{
|
||||
LoadProductsList();
|
||||
if (OrderId != null)
|
||||
{
|
||||
LoadData();
|
||||
LoadOrderData();
|
||||
}
|
||||
IsFormLoaded = true;
|
||||
}
|
||||
|
||||
private void LoadData()
|
||||
private void LoadProductsList()
|
||||
{
|
||||
var products = _productLogic.ReadList();
|
||||
productsList.SetCheckedListBoxValues(products.Select(x => x.Name).ToList());
|
||||
}
|
||||
|
||||
private void LoadOrderData()
|
||||
{
|
||||
OrderViewModel? orderViewModel = _orderLogic.ReadElement(
|
||||
new InternetShopContracts.DataSearchModels.OrderSearchModel { Id = OrderId }
|
||||
@ -69,13 +88,13 @@ namespace InternetShopForms.Orders
|
||||
}
|
||||
textBoxCustomerFIO.Text = orderViewModel.CustomerFIO;
|
||||
textBoxImagePath.Text = orderViewModel.ImagePath;
|
||||
writeComponentCustomerEmail.Text = orderViewModel.CustomerEmail;
|
||||
listBoxComponentProducts.ListSet(orderViewModel.ProductNames.ToArray());
|
||||
writeComponentCustomerEmail.WriteTextInTextBox = orderViewModel.CustomerEmail;
|
||||
productsList.CheckedItems = orderViewModel.ProductNames;
|
||||
}
|
||||
|
||||
private void FormOrderEdit_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (IsFieldsChanged)
|
||||
if (IsFieldsChanged && !IsFieldsSaved)
|
||||
{
|
||||
DialogResult result = MessageBox.Show("Изменения не сохранятся, вы хотите выйти?",
|
||||
"Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
@ -105,5 +124,68 @@ namespace InternetShopForms.Orders
|
||||
{
|
||||
FieldChanged();
|
||||
}
|
||||
|
||||
private void buttonAccept_Click(object sender, EventArgs e)
|
||||
{
|
||||
OrderBindingModel? orderBindingModel = new OrderBindingModel();
|
||||
if (OrderId == null)
|
||||
{
|
||||
orderBindingModel = new OrderBindingModel();
|
||||
}
|
||||
else
|
||||
{
|
||||
var viewModel = _orderLogic.ReadElement(new InternetShopContracts.DataSearchModels.OrderSearchModel { Id = OrderId });
|
||||
if (viewModel == null)
|
||||
{
|
||||
throw new Exception("Заказ не найден");
|
||||
}
|
||||
orderBindingModel = OrderBindingModel.FromViewModel(viewModel);
|
||||
}
|
||||
|
||||
orderBindingModel.CustomerFIO = textBoxCustomerFIO.Text;
|
||||
try
|
||||
{
|
||||
orderBindingModel.CustomerEmail = writeComponentCustomerEmail.WriteTextInTextBox;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Проверьте поле \"Email заказчика\":\n" + ex.Message);
|
||||
return;
|
||||
}
|
||||
orderBindingModel.ImagePath = textBoxImagePath.Text;
|
||||
orderBindingModel.ProductNames = productsList.CheckedItems;
|
||||
|
||||
try
|
||||
{
|
||||
bool savedOK;
|
||||
if (OrderId == null)
|
||||
{
|
||||
savedOK = _orderLogic.Create(orderBindingModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
savedOK = _orderLogic.Update(orderBindingModel);
|
||||
}
|
||||
if (savedOK)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
IsFieldsSaved = true;
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Не удалось сохранить заказ");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Произошла ошибка при сохранении:\n" + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,4 +117,12 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="productsList.CheckedItems" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAEAQAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5
|
||||
c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVi
|
||||
bGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAI
|
||||
CAkCAAAAAAAAAAAAAAARAgAAAAAAAAAL
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
@ -28,6 +28,7 @@ namespace InternetShopForms
|
||||
];
|
||||
|
||||
tableComponent.ConfigureColumns(configureColumns);
|
||||
tableComponent.dataGridView1.AllowUserToDeleteRows = false;
|
||||
|
||||
tableComponent.dataGridView1.Columns[0].Visible = false;
|
||||
KeyPreview = true;
|
||||
@ -52,7 +53,7 @@ namespace InternetShopForms
|
||||
try
|
||||
{
|
||||
var orders = _orderLogic.ReadList();
|
||||
tableComponent.FillData<OrderViewModel>(orders);
|
||||
tableComponent.FillData(orders);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -156,12 +157,16 @@ namespace InternetShopForms
|
||||
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
_orderLogic.Delete(new OrderSearchModel { Id = selectedOrder.Id });
|
||||
MessageBox.Show("Çàêàç óäàëåí");
|
||||
if(_orderLogic.Delete(new OrderSearchModel { Id = selectedOrder.Id }))
|
||||
{
|
||||
MessageBox.Show("Çàêàç óäàëåí");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Îøèáêà óäàëåíèÿ");
|
||||
}
|
||||
LoadData();
|
||||
}
|
||||
LoadData();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user