From c9e28892029bd19bf48bd5ddc7d35ece25646c8b Mon Sep 17 00:00:00 2001 From: insideq <114825525+insideq@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:53:47 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Components_Production.cs | 8 +- .../ProjectWarehouse/Entities/Employee.cs | 26 ++++ .../Entities/Enums/EmployeePost.cs | 13 ++ .../{Movement_Components.cs => Inventory.cs} | 9 +- .../ProjectWarehouse/Entities/OrderRequest.cs | 4 +- .../FormWarehouse.Designer.cs | 50 ++++--- .../ProjectWarehouse/FormWarehouse.cs | 16 +- .../Forms/FormEmployee.Designer.cs | 140 ++++++++++++++++++ .../ProjectWarehouse/Forms/FormEmployee.cs | 102 +++++++++++++ .../ProjectWarehouse/Forms/FormEmployee.resx | 120 +++++++++++++++ .../Forms/FormEmployees.Designer.cs | 125 ++++++++++++++++ .../ProjectWarehouse/Forms/FormEmployees.cs | 104 +++++++++++++ .../{FormMovement.resx => FormEmployees.resx} | 0 ....Designer.cs => FormInventory.Designer.cs} | 10 +- .../{FormMovement.cs => FormInventory.cs} | 12 +- ...{FormMovements.resx => FormInventory.resx} | 0 ...Designer.cs => FormInventorys.Designer.cs} | 2 +- .../{FormMovements.cs => FormInventorys.cs} | 10 +- .../Forms/FormInventorys.resx | 120 +++++++++++++++ .../Forms/FormOrderRequest.Designer.cs | 49 ++++-- .../Forms/FormOrderRequest.cs | 42 ++++-- .../Forms/FormOrderRequest.resx | 4 +- .../Forms/FormProduction.Designer.cs | 20 +-- ProjectWarehouse/ProjectWarehouse/Program.cs | 10 +- .../ProjectWarehouse/ProjectWarehouse.csproj | 2 +- .../Repositories/IEmployeeRepository.cs | 16 ++ .../Repositories/IInventoryRepository.cs | 16 ++ .../IMovement_ComponentsRepository.cs | 16 -- .../Implementations/EmployeeRepository.cs | 30 ++++ .../Implementations/InventoryRepository.cs | 28 ++++ .../Movement_ComponentsRepository.cs | 28 ---- 31 files changed, 1003 insertions(+), 129 deletions(-) create mode 100644 ProjectWarehouse/ProjectWarehouse/Entities/Employee.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Entities/Enums/EmployeePost.cs rename ProjectWarehouse/ProjectWarehouse/Entities/{Movement_Components.cs => Inventory.cs} (59%) create mode 100644 ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.Designer.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.resx create mode 100644 ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.Designer.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.cs rename ProjectWarehouse/ProjectWarehouse/Forms/{FormMovement.resx => FormEmployees.resx} (100%) rename ProjectWarehouse/ProjectWarehouse/Forms/{FormMovement.Designer.cs => FormInventory.Designer.cs} (96%) rename ProjectWarehouse/ProjectWarehouse/Forms/{FormMovement.cs => FormInventory.cs} (63%) rename ProjectWarehouse/ProjectWarehouse/Forms/{FormMovements.resx => FormInventory.resx} (100%) rename ProjectWarehouse/ProjectWarehouse/Forms/{FormMovements.Designer.cs => FormInventorys.Designer.cs} (99%) rename ProjectWarehouse/ProjectWarehouse/Forms/{FormMovements.cs => FormInventorys.cs} (78%) create mode 100644 ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.resx create mode 100644 ProjectWarehouse/ProjectWarehouse/Repositories/IEmployeeRepository.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Repositories/IInventoryRepository.cs delete mode 100644 ProjectWarehouse/ProjectWarehouse/Repositories/IMovement_ComponentsRepository.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Repositories/Implementations/EmployeeRepository.cs create mode 100644 ProjectWarehouse/ProjectWarehouse/Repositories/Implementations/InventoryRepository.cs delete mode 100644 ProjectWarehouse/ProjectWarehouse/Repositories/Implementations/Movement_ComponentsRepository.cs diff --git a/ProjectWarehouse/ProjectWarehouse/Entities/Components_Production.cs b/ProjectWarehouse/ProjectWarehouse/Entities/Components_Production.cs index dc8838e..da2f4c3 100644 --- a/ProjectWarehouse/ProjectWarehouse/Entities/Components_Production.cs +++ b/ProjectWarehouse/ProjectWarehouse/Entities/Components_Production.cs @@ -2,18 +2,24 @@ public class Components_Production { + public int Id { get; set; } + public int ComponentsID { get; private set; } public int ProductionID { get; private set; } + public int EmployeeID { get; private set; } + public int Count { get; private set; } - public static Components_Production CreateElement(int componentsID, int productionID, int count) + public static Components_Production CreateElement(int id, int componentsID, int productionID, int employeeID, int count) { return new Components_Production { + Id = id, ComponentsID = componentsID, ProductionID = productionID, + EmployeeID = employeeID, Count = count }; } diff --git a/ProjectWarehouse/ProjectWarehouse/Entities/Employee.cs b/ProjectWarehouse/ProjectWarehouse/Entities/Employee.cs new file mode 100644 index 0000000..7ae4259 --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Entities/Employee.cs @@ -0,0 +1,26 @@ +using ProjectWarehouse.Entities.Enums; + +namespace ProjectWarehouse.Entities; + +public class Employee +{ + public int Id { get; private set; } + + public string FirstName { get; private set; } = string.Empty; + + public string LastName { get; private set; } = string.Empty; + + public EmployeePost EmployeePost { get; private set; } + + public static Employee CreateEntity(int id, string first, string last, + EmployeePost employeePost) + { + return new Employee + { + Id = id, + FirstName = first ?? string.Empty, + LastName = last ?? string.Empty, + EmployeePost = employeePost + }; + } +} \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Entities/Enums/EmployeePost.cs b/ProjectWarehouse/ProjectWarehouse/Entities/Enums/EmployeePost.cs new file mode 100644 index 0000000..be33c9d --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Entities/Enums/EmployeePost.cs @@ -0,0 +1,13 @@ +namespace ProjectWarehouse.Entities.Enums; + +[Flags] +public enum EmployeePost +{ + None = 0, + + Ordinary = 1, + + Senior = 2, + + Head = 4 +} \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Entities/Movement_Components.cs b/ProjectWarehouse/ProjectWarehouse/Entities/Inventory.cs similarity index 59% rename from ProjectWarehouse/ProjectWarehouse/Entities/Movement_Components.cs rename to ProjectWarehouse/ProjectWarehouse/Entities/Inventory.cs index 83b5b98..b31ec12 100644 --- a/ProjectWarehouse/ProjectWarehouse/Entities/Movement_Components.cs +++ b/ProjectWarehouse/ProjectWarehouse/Entities/Inventory.cs @@ -1,24 +1,21 @@ namespace ProjectWarehouse.Entities; -public class Movement_Components +public class Inventory { public int Id { get; private set; } public double Quantity { get; private set; } - public DateTime DateMove { get; private set; } - public bool IsDefect { get; private set; } public int ComponentsID { get; private set; } - public static Movement_Components CreateEntity(int id, double quantity, bool isDefect, int ComponentsID) + public static Inventory CreateEntity(int id, double quantity, bool isDefect, int ComponentsID) { - return new Movement_Components + return new Inventory { Id = id, Quantity = quantity, - DateMove = DateTime.Now, IsDefect = isDefect, ComponentsID = ComponentsID }; diff --git a/ProjectWarehouse/ProjectWarehouse/Entities/OrderRequest.cs b/ProjectWarehouse/ProjectWarehouse/Entities/OrderRequest.cs index 7d24f93..91aa390 100644 --- a/ProjectWarehouse/ProjectWarehouse/Entities/OrderRequest.cs +++ b/ProjectWarehouse/ProjectWarehouse/Entities/OrderRequest.cs @@ -4,13 +4,13 @@ public class OrderRequest { public int Id { get; private set; } - public int Quantity { get; private set; } + public double Quantity { get; private set; } public DateTime DateOrder { get; private set; } public int ComponentsID { get; private set; } - public static OrderRequest CreateEntity(int id, int quantity, int componentsID) + public static OrderRequest CreateEntity(int id, double quantity, int componentsID) { return new OrderRequest { diff --git a/ProjectWarehouse/ProjectWarehouse/FormWarehouse.Designer.cs b/ProjectWarehouse/ProjectWarehouse/FormWarehouse.Designer.cs index e1648db..cca09a4 100644 --- a/ProjectWarehouse/ProjectWarehouse/FormWarehouse.Designer.cs +++ b/ProjectWarehouse/ProjectWarehouse/FormWarehouse.Designer.cs @@ -32,15 +32,17 @@ справочникиToolStripMenuItem = new ToolStripMenuItem(); ComponentToolStripMenuItem = new ToolStripMenuItem(); ProductionToolStripMenuItem = new ToolStripMenuItem(); + EmployeeToolStripMenuItem = new ToolStripMenuItem(); операцииToolStripMenuItem = new ToolStripMenuItem(); - MovementToolStripMenuItem = new ToolStripMenuItem(); - заявкиToolStripMenuItem = new ToolStripMenuItem(); + InventoryToolStripMenuItem = new ToolStripMenuItem(); + формированиеЗаявкиToolStripMenuItem = new ToolStripMenuItem(); menuStrip.SuspendLayout(); SuspendLayout(); // // menuStrip // - menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, заявкиToolStripMenuItem }); + menuStrip.ImageScalingSize = new Size(20, 20); + menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem }); menuStrip.Location = new Point(0, 0); menuStrip.Name = "menuStrip"; menuStrip.Size = new Size(784, 24); @@ -49,45 +51,52 @@ // // справочникиToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ComponentToolStripMenuItem, ProductionToolStripMenuItem }); + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ComponentToolStripMenuItem, ProductionToolStripMenuItem, EmployeeToolStripMenuItem }); справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; справочникиToolStripMenuItem.Size = new Size(94, 20); справочникиToolStripMenuItem.Text = "Справочники"; // - // ComponenttoolStripMenuItem + // ComponentToolStripMenuItem // - ComponentToolStripMenuItem.Name = "ComponenttoolStripMenuItem"; + ComponentToolStripMenuItem.Name = "ComponentToolStripMenuItem"; ComponentToolStripMenuItem.Size = new Size(180, 22); ComponentToolStripMenuItem.Text = "Комплектующие"; ComponentToolStripMenuItem.Click += ComponentToolStripMenuItem_Click; // - // типыКомплектующихToolStripMenuItem + // ProductionToolStripMenuItem // ProductionToolStripMenuItem.Name = "ProductionToolStripMenuItem"; ProductionToolStripMenuItem.Size = new Size(180, 22); ProductionToolStripMenuItem.Text = "Продукция"; ProductionToolStripMenuItem.Click += ProductionToolStripMenuItem_Click; // + // EmployeeToolStripMenuItem + // + EmployeeToolStripMenuItem.Name = "EmployeeToolStripMenuItem"; + EmployeeToolStripMenuItem.Size = new Size(180, 22); + EmployeeToolStripMenuItem.Text = "Работники"; + EmployeeToolStripMenuItem.Click += EmployeeToolStripMenuItem_Click; + // // операцииToolStripMenuItem // - операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { MovementToolStripMenuItem }); + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { InventoryToolStripMenuItem, формированиеЗаявкиToolStripMenuItem }); операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; операцииToolStripMenuItem.Size = new Size(75, 20); операцииToolStripMenuItem.Text = "Операции"; // - // отправкаНаПроизводствоToolStripMenuItem + // InventoryToolStripMenuItem // - MovementToolStripMenuItem.Name = "MovementToolStripMenuItem"; - MovementToolStripMenuItem.Size = new Size(221, 22); - MovementToolStripMenuItem.Text = "Отправка на производство"; - MovementToolStripMenuItem.Click += MovementToolStripMenuItem_Click; + InventoryToolStripMenuItem.Name = "InventoryToolStripMenuItem"; + InventoryToolStripMenuItem.Size = new Size(198, 22); + InventoryToolStripMenuItem.Text = "Добавление на склад"; + InventoryToolStripMenuItem.Click += InventoryToolStripMenuItem_Click; // - // заявкиToolStripMenuItem + // формированиеЗаявкиToolStripMenuItem // - заявкиToolStripMenuItem.Name = "заявкиToolStripMenuItem"; - заявкиToolStripMenuItem.Size = new Size(57, 20); - заявкиToolStripMenuItem.Text = "Заявки"; - заявкиToolStripMenuItem.Click += OrderRequestToolStripMenuItem_Click; + формированиеЗаявкиToolStripMenuItem.Name = "формированиеЗаявкиToolStripMenuItem"; + формированиеЗаявкиToolStripMenuItem.Size = new Size(198, 22); + формированиеЗаявкиToolStripMenuItem.Text = "Формирование заявки"; + формированиеЗаявкиToolStripMenuItem.Click += OrderRequestToolStripMenuItem_Click; // // FormWarehouse // @@ -112,9 +121,10 @@ private MenuStrip menuStrip; private ToolStripMenuItem справочникиToolStripMenuItem; private ToolStripMenuItem операцииToolStripMenuItem; - private ToolStripMenuItem заявкиToolStripMenuItem; private ToolStripMenuItem ComponentToolStripMenuItem; - private ToolStripMenuItem MovementToolStripMenuItem; + private ToolStripMenuItem InventoryToolStripMenuItem; private ToolStripMenuItem ProductionToolStripMenuItem; + private ToolStripMenuItem EmployeeToolStripMenuItem; + private ToolStripMenuItem формированиеЗаявкиToolStripMenuItem; } } diff --git a/ProjectWarehouse/ProjectWarehouse/FormWarehouse.cs b/ProjectWarehouse/ProjectWarehouse/FormWarehouse.cs index c2726ac..6a94ec0 100644 --- a/ProjectWarehouse/ProjectWarehouse/FormWarehouse.cs +++ b/ProjectWarehouse/ProjectWarehouse/FormWarehouse.cs @@ -14,11 +14,11 @@ namespace ProjectWarehouse throw new ArgumentNullException(nameof(container)); } - private void MovementToolStripMenuItem_Click(object sender, EventArgs e) + private void InventoryToolStripMenuItem_Click(object sender, EventArgs e) { try { - _container.Resolve().ShowDialog(); + _container.Resolve().ShowDialog(); } catch (Exception ex) { @@ -61,5 +61,17 @@ namespace ProjectWarehouse MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + private void EmployeeToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.Designer.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.Designer.cs new file mode 100644 index 0000000..3ef151f --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.Designer.cs @@ -0,0 +1,140 @@ +namespace ProjectWarehouse.Forms +{ + partial class FormEmployee + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + labelName = new Label(); + labelLastName = new Label(); + labelPost = new Label(); + textBoxFirstName = new TextBox(); + textBoxLastName = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + checkedListBoxPost = new CheckedListBox(); + SuspendLayout(); + // + // labelName + // + labelName.AutoSize = true; + labelName.Location = new Point(68, 38); + labelName.Name = "labelName"; + labelName.Size = new Size(39, 20); + labelName.TabIndex = 0; + labelName.Text = "Имя"; + // + // labelLastName + // + labelLastName.AutoSize = true; + labelLastName.Location = new Point(68, 89); + labelLastName.Name = "labelLastName"; + labelLastName.Size = new Size(73, 20); + labelLastName.TabIndex = 1; + labelLastName.Text = "Фамилия"; + // + // labelPost + // + labelPost.AutoSize = true; + labelPost.Location = new Point(68, 144); + labelPost.Name = "labelPost"; + labelPost.Size = new Size(86, 20); + labelPost.TabIndex = 2; + labelPost.Text = "Должность"; + // + // textBoxFirstName + // + textBoxFirstName.Location = new Point(202, 35); + textBoxFirstName.Name = "textBoxFirstName"; + textBoxFirstName.Size = new Size(151, 27); + textBoxFirstName.TabIndex = 4; + // + // textBoxLastName + // + textBoxLastName.Location = new Point(202, 86); + textBoxLastName.Name = "textBoxLastName"; + textBoxLastName.Size = new Size(151, 27); + textBoxLastName.TabIndex = 5; + // + // buttonSave + // + buttonSave.Location = new Point(68, 281); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(106, 29); + buttonSave.TabIndex = 6; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(254, 281); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(99, 29); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // checkedListBoxPost + // + checkedListBoxPost.FormattingEnabled = true; + checkedListBoxPost.Location = new Point(196, 144); + checkedListBoxPost.Name = "checkedListBoxPost"; + checkedListBoxPost.Size = new Size(156, 114); + checkedListBoxPost.TabIndex = 8; + // + // FormEmployee + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(455, 337); + Controls.Add(checkedListBoxPost); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxLastName); + Controls.Add(textBoxFirstName); + Controls.Add(labelPost); + Controls.Add(labelLastName); + Controls.Add(labelName); + Name = "FormEmployee"; + Text = "Работник"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelName; + private Label labelLastName; + private Label labelPost; + private TextBox textBoxFirstName; + private TextBox textBoxLastName; + private Button buttonSave; + private Button buttonCancel; + private CheckedListBox checkedListBoxPost; + } +} \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.cs new file mode 100644 index 0000000..e87fae9 --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.cs @@ -0,0 +1,102 @@ +using Microsoft.VisualBasic.FileIO; +using ProjectWarehouse.Entities; +using ProjectWarehouse.Entities.Enums; +using ProjectWarehouse.Repositories; +using System.Windows.Forms; + +namespace ProjectWarehouse.Forms +{ + public partial class FormEmployee : Form + { + private readonly IEmployeeRepository _employeeRepository; + + private int? _employeeId; + + public int Id + { + set + { + try + { + var employee = _employeeRepository.ReadEmployeeById(value); + if (employee == null) + { + throw new InvalidDataException(nameof(employee)); + } + + textBoxFirstName.Text = employee.FirstName; + textBoxLastName.Text = employee.LastName; + foreach (EmployeePost elem in Enum.GetValues(typeof(EmployeePost))) + { + if ((elem & employee.EmployeePost) != 0) + { + + checkedListBoxPost.SetItemChecked(checkedListBoxPost.Items.IndexOf(elem), true); + } + } + + _employeeId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormEmployee(IEmployeeRepository employeeRepository) + { + InitializeComponent(); + _employeeRepository = employeeRepository ?? + throw new ArgumentNullException(nameof(employeeRepository)); + + foreach (var elem in Enum.GetValues(typeof(EmployeePost))) + { + checkedListBoxPost.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || string.IsNullOrWhiteSpace(textBoxLastName.Text) || checkedListBoxPost.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_employeeId.HasValue) + { + + _employeeRepository.UpdateEmployee(CreateEmployee(_employeeId.Value)); + } + else + { + + _employeeRepository.CreateEmployee(CreateEmployee(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Employee CreateEmployee(int id) + { + EmployeePost employeePost = EmployeePost.None; + foreach (var elem in checkedListBoxPost.CheckedItems) + { + employeePost |= (EmployeePost)elem; + } + + return Employee.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text, employeePost); + } + } +} diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.resx b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployee.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.Designer.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.Designer.cs new file mode 100644 index 0000000..5961329 --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.Designer.cs @@ -0,0 +1,125 @@ +namespace ProjectWarehouse.Forms +{ + partial class FormEmployees + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(685, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(115, 450); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.минус; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(19, 264); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(75, 74); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = Properties.Resources.редактировать; + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.Location = new Point(19, 135); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(75, 74); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.плюс; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(19, 24); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(75, 74); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(685, 450); + dataGridViewData.TabIndex = 1; + // + // FormComponents + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormEmployees"; + Text = "Работники"; + Load += FormEmployees_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.cs new file mode 100644 index 0000000..0c89eaa --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.cs @@ -0,0 +1,104 @@ +using ProjectWarehouse.Repositories; +using Unity; + +namespace ProjectWarehouse.Forms +{ + public partial class FormEmployees : Form + { + private readonly IUnityContainer _container; + + private readonly IEmployeeRepository _employeeRepository; + + public FormEmployees(IUnityContainer container, IEmployeeRepository employeeRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _employeeRepository = employeeRepository ?? + throw new ArgumentNullException(nameof(employeeRepository)); + } + + private void FormEmployees_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _employeeRepository.DeleteEmployee(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _employeeRepository.ReadEmployees(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.resx b/ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.resx similarity index 100% rename from ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.resx rename to ProjectWarehouse/ProjectWarehouse/Forms/FormEmployees.resx diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.Designer.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.Designer.cs similarity index 96% rename from ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.Designer.cs rename to ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.Designer.cs index 539b7ae..1644827 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.Designer.cs +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.Designer.cs @@ -1,6 +1,6 @@ namespace ProjectWarehouse.Forms { - partial class FormMovement + partial class FormInventory { /// /// Required designer variable. @@ -89,7 +89,7 @@ // buttonSave.Location = new Point(61, 162); buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(75, 23); + buttonSave.Size = new Size(83, 23); buttonSave.TabIndex = 6; buttonSave.Text = "Сохранить"; buttonSave.UseVisualStyleBackColor = true; @@ -105,7 +105,7 @@ buttonCancel.UseVisualStyleBackColor = true; buttonCancel.Click += ButtonCancel_Click; // - // FormMovement + // FormInventory // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; @@ -117,8 +117,8 @@ Controls.Add(comboBoxComponent); Controls.Add(labelCount); Controls.Add(labelComponent); - Name = "FormMovement"; - Text = "Перемещение"; + Name = "FormInventory"; + Text = "Склад"; ((System.ComponentModel.ISupportInitialize)numericUpDownCount).EndInit(); ResumeLayout(false); PerformLayout(); diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.cs similarity index 63% rename from ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.cs rename to ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.cs index 399056f..cf38ff1 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovement.cs +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.cs @@ -3,15 +3,15 @@ using ProjectWarehouse.Repositories; namespace ProjectWarehouse.Forms { - public partial class FormMovement : Form + public partial class FormInventory : Form { - private readonly IMovement_ComponentsRepository _movementRepository; + private readonly IInventoryRepository _inventoryRepository; - public FormMovement(IMovement_ComponentsRepository movementRepository, IComponentsRepository componentsRepository) + public FormInventory(IInventoryRepository inventoryRepository, IComponentsRepository componentsRepository) { InitializeComponent(); - _movementRepository = movementRepository ?? - throw new ArgumentNullException(nameof(movementRepository)); + _inventoryRepository = inventoryRepository ?? + throw new ArgumentNullException(nameof(inventoryRepository)); comboBoxComponent.DataSource = componentsRepository.ReadComponents(); comboBoxComponent.DisplayMember = "Name"; @@ -27,7 +27,7 @@ namespace ProjectWarehouse.Forms throw new Exception("Имеются не заполненные поля"); } - _movementRepository.CreateMovement(Movement_Components.CreateEntity(0, (double)numericUpDownCount.Value, checkBoxIsDefect.Checked, (int)comboBoxComponent.SelectedValue!)); + _inventoryRepository.CreateInventory(Inventory.CreateEntity(0, (double)numericUpDownCount.Value, checkBoxIsDefect.Checked, (int)comboBoxComponent.SelectedValue!)); Close(); } diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.resx b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.resx similarity index 100% rename from ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.resx rename to ProjectWarehouse/ProjectWarehouse/Forms/FormInventory.resx diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.Designer.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.Designer.cs similarity index 99% rename from ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.Designer.cs rename to ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.Designer.cs index 5d73a1e..675f000 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.Designer.cs +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.Designer.cs @@ -1,6 +1,6 @@ namespace ProjectWarehouse.Forms { - partial class FormMovements + partial class FormInventorys { /// /// Required designer variable. diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.cs similarity index 78% rename from ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.cs rename to ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.cs index 85f13cb..41b9d24 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormMovements.cs +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.cs @@ -3,13 +3,13 @@ using Unity; namespace ProjectWarehouse.Forms { - public partial class FormMovements : Form + public partial class FormInventorys : Form { private readonly IUnityContainer _container; - private readonly IMovement_ComponentsRepository _movementRepository; + private readonly IInventoryRepository _movementRepository; - public FormMovements(IUnityContainer container, IMovement_ComponentsRepository movementRepository) + public FormInventorys(IUnityContainer container, IInventoryRepository movementRepository) { InitializeComponent(); _container = container ?? @@ -34,7 +34,7 @@ namespace ProjectWarehouse.Forms { try { - _container.Resolve().ShowDialog(); + _container.Resolve().ShowDialog(); LoadList(); } catch (Exception ex) @@ -43,6 +43,6 @@ namespace ProjectWarehouse.Forms } } - private void LoadList() => dataGridViewData.DataSource = _movementRepository.ReadMovement(); + private void LoadList() => dataGridViewData.DataSource = _movementRepository.ReadInventory(); } } diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.resx b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormInventorys.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.Designer.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.Designer.cs index f24d6e1..641376b 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.Designer.cs +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.Designer.cs @@ -32,24 +32,26 @@ labelComponent = new Label(); comboBoxComponent = new ComboBox(); numericUpDownCount = new NumericUpDown(); + buttonSave = new Button(); + buttonCancel = new Button(); ((System.ComponentModel.ISupportInitialize)numericUpDownCount).BeginInit(); SuspendLayout(); // // labelCount // labelCount.AutoSize = true; - labelCount.Location = new Point(60, 71); + labelCount.Location = new Point(69, 95); labelCount.Name = "labelCount"; - labelCount.Size = new Size(72, 15); + labelCount.Size = new Size(90, 20); labelCount.TabIndex = 0; labelCount.Text = "Количество"; // // labelComponent // labelComponent.AutoSize = true; - labelComponent.Location = new Point(60, 28); + labelComponent.Location = new Point(69, 37); labelComponent.Name = "labelComponent"; - labelComponent.Size = new Size(69, 15); + labelComponent.Size = new Size(88, 20); labelComponent.TabIndex = 1; labelComponent.Text = "Компонент"; // @@ -57,30 +59,55 @@ // comboBoxComponent.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxComponent.FormattingEnabled = true; - comboBoxComponent.Location = new Point(167, 25); + comboBoxComponent.Location = new Point(191, 33); + comboBoxComponent.Margin = new Padding(3, 4, 3, 4); comboBoxComponent.Name = "comboBoxComponent"; - comboBoxComponent.Size = new Size(121, 23); + comboBoxComponent.Size = new Size(138, 28); comboBoxComponent.TabIndex = 2; // // numericUpDownCount // numericUpDownCount.DecimalPlaces = 2; - numericUpDownCount.Location = new Point(168, 71); + numericUpDownCount.Location = new Point(192, 95); + numericUpDownCount.Margin = new Padding(3, 4, 3, 4); numericUpDownCount.Minimum = new decimal(new int[] { 1, 0, 0, 131072 }); numericUpDownCount.Name = "numericUpDownCount"; - numericUpDownCount.Size = new Size(120, 23); + numericUpDownCount.Size = new Size(137, 27); numericUpDownCount.TabIndex = 3; numericUpDownCount.Value = new decimal(new int[] { 1, 0, 0, 131072 }); // + // buttonSave + // + buttonSave.Location = new Point(58, 149); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(105, 29); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(249, 149); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // // FormOrderRequest // - AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(375, 151); + ClientSize = new Size(429, 201); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); Controls.Add(numericUpDownCount); Controls.Add(comboBoxComponent); Controls.Add(labelComponent); Controls.Add(labelCount); + Margin = new Padding(3, 4, 3, 4); Name = "FormOrderRequest"; Text = "Заявка"; ((System.ComponentModel.ISupportInitialize)numericUpDownCount).EndInit(); @@ -94,5 +121,7 @@ private Label labelComponent; private ComboBox comboBoxComponent; private NumericUpDown numericUpDownCount; + private Button buttonSave; + private Button buttonCancel; } } \ No newline at end of file diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.cs b/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.cs index b9f12ef..3b087b5 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.cs +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.cs @@ -1,20 +1,42 @@ -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 ProjectWarehouse.Entities; +using ProjectWarehouse.Repositories; namespace ProjectWarehouse.Forms { public partial class FormOrderRequest : Form { - public FormOrderRequest() + private readonly IOrderRequestRepository _orderRepository; + + public FormOrderRequest(IOrderRequestRepository orderRepository, IComponentsRepository componentsRepository) { InitializeComponent(); + _orderRepository = orderRepository ?? + throw new ArgumentNullException(nameof(orderRepository)); + + comboBoxComponent.DataSource = componentsRepository.ReadComponents(); + comboBoxComponent.DisplayMember = "Name"; + comboBoxComponent.ValueMember = "Id"; } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxComponent.SelectedIndex < 0) + { + throw new Exception("Имеются не заполненные поля"); + } + + _orderRepository.CreateOrderRequest(OrderRequest.CreateEntity(0, (double)numericUpDownCount.Value, (int)comboBoxComponent.SelectedValue!)); + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); } } diff --git a/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.resx b/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.resx index af32865..8b2ff64 100644 --- a/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.resx +++ b/ProjectWarehouse/ProjectWarehouse/Forms/FormOrderRequest.resx @@ -1,7 +1,7 @@