From 2d50707587c820a0c580fdf7f3234b9b1afa6189 Mon Sep 17 00:00:00 2001 From: "evasina2312@gmail.com" Date: Tue, 9 May 2023 21:57:43 +0400 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ComputersShop/FormClient.Designer.cs | 58 ++++- ComputersShop/ComputersShop/FormClient.cs | 73 +++++- ComputersShop/ComputersShop/FormClient.resx | 62 +---- .../ComputersShop/FormCreateOrder.Designer.cs | 33 ++- .../ComputersShop/FormCreateOrder.cs | 23 +- .../ComputersShop/FormMain.Designer.cs | 62 ++--- ComputersShop/ComputersShop/FormMain.cs | 10 + ComputersShop/ComputersShop/Program.cs | 3 + .../BindingModels/OrderBindingModel.cs | 1 + .../SearchModels/OrderSearchModel.cs | 1 + .../ViewModels/OrderViewModel.cs | 3 + .../Implements/OrderStorage.cs | 2 + .../Migrations/20230509164211_fix.Designer.cs | 212 ++++++++++++++++++ .../Migrations/20230509164211_fix.cs | 22 ++ .../Models/Order.cs | 8 +- .../Models/{Client.cs => `.cs} | 0 16 files changed, 462 insertions(+), 111 deletions(-) create mode 100644 ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.Designer.cs create mode 100644 ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.cs rename ComputersShop/ComputersShopDatabaseImplement/Models/{Client.cs => `.cs} (100%) diff --git a/ComputersShop/ComputersShop/FormClient.Designer.cs b/ComputersShop/ComputersShop/FormClient.Designer.cs index d9a78ef..a73115e 100644 --- a/ComputersShop/ComputersShop/FormClient.Designer.cs +++ b/ComputersShop/ComputersShop/FormClient.Designer.cs @@ -28,12 +28,64 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.buttonRef = new System.Windows.Forms.Button(); + this.buttonDel = new System.Windows.Forms.Button(); + this.dataGridView = new System.Windows.Forms.DataGridView(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); + this.SuspendLayout(); + // + // buttonRef + // + this.buttonRef.Location = new System.Drawing.Point(623, 52); + this.buttonRef.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.buttonRef.Name = "buttonRef"; + this.buttonRef.Size = new System.Drawing.Size(175, 31); + this.buttonRef.TabIndex = 4; + this.buttonRef.Text = "Обновить"; + this.buttonRef.UseVisualStyleBackColor = true; + // + // buttonDel + // + this.buttonDel.Location = new System.Drawing.Point(623, 13); + this.buttonDel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.buttonDel.Name = "buttonDel"; + this.buttonDel.Size = new System.Drawing.Size(175, 31); + this.buttonDel.TabIndex = 3; + this.buttonDel.Text = "Удалить"; + this.buttonDel.UseVisualStyleBackColor = true; + // + // dataGridView + // + this.dataGridView.BackgroundColor = System.Drawing.SystemColors.ControlLightLight; + this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView.Location = new System.Drawing.Point(12, 2); + this.dataGridView.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.dataGridView.Name = "dataGridView"; + this.dataGridView.RowHeadersWidth = 51; + this.dataGridView.RowTemplate.Height = 25; + this.dataGridView.Size = new System.Drawing.Size(605, 596); + this.dataGridView.TabIndex = 2; + // + // FormClient + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "FormClient"; + this.ClientSize = new System.Drawing.Size(816, 584); + this.Controls.Add(this.buttonRef); + this.Controls.Add(this.buttonDel); + this.Controls.Add(this.dataGridView); + this.Name = "FormClient"; + this.Text = "Клиенты"; + this.Load += new System.EventHandler(this.FormClients_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); + this.ResumeLayout(false); + } #endregion + + private Button buttonRef; + private Button buttonDel; + private DataGridView dataGridView; } } \ No newline at end of file diff --git a/ComputersShop/ComputersShop/FormClient.cs b/ComputersShop/ComputersShop/FormClient.cs index cb70e7e..051ef8a 100644 --- a/ComputersShop/ComputersShop/FormClient.cs +++ b/ComputersShop/ComputersShop/FormClient.cs @@ -1,20 +1,73 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using ComputersShopContracts.BindingModels; +using ComputersShopContracts.BusinessLogicsContracts; +using Microsoft.Extensions.Logging; namespace ComputersShopView { public partial class FormClient : Form { - public FormClient() + private readonly ILogger _logger; + private readonly IClientLogic _logic; + public FormClient(ILogger logger, IClientLogic logic) { InitializeComponent(); + _logger = logger; + _logic = logic; + } + private void FormClients_Load(object sender, EventArgs e) + { + LoadData(); + } + private void LoadData() + { + try + { + var list = _logic.ReadList(null); + if (list != null) + { + dataGridView.DataSource = list; + dataGridView.Columns["Id"].Visible = false; + dataGridView.Columns["ClientFIO"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + _logger.LogInformation("Загрузка клиентов"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки клиентов"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + int id = + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Удаление клиента"); + try + { + if (!_logic.Delete(new ClientBindingModel + { + Id = id + })) + { + throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления клиента"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + private void ButtonRef_click(object sender, EventArgs e) + { + LoadData(); } } } diff --git a/ComputersShop/ComputersShop/FormClient.resx b/ComputersShop/ComputersShop/FormClient.resx index 1af7de1..f298a7b 100644 --- a/ComputersShop/ComputersShop/FormClient.resx +++ b/ComputersShop/ComputersShop/FormClient.resx @@ -1,64 +1,4 @@ - - - + diff --git a/ComputersShop/ComputersShop/FormCreateOrder.Designer.cs b/ComputersShop/ComputersShop/FormCreateOrder.Designer.cs index b9715e2..4ea7d49 100644 --- a/ComputersShop/ComputersShop/FormCreateOrder.Designer.cs +++ b/ComputersShop/ComputersShop/FormCreateOrder.Designer.cs @@ -36,13 +36,14 @@ this.textBoxSum = new System.Windows.Forms.TextBox(); this.textBoxCount = new System.Windows.Forms.TextBox(); this.comboBoxComputer = new System.Windows.Forms.ComboBox(); - this.Load += new System.EventHandler(this.FormCreateOrder_Load); + this.comboBoxClient = new System.Windows.Forms.ComboBox(); + this.labelClient = new System.Windows.Forms.Label(); this.SuspendLayout(); // // buttonCancel // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCancel.Location = new System.Drawing.Point(289, 126); + this.buttonCancel.Location = new System.Drawing.Point(288, 174); this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(86, 31); @@ -54,7 +55,7 @@ // buttonSave // this.buttonSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonSave.Location = new System.Drawing.Point(180, 126); + this.buttonSave.Location = new System.Drawing.Point(179, 174); this.buttonSave.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonSave.Name = "buttonSave"; this.buttonSave.Size = new System.Drawing.Size(103, 31); @@ -120,11 +121,32 @@ this.comboBoxComputer.TabIndex = 5; this.comboBoxComputer.SelectedIndexChanged += new System.EventHandler(this.ComboBoxComputer_SelectedIndexChanged); // + // comboBoxClient + // + this.comboBoxClient.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxClient.FormattingEnabled = true; + this.comboBoxClient.Location = new System.Drawing.Point(123, 130); + this.comboBoxClient.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.comboBoxClient.Name = "comboBoxClient"; + this.comboBoxClient.Size = new System.Drawing.Size(255, 28); + this.comboBoxClient.TabIndex = 14; + // + // labelClient + // + this.labelClient.AutoSize = true; + this.labelClient.Location = new System.Drawing.Point(14, 133); + this.labelClient.Name = "labelClient"; + this.labelClient.Size = new System.Drawing.Size(58, 20); + this.labelClient.TabIndex = 13; + this.labelClient.Text = "Клиент"; + // // FormCreateOrder // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(387, 170); + this.ClientSize = new System.Drawing.Size(386, 218); + this.Controls.Add(this.comboBoxClient); + this.Controls.Add(this.labelClient); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonSave); this.Controls.Add(this.labelSum); @@ -135,6 +157,7 @@ this.Controls.Add(this.comboBoxComputer); this.Name = "FormCreateOrder"; this.Text = "Заказ"; + this.Load += new System.EventHandler(this.FormCreateOrder_Load); this.ResumeLayout(false); this.PerformLayout(); @@ -150,5 +173,7 @@ private TextBox textBoxSum; private TextBox textBoxCount; private ComboBox comboBoxComputer; + private ComboBox comboBoxClient; + private Label labelClient; } } \ No newline at end of file diff --git a/ComputersShop/ComputersShop/FormCreateOrder.cs b/ComputersShop/ComputersShop/FormCreateOrder.cs index 1526b61..b6a7fbd 100644 --- a/ComputersShop/ComputersShop/FormCreateOrder.cs +++ b/ComputersShop/ComputersShop/FormCreateOrder.cs @@ -10,12 +10,14 @@ namespace ComputersShopView private readonly ILogger _logger; private readonly IComputerLogic _logicC; private readonly IOrderLogic _logicO; - public FormCreateOrder(ILogger logger, IComputerLogic logicC, IOrderLogic logicO) + private readonly IClientLogic _logicCl; + public FormCreateOrder(ILogger logger, IComputerLogic logicC, IOrderLogic logicO, IClientLogic logicCl) { InitializeComponent(); _logger = logger; _logicC = logicC; _logicO = logicO; + _logicCl = logicCl; } private void FormCreateOrder_Load(object sender, EventArgs e) { @@ -28,6 +30,14 @@ namespace ComputersShopView comboBoxComputer.DataSource = list; comboBoxComputer.SelectedItem = null; } + var clients = _logicCl.ReadList(null); + if (clients != null) + { + comboBoxClient.DisplayMember = "ClientFIO"; + comboBoxClient.ValueMember = "Id"; + comboBoxClient.DataSource = clients; + comboBoxClient.SelectedItem = null; + } } private void CalcSum() { @@ -68,17 +78,20 @@ namespace ComputersShopView MessageBox.Show("Выберите изделие", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } + if (comboBoxClient.SelectedValue == null) + { + MessageBox.Show("Выберите клиента", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } _logger.LogInformation("Создание заказа"); try { - int id = Convert.ToInt32(comboBoxComputer.SelectedValue); - int counr = Convert.ToInt32(textBoxCount.Text); - double sum = Convert.ToDouble(textBoxSum.Text); var operationResult = _logicO.CreateOrder(new OrderBindingModel { ComputerId = Convert.ToInt32(comboBoxComputer.SelectedValue), Count = Convert.ToInt32(textBoxCount.Text), - Sum = Convert.ToDouble(textBoxSum.Text) + Sum = Convert.ToDouble(textBoxSum.Text), + ClientId = Convert.ToInt32(comboBoxClient.SelectedValue) }); if (!operationResult) { diff --git a/ComputersShop/ComputersShop/FormMain.Designer.cs b/ComputersShop/ComputersShop/FormMain.Designer.cs index ddd57a7..d4113d2 100644 --- a/ComputersShop/ComputersShop/FormMain.Designer.cs +++ b/ComputersShop/ComputersShop/FormMain.Designer.cs @@ -33,22 +33,23 @@ this.buttonOrderReady = new System.Windows.Forms.Button(); this.buttonTakeOrderInWork = new System.Windows.Forms.Button(); this.buttonCreateOrder = new System.Windows.Forms.Button(); - this.dataGridView = new System.Windows.Forms.DataGridView(); this.menuStrip = new System.Windows.Forms.MenuStrip(); this.refbooksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.componentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.computersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clientsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.reportsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.reportComponentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.reportComputerComponentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.reportOrdersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); + this.dataGridView = new System.Windows.Forms.DataGridView(); this.menuStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); this.SuspendLayout(); // // buttonRef // - this.buttonRef.Location = new System.Drawing.Point(927, 195); + this.buttonRef.Location = new System.Drawing.Point(1083, 195); this.buttonRef.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonRef.Name = "buttonRef"; this.buttonRef.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -60,7 +61,7 @@ // // buttonIssuedOrder // - this.buttonIssuedOrder.Location = new System.Drawing.Point(928, 156); + this.buttonIssuedOrder.Location = new System.Drawing.Point(1084, 156); this.buttonIssuedOrder.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonIssuedOrder.Name = "buttonIssuedOrder"; this.buttonIssuedOrder.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -72,7 +73,7 @@ // // buttonOrderReady // - this.buttonOrderReady.Location = new System.Drawing.Point(927, 117); + this.buttonOrderReady.Location = new System.Drawing.Point(1083, 117); this.buttonOrderReady.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonOrderReady.Name = "buttonOrderReady"; this.buttonOrderReady.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -84,7 +85,7 @@ // // buttonTakeOrderInWork // - this.buttonTakeOrderInWork.Location = new System.Drawing.Point(927, 79); + this.buttonTakeOrderInWork.Location = new System.Drawing.Point(1083, 79); this.buttonTakeOrderInWork.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonTakeOrderInWork.Name = "buttonTakeOrderInWork"; this.buttonTakeOrderInWork.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -96,7 +97,7 @@ // // buttonCreateOrder // - this.buttonCreateOrder.Location = new System.Drawing.Point(927, 40); + this.buttonCreateOrder.Location = new System.Drawing.Point(1083, 40); this.buttonCreateOrder.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.buttonCreateOrder.Name = "buttonCreateOrder"; this.buttonCreateOrder.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -106,18 +107,6 @@ this.buttonCreateOrder.UseVisualStyleBackColor = true; this.buttonCreateOrder.Click += new System.EventHandler(this.ButtonCreateOrder_Click); // - // dataGridView - // - this.dataGridView.BackgroundColor = System.Drawing.SystemColors.ControlLightLight; - this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView.Location = new System.Drawing.Point(12, 40); - this.dataGridView.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.dataGridView.Name = "dataGridView"; - this.dataGridView.RowHeadersWidth = 51; - this.dataGridView.RowTemplate.Height = 25; - this.dataGridView.Size = new System.Drawing.Size(909, 608); - this.dataGridView.TabIndex = 3; - // // menuStrip // this.menuStrip.ImageScalingSize = new System.Drawing.Size(20, 20); @@ -126,7 +115,7 @@ this.reportsToolStripMenuItem}); this.menuStrip.Location = new System.Drawing.Point(0, 0); this.menuStrip.Name = "menuStrip"; - this.menuStrip.Size = new System.Drawing.Size(1256, 28); + this.menuStrip.Size = new System.Drawing.Size(1418, 28); this.menuStrip.TabIndex = 9; this.menuStrip.Text = "menuStrip1"; // @@ -134,7 +123,8 @@ // this.refbooksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.componentsToolStripMenuItem, - this.computersToolStripMenuItem}); + this.computersToolStripMenuItem, + this.clientsToolStripMenuItem}); this.refbooksToolStripMenuItem.Name = "refbooksToolStripMenuItem"; this.refbooksToolStripMenuItem.Size = new System.Drawing.Size(117, 24); this.refbooksToolStripMenuItem.Text = "Справочники"; @@ -142,17 +132,24 @@ // componentsToolStripMenuItem // this.componentsToolStripMenuItem.Name = "componentsToolStripMenuItem"; - this.componentsToolStripMenuItem.Size = new System.Drawing.Size(182, 26); + this.componentsToolStripMenuItem.Size = new System.Drawing.Size(224, 26); this.componentsToolStripMenuItem.Text = "Компоненты"; this.componentsToolStripMenuItem.Click += new System.EventHandler(this.ComponentsToolStripMenuItem_Click); // // computersToolStripMenuItem // this.computersToolStripMenuItem.Name = "computersToolStripMenuItem"; - this.computersToolStripMenuItem.Size = new System.Drawing.Size(182, 26); + this.computersToolStripMenuItem.Size = new System.Drawing.Size(224, 26); this.computersToolStripMenuItem.Text = "Изделия"; this.computersToolStripMenuItem.Click += new System.EventHandler(this.ComputersToolStripMenuItem_Click); // + // clientsToolStripMenuItem + // + this.clientsToolStripMenuItem.Name = "clientsToolStripMenuItem"; + this.clientsToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.clientsToolStripMenuItem.Text = "Клиенты"; + this.clientsToolStripMenuItem.Click += new System.EventHandler(this.ClientsToolStripMenuItem_Click); + // // reportsToolStripMenuItem // this.reportsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -184,11 +181,23 @@ this.reportOrdersToolStripMenuItem.Text = "Список заказов"; this.reportOrdersToolStripMenuItem.Click += new System.EventHandler(this.ReportOrdersToolStripMenuItem_Click); // + // dataGridView + // + this.dataGridView.BackgroundColor = System.Drawing.SystemColors.ControlLightLight; + this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView.Location = new System.Drawing.Point(12, 40); + this.dataGridView.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.dataGridView.Name = "dataGridView"; + this.dataGridView.RowHeadersWidth = 51; + this.dataGridView.RowTemplate.Height = 25; + this.dataGridView.Size = new System.Drawing.Size(1050, 608); + this.dataGridView.TabIndex = 3; + // // FormMain // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1256, 677); + this.ClientSize = new System.Drawing.Size(1418, 677); this.Controls.Add(this.buttonRef); this.Controls.Add(this.buttonIssuedOrder); this.Controls.Add(this.buttonOrderReady); @@ -200,9 +209,9 @@ this.Name = "FormMain"; this.Text = "Продажа компьютеров"; this.Load += new System.EventHandler(this.FormMain_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); this.menuStrip.ResumeLayout(false); this.menuStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -215,7 +224,6 @@ private Button buttonOrderReady; private Button buttonTakeOrderInWork; private Button buttonCreateOrder; - private DataGridView dataGridView; private MenuStrip menuStrip; private ToolStripMenuItem refbooksToolStripMenuItem; private ToolStripMenuItem componentsToolStripMenuItem; @@ -224,5 +232,7 @@ private ToolStripMenuItem reportComponentsToolStripMenuItem; private ToolStripMenuItem reportComputerComponentsToolStripMenuItem; private ToolStripMenuItem reportOrdersToolStripMenuItem; + private ToolStripMenuItem clientsToolStripMenuItem; + private DataGridView dataGridView; } } \ No newline at end of file diff --git a/ComputersShop/ComputersShop/FormMain.cs b/ComputersShop/ComputersShop/FormMain.cs index e47f50d..4d8d036 100644 --- a/ComputersShop/ComputersShop/FormMain.cs +++ b/ComputersShop/ComputersShop/FormMain.cs @@ -31,6 +31,7 @@ namespace ComputersShopView { dataGridView.DataSource = list; dataGridView.Columns["ComputerId"].Visible = false; + dataGridView.Columns["ClientId"].Visible = false; dataGridView.Columns["ComputerName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } } @@ -170,5 +171,14 @@ namespace ComputersShopView LoadData(); } } + private void ClientsToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormClient)); + if (service is FormClient form) + { + form.ShowDialog(); + LoadData(); + } + } } } \ No newline at end of file diff --git a/ComputersShop/ComputersShop/Program.cs b/ComputersShop/ComputersShop/Program.cs index e2942a5..b82d2ab 100644 --- a/ComputersShop/ComputersShop/Program.cs +++ b/ComputersShop/ComputersShop/Program.cs @@ -35,9 +35,11 @@ namespace ComputersShopView services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -51,6 +53,7 @@ namespace ComputersShopView services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); } } } \ No newline at end of file diff --git a/ComputersShop/ComputersShopContracts/BindingModels/OrderBindingModel.cs b/ComputersShop/ComputersShopContracts/BindingModels/OrderBindingModel.cs index a31006b..e29177a 100644 --- a/ComputersShop/ComputersShopContracts/BindingModels/OrderBindingModel.cs +++ b/ComputersShop/ComputersShopContracts/BindingModels/OrderBindingModel.cs @@ -12,5 +12,6 @@ namespace ComputersShopContracts.BindingModels public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; public DateTime DateCreate { get; set; } = DateTime.Now; public DateTime? DateImplement { get; set; } + public int ClientId { get; set; } } } diff --git a/ComputersShop/ComputersShopContracts/SearchModels/OrderSearchModel.cs b/ComputersShop/ComputersShopContracts/SearchModels/OrderSearchModel.cs index ce11a80..938c3f3 100644 --- a/ComputersShop/ComputersShopContracts/SearchModels/OrderSearchModel.cs +++ b/ComputersShop/ComputersShopContracts/SearchModels/OrderSearchModel.cs @@ -5,5 +5,6 @@ public int? Id { get; set; } public DateTime? DateFrom { get; set; } public DateTime? DateTo { get; set;} + public int? ClientId { get; set; } } } diff --git a/ComputersShop/ComputersShopContracts/ViewModels/OrderViewModel.cs b/ComputersShop/ComputersShopContracts/ViewModels/OrderViewModel.cs index a8c5cbd..5e0a537 100644 --- a/ComputersShop/ComputersShopContracts/ViewModels/OrderViewModel.cs +++ b/ComputersShop/ComputersShopContracts/ViewModels/OrderViewModel.cs @@ -9,6 +9,7 @@ namespace ComputersShopContracts.ViewModels [DisplayName("Номер")] public int Id { get; set; } public int ComputerId { get; set; } + public int ClientId { get; set; } [DisplayName("Изделие")] public string ComputerName { get; set; } = string.Empty; [DisplayName("Количество")] @@ -21,5 +22,7 @@ namespace ComputersShopContracts.ViewModels public DateTime DateCreate { get; set; } = DateTime.Now; [DisplayName("Дата выполнения")] public DateTime? DateImplement { get; set; } + [DisplayName("Клиент")] + public string ClientFIO { get; set; } = string.Empty; } } diff --git a/ComputersShop/ComputersShopDatabaseImplement/Implements/OrderStorage.cs b/ComputersShop/ComputersShopDatabaseImplement/Implements/OrderStorage.cs index 83c04cb..ddcb1f0 100644 --- a/ComputersShop/ComputersShopDatabaseImplement/Implements/OrderStorage.cs +++ b/ComputersShop/ComputersShopDatabaseImplement/Implements/OrderStorage.cs @@ -4,6 +4,7 @@ using ComputersShopContracts.StoragesContracts; using ComputersShopContracts.ViewModels; using ComputersShopDatabaseImplement.Models; using DocumentFormat.OpenXml.InkML; +using Microsoft.EntityFrameworkCore; namespace ComputersShopDatabaseImplement.Implements { @@ -13,6 +14,7 @@ namespace ComputersShopDatabaseImplement.Implements { using var context = new ComputersShopDatabase(); List orderList = context.Orders + .Include(x => x.Client) .Select(x => x.GetViewModel) .ToList(); foreach (var order in orderList) diff --git a/ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.Designer.cs b/ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.Designer.cs new file mode 100644 index 0000000..aa4f519 --- /dev/null +++ b/ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.Designer.cs @@ -0,0 +1,212 @@ +// +using System; +using ComputersShopDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ComputersShopDatabaseImplement.Migrations +{ + [DbContext(typeof(ComputersShopDatabase))] + [Migration("20230509164211_fix")] + partial class fix + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Computer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComputerName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.ToTable("Computers"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.ComputerComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("ComputerId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("ComputerId"); + + b.ToTable("ComputerComponents"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComputerId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComputerId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.ComputerComponent", b => + { + b.HasOne("ComputersShopDatabaseImplement.Models.Component", "Component") + .WithMany("ComputerComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputersShopDatabaseImplement.Models.Computer", "Computer") + .WithMany("Components") + .HasForeignKey("ComputerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Computer"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Order", b => + { + b.HasOne("ComputersShopDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputersShopDatabaseImplement.Models.Computer", null) + .WithMany("Orders") + .HasForeignKey("ComputerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Client", b => + { + b.Navigation("Orders"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Component", b => + { + b.Navigation("ComputerComponents"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplement.Models.Computer", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.cs b/ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.cs new file mode 100644 index 0000000..62848f6 --- /dev/null +++ b/ComputersShop/ComputersShopDatabaseImplement/Migrations/20230509164211_fix.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputersShopDatabaseImplement.Migrations +{ + /// + public partial class fix : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/ComputersShop/ComputersShopDatabaseImplement/Models/Order.cs b/ComputersShop/ComputersShopDatabaseImplement/Models/Order.cs index af8f334..86055c8 100644 --- a/ComputersShop/ComputersShopDatabaseImplement/Models/Order.cs +++ b/ComputersShop/ComputersShopDatabaseImplement/Models/Order.cs @@ -22,6 +22,7 @@ namespace ComputersShopDatabaseImplement.Models public DateTime? DateImplement { get; private set; } [Required] public int ClientId { get; private set; } + [Required] public virtual Client? Client { get; set; } public static Order? Create(OrderBindingModel model) @@ -38,7 +39,8 @@ namespace ComputersShopDatabaseImplement.Models Sum = model.Sum, Status = model.Status, DateCreate = model.DateCreate, - DateImplement = model.DateImplement + DateImplement = model.DateImplement, + ClientId = model.ClientId }; } public static Order Create(OrderViewModel model) @@ -74,7 +76,9 @@ namespace ComputersShopDatabaseImplement.Models Sum = Sum, Status = Status, DateCreate = DateCreate, - DateImplement = DateImplement + DateImplement = DateImplement, + ClientId = ClientId, + ClientFIO = Client?.ClientFIO ?? string.Empty }; } } diff --git a/ComputersShop/ComputersShopDatabaseImplement/Models/Client.cs b/ComputersShop/ComputersShopDatabaseImplement/Models/`.cs similarity index 100% rename from ComputersShop/ComputersShopDatabaseImplement/Models/Client.cs rename to ComputersShop/ComputersShopDatabaseImplement/Models/`.cs