diff --git a/ProjectAtelier/ProjectAtelier/Entities/Client.cs b/ProjectAtelier/ProjectAtelier/Entities/Client.cs new file mode 100644 index 0000000..2a452bc --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Client.cs @@ -0,0 +1,17 @@ +namespace ProjectAtelier.Entities; + +public class Client +{ + public int Id { get; private set; } + public string Name { get; private set; } = string.Empty; + public string Phone { get; private set; } = string.Empty; + public static Client CreateEntity(int id, string name, string phone) + { + return new Client + { + Id = id, + Name = name ?? string.Empty, + Phone = phone ?? string.Empty + }; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Cloth.cs b/ProjectAtelier/ProjectAtelier/Entities/Cloth.cs new file mode 100644 index 0000000..32b89fe --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Cloth.cs @@ -0,0 +1,19 @@ +using ProjectAtelier.Entities.Enums; + +namespace ProjectAtelier.Entities; + +public class Cloth +{ + public int Id { get; private set; } + public ClothType ClothType { get; private set; } + public double Length { get; private set; } + public static Cloth CreateEntity(int id, ClothType clothType, double length) + { + return new Cloth + { + Id = id, + ClothType = clothType, + Length = length + }; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Entrance.cs b/ProjectAtelier/ProjectAtelier/Entities/Entrance.cs new file mode 100644 index 0000000..4e44bd3 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Entrance.cs @@ -0,0 +1,19 @@ +namespace ProjectAtelier.Entities; + +public class Entrance +{ + public int Id { get; private set; } + public int ClothId { get; private set; } + public double Value { get; private set; } + public DateTime Date { get; private set; } + public static Entrance CreateOperation(int id, int clothId, int value) + { + return new Entrance + { + Id = id, + ClothId = clothId, + Value = value, + Date = DateTime.Now + }; + } +} diff --git a/ProjectAtelier/ProjectAtelier/Entities/Enums/ClothType.cs b/ProjectAtelier/ProjectAtelier/Entities/Enums/ClothType.cs new file mode 100644 index 0000000..47ddcc5 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Enums/ClothType.cs @@ -0,0 +1,14 @@ +namespace ProjectAtelier.Entities.Enums; + +public enum ClothType +{ + None = 0, + + Сotton = 1, + + Viscose = 2, + + Ecoleather = 3, + + Footer = 4 +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Enums/ModelType.cs b/ProjectAtelier/ProjectAtelier/Entities/Enums/ModelType.cs new file mode 100644 index 0000000..b023b98 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Enums/ModelType.cs @@ -0,0 +1,14 @@ +namespace ProjectAtelier.Entities.Enums; + +public enum ModelType +{ + None = 0, + + Raincoat = 1, + + Mittens = 2, + + Stockings = 3, + + Dress = 4 +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Enums/Prints.cs b/ProjectAtelier/ProjectAtelier/Entities/Enums/Prints.cs new file mode 100644 index 0000000..4f87c72 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Enums/Prints.cs @@ -0,0 +1,13 @@ +namespace ProjectAtelier.Entities.Enums; + +[Flags] +public enum Prints +{ + None = 0, + + Text = 1, + + Animal = 2, + + Object = 4 +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs b/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs new file mode 100644 index 0000000..e33fc2e --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs @@ -0,0 +1,17 @@ +namespace ProjectAtelier.Entities; + +public class Expenditure +{ + public int Id { get; private set; } + public int ClothId { get; private set; } + public double Value { get; private set; } + public static Expenditure CreateOperation(int id, int clothId, double value) + { + return new Expenditure + { + Id = id, + ClothId = clothId, + Value = value + }; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Model.cs b/ProjectAtelier/ProjectAtelier/Entities/Model.cs new file mode 100644 index 0000000..5077e82 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Model.cs @@ -0,0 +1,19 @@ +using ProjectAtelier.Entities.Enums; + +namespace ProjectAtelier.Entities; + +public class Model +{ + public int Id { get; private set; } + public ModelType ModelType { get; private set; } + public IEnumerable Expenditures { get; private set; } = []; + public static Model CreateEntity(int id, ModelType modelType, IEnumerable expenditures) + { + return new Model + { + Id = id, + ModelType = modelType, + Expenditures = expenditures + }; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/ModelList.cs b/ProjectAtelier/ProjectAtelier/Entities/ModelList.cs new file mode 100644 index 0000000..c8bebd0 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/ModelList.cs @@ -0,0 +1,17 @@ +namespace ProjectAtelier.Entities; + +public class ModelList +{ + public int Id { get; private set; } + public int ModelId { get; private set; } + public int Count { get; private set; } + public static ModelList CreateElement(int id, int modelId, int count) + { + return new ModelList + { + Id = id, + ModelId = modelId, + Count = count + }; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/Order.cs b/ProjectAtelier/ProjectAtelier/Entities/Order.cs new file mode 100644 index 0000000..dfc00a9 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/Order.cs @@ -0,0 +1,25 @@ +using ProjectAtelier.Entities.Enums; + +namespace ProjectAtelier.Entities; + +public class Order +{ + public int Id { get; private set; } + public int ClientId { get; private set; } + public int Prise { get; private set; } + public IEnumerable ModelLists { get; private set; } = []; + public DateTime Date { get; private set; } + public Prints Prints { get; private set; } + public static Order CreateOperation(int id, int clientId, int prise, IEnumerable modelLists, Prints prints) + { + return new Order + { + Id = id, + ClientId = clientId, + Prise = prise, + ModelLists = modelLists, + Date = DateTime.Now, + Prints = prints + }; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Form1.Designer.cs b/ProjectAtelier/ProjectAtelier/Form1.Designer.cs deleted file mode 100644 index 558c1ca..0000000 --- a/ProjectAtelier/ProjectAtelier/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectAtelier -{ - partial class Form1 - { - /// - /// 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() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} diff --git a/ProjectAtelier/ProjectAtelier/Form1.cs b/ProjectAtelier/ProjectAtelier/Form1.cs deleted file mode 100644 index e279473..0000000 --- a/ProjectAtelier/ProjectAtelier/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectAtelier -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/ProjectAtelier/ProjectAtelier/FormAtelier.Designer.cs b/ProjectAtelier/ProjectAtelier/FormAtelier.Designer.cs new file mode 100644 index 0000000..1631b07 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/FormAtelier.Designer.cs @@ -0,0 +1,140 @@ +namespace ProjectAtelier +{ + partial class FormAtelier + { + /// + /// 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() + { + menuStrip1 = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + clientsToolStripMenuItem = new ToolStripMenuItem(); + тканиToolStripMenuItem = new ToolStripMenuItem(); + моделиToolStripMenuItem = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + поступлениеТканиToolStripMenuItem = new ToolStripMenuItem(); + расходТканиToolStripMenuItem = new ToolStripMenuItem(); + отчётыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip1.SuspendLayout(); + SuspendLayout(); + // + // menuStrip1 + // + menuStrip1.ImageScalingSize = new Size(20, 20); + menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчётыToolStripMenuItem }); + menuStrip1.Location = new Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Padding = new Padding(5, 2, 0, 2); + menuStrip1.Size = new Size(684, 24); + menuStrip1.TabIndex = 0; + menuStrip1.Text = "menuStrip"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { clientsToolStripMenuItem, тканиToolStripMenuItem, моделиToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(94, 20); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // clientsToolStripMenuItem + // + clientsToolStripMenuItem.Name = "clientsToolStripMenuItem"; + clientsToolStripMenuItem.Size = new Size(180, 22); + clientsToolStripMenuItem.Text = "Клиенты"; + clientsToolStripMenuItem.Click += ClientsToolStripMenuItem_Click; + // + // тканиToolStripMenuItem + // + тканиToolStripMenuItem.Name = "тканиToolStripMenuItem"; + тканиToolStripMenuItem.Size = new Size(180, 22); + тканиToolStripMenuItem.Text = "Ткани"; + тканиToolStripMenuItem.Click += ClothsToolStripMenuItem_Click; + // + // моделиToolStripMenuItem + // + моделиToolStripMenuItem.Name = "моделиToolStripMenuItem"; + моделиToolStripMenuItem.Size = new Size(180, 22); + моделиToolStripMenuItem.Text = "Модели"; + моделиToolStripMenuItem.Click += ModelsToolStripMenuItem_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { поступлениеТканиToolStripMenuItem, расходТканиToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(75, 20); + операцииToolStripMenuItem.Text = "Операции"; + // + // поступлениеТканиToolStripMenuItem + // + поступлениеТканиToolStripMenuItem.Name = "поступлениеТканиToolStripMenuItem"; + поступлениеТканиToolStripMenuItem.Size = new Size(181, 22); + поступлениеТканиToolStripMenuItem.Text = "Поступление ткани"; + поступлениеТканиToolStripMenuItem.Click += EntrancesToolStripMenuItem_Click; + // + // расходТканиToolStripMenuItem + // + расходТканиToolStripMenuItem.Name = "расходТканиToolStripMenuItem"; + расходТканиToolStripMenuItem.Size = new Size(181, 22); + расходТканиToolStripMenuItem.Text = "Заказ"; + расходТканиToolStripMenuItem.Click += OrdersToolStripMenuItem_Click; + // + // отчётыToolStripMenuItem + // + отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; + отчётыToolStripMenuItem.Size = new Size(60, 20); + отчётыToolStripMenuItem.Text = "Отчёты"; + // + // FormAtelier + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources.tkan_skladki_blesk_otliv; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(684, 302); + Controls.Add(menuStrip1); + MainMenuStrip = menuStrip1; + Margin = new Padding(3, 2, 3, 2); + Name = "FormAtelier"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Ателье"; + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip1; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem clientsToolStripMenuItem; + private ToolStripMenuItem тканиToolStripMenuItem; + private ToolStripMenuItem моделиToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem поступлениеТканиToolStripMenuItem; + private ToolStripMenuItem расходТканиToolStripMenuItem; + private ToolStripMenuItem отчётыToolStripMenuItem; + } +} diff --git a/ProjectAtelier/ProjectAtelier/FormAtelier.cs b/ProjectAtelier/ProjectAtelier/FormAtelier.cs new file mode 100644 index 0000000..23aacdf --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/FormAtelier.cs @@ -0,0 +1,77 @@ +using ProjectAtelier.Forms; +using Unity; + +namespace ProjectAtelier +{ + public partial class FormAtelier : Form + { + private readonly IUnityContainer _container; + + public FormAtelier(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + } + private void ClothsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ClientsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ModelsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void EntrancesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void OrdersToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } +} diff --git a/ProjectAtelier/ProjectAtelier/FormAtelier.resx b/ProjectAtelier/ProjectAtelier/FormAtelier.resx new file mode 100644 index 0000000..a0623c8 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/FormAtelier.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormClient.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormClient.Designer.cs new file mode 100644 index 0000000..ff6995e --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormClient.Designer.cs @@ -0,0 +1,118 @@ +namespace ProjectAtelier.Forms +{ + partial class FormClient + { + /// + /// 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(); + textBoxName = new TextBox(); + labelPhone = new Label(); + textBoxPhone = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // labelName + // + labelName.AutoSize = true; + labelName.Location = new Point(21, 19); + labelName.Name = "labelName"; + labelName.Size = new Size(45, 20); + labelName.TabIndex = 0; + labelName.Text = "ФИО:"; + // + // textBoxName + // + textBoxName.Location = new Point(112, 16); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(400, 27); + textBoxName.TabIndex = 1; + // + // labelPhone + // + labelPhone.AutoSize = true; + labelPhone.Location = new Point(21, 62); + labelPhone.Name = "labelPhone"; + labelPhone.Size = new Size(72, 20); + labelPhone.TabIndex = 2; + labelPhone.Text = "Телефон:"; + // + // textBoxPhone + // + textBoxPhone.Location = new Point(112, 59); + textBoxPhone.Name = "textBoxPhone"; + textBoxPhone.Size = new Size(177, 27); + textBoxPhone.TabIndex = 3; + // + // buttonSave + // + buttonSave.Location = new Point(318, 58); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 29); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(418, 57); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormClient + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(540, 101); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxPhone); + Controls.Add(labelPhone); + Controls.Add(textBoxName); + Controls.Add(labelName); + Name = "FormClient"; + StartPosition = FormStartPosition.CenterParent; + Text = "Клиент"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelName; + private TextBox textBoxName; + private Label labelPhone; + private TextBox textBoxPhone; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormClient.cs b/ProjectAtelier/ProjectAtelier/Forms/FormClient.cs new file mode 100644 index 0000000..a8bc59c --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormClient.cs @@ -0,0 +1,63 @@ +using ProjectAtelier.Entities; +using ProjectAtelier.Repositories; + +namespace ProjectAtelier.Forms +{ + public partial class FormClient : Form + { + private readonly IClientRepository _clientRepository; + private int? _clientId; + public int Id + { + set + { + try + { + var client = _clientRepository.ReadClientById(value); + if (client == null) + { + throw new InvalidDataException(nameof(client)); + } + textBoxName.Text = client.Name; + textBoxPhone.Text = client.Phone; + _clientId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormClient(IClientRepository clientRepository) + { + InitializeComponent(); + _clientRepository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository)); + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxPhone.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_clientId.HasValue) + { + _clientRepository.UpdateClient(CreateClient(_clientId.Value)); + } + else + { + _clientRepository.CreateClient(CreateClient(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private Client CreateClient(int id) => Client.CreateEntity(id, textBoxName.Text, textBoxPhone.Text); + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Form1.resx b/ProjectAtelier/ProjectAtelier/Forms/FormClient.resx similarity index 93% rename from ProjectAtelier/ProjectAtelier/Form1.resx rename to ProjectAtelier/ProjectAtelier/Forms/FormClient.resx index 1af7de1..af32865 100644 --- a/ProjectAtelier/ProjectAtelier/Form1.resx +++ b/ProjectAtelier/ProjectAtelier/Forms/FormClient.resx @@ -1,17 +1,17 @@  - diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormClients.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormClients.Designer.cs new file mode 100644 index 0000000..4a0c52b --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormClients.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectAtelier.Forms +{ + partial class FormClients + { + /// + /// 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(); + buttonUpd = new Button(); + buttonDel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonUpd); + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(848, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(134, 573); + panel1.TabIndex = 0; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.icons8_редактировать_96; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(21, 116); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(94, 92); + buttonUpd.TabIndex = 2; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.icons8_удалить_100; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(21, 214); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 92); + buttonDel.TabIndex = 1; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.icons8_добавить_96; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(21, 18); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 92); + 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.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(848, 573); + dataGridViewData.TabIndex = 1; + // + // FormClients + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(982, 573); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormClients"; + StartPosition = FormStartPosition.CenterParent; + Text = "Клиенты"; + Load += FormClients_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonUpd; + private Button buttonDel; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormClients.cs b/ProjectAtelier/ProjectAtelier/Forms/FormClients.cs new file mode 100644 index 0000000..44599dc --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormClients.cs @@ -0,0 +1,91 @@ +using ProjectAtelier.Repositories; +using Unity; + +namespace ProjectAtelier.Forms +{ + public partial class FormClients : Form + { + private readonly IUnityContainer _container; + private readonly IClientRepository _clientRepository; + public FormClients(IUnityContainer container, IClientRepository clientRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _clientRepository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository)); + } + private void FormClients_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 + { + _clientRepository.DeleteClient(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _clientRepository.ReadClients(); + 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; + } + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormClients.resx b/ProjectAtelier/ProjectAtelier/Forms/FormClients.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormClients.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/ProjectAtelier/ProjectAtelier/Forms/FormCloth.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormCloth.Designer.cs new file mode 100644 index 0000000..f0d46a8 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormCloth.Designer.cs @@ -0,0 +1,130 @@ +namespace ProjectAtelier.Forms +{ + partial class FormCloth + { + /// + /// 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() + { + buttonCancel = new Button(); + buttonSave = new Button(); + labelLength = new Label(); + labelClothType = new Label(); + numericUpDownLength = new NumericUpDown(); + comboBoxClothType = new ComboBox(); + ((System.ComponentModel.ISupportInitialize)numericUpDownLength).BeginInit(); + SuspendLayout(); + // + // buttonCancel + // + buttonCancel.Location = new Point(111, 241); + buttonCancel.Margin = new Padding(3, 2, 3, 2); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(99, 22); + buttonCancel.TabIndex = 11; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Location = new Point(12, 241); + buttonSave.Margin = new Padding(3, 2, 3, 2); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 22); + buttonSave.TabIndex = 10; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // labelLength + // + labelLength.AutoSize = true; + labelLength.Location = new Point(12, 212); + labelLength.Name = "labelLength"; + labelLength.Size = new Size(45, 15); + labelLength.TabIndex = 8; + labelLength.Text = "Длина:"; + // + // labelClothType + // + labelClothType.AutoSize = true; + labelClothType.Location = new Point(10, 11); + labelClothType.Name = "labelClothType"; + labelClothType.Size = new Size(30, 15); + labelClothType.TabIndex = 6; + labelClothType.Text = "Тип:"; + // + // numericUpDownLength + // + numericUpDownLength.DecimalPlaces = 2; + numericUpDownLength.Location = new Point(78, 209); + numericUpDownLength.Margin = new Padding(3, 2, 3, 2); + numericUpDownLength.Minimum = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDownLength.Name = "numericUpDownLength"; + numericUpDownLength.Size = new Size(131, 23); + numericUpDownLength.TabIndex = 12; + numericUpDownLength.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + // + // comboBoxClothType + // + comboBoxClothType.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxClothType.FormattingEnabled = true; + comboBoxClothType.Location = new Point(76, 9); + comboBoxClothType.Margin = new Padding(3, 2, 3, 2); + comboBoxClothType.Name = "comboBoxClothType"; + comboBoxClothType.Size = new Size(133, 23); + comboBoxClothType.TabIndex = 13; + // + // FormCloth + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(296, 280); + Controls.Add(comboBoxClothType); + Controls.Add(numericUpDownLength); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelLength); + Controls.Add(labelClothType); + Margin = new Padding(3, 2, 3, 2); + Name = "FormCloth"; + StartPosition = FormStartPosition.CenterParent; + Text = "Ткань"; + ((System.ComponentModel.ISupportInitialize)numericUpDownLength).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button buttonCancel; + private Button buttonSave; + private Label labelLength; + private Label labelClothType; + private NumericUpDown numericUpDownLength; + private ComboBox comboBoxClothType; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormCloth.cs b/ProjectAtelier/ProjectAtelier/Forms/FormCloth.cs new file mode 100644 index 0000000..203b6b2 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormCloth.cs @@ -0,0 +1,65 @@ +using ProjectAtelier.Entities; +using ProjectAtelier.Entities.Enums; +using ProjectAtelier.Repositories; + +namespace ProjectAtelier.Forms +{ + public partial class FormCloth : Form + { + private readonly IClothRepository _clothRepository; + private int? _clothId; + public int Id + { + set + { + try + { + var cloth = _clothRepository.ReadClothById(value); + if (cloth == null) + { + throw new InvalidDataException(nameof(cloth)); + } + comboBoxClothType.SelectedItem = cloth.ClothType; + numericUpDownLength.Value = (decimal)cloth.Length; + _clothId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormCloth(IClothRepository clothRepository) + { + InitializeComponent(); + _clothRepository = clothRepository ?? throw new ArgumentNullException(nameof(clothRepository)); + comboBoxClothType.DataSource = Enum.GetValues(typeof(ClothType)); + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxClothType.SelectedIndex < 1) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_clothId.HasValue) + { + _clothRepository.UpdateCloth(CreateCloth(_clothId.Value)); + } + else + { + _clothRepository.CreateCloth(CreateCloth(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private Cloth CreateCloth(int id) => Cloth.CreateEntity(id, (ClothType)comboBoxClothType.SelectedItem!, Convert.ToDouble(numericUpDownLength.Value)); + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormCloth.resx b/ProjectAtelier/ProjectAtelier/Forms/FormCloth.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormCloth.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/ProjectAtelier/ProjectAtelier/Forms/FormCloths.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormCloths.Designer.cs new file mode 100644 index 0000000..2906f7c --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormCloths.Designer.cs @@ -0,0 +1,133 @@ +namespace ProjectAtelier.Forms +{ + partial class FormCloths + { + /// + /// 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() + { + dataGridViewData = new DataGridView(); + panel1 = new Panel(); + buttonUpd = new Button(); + buttonDel = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // 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.Margin = new Padding(3, 2, 3, 2); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(583, 338); + dataGridViewData.TabIndex = 3; + // + // panel1 + // + panel1.Controls.Add(buttonUpd); + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(583, 0); + panel1.Margin = new Padding(3, 2, 3, 2); + panel1.Name = "panel1"; + panel1.Size = new Size(117, 338); + panel1.TabIndex = 2; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.icons8_редактировать_96; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(18, 87); + buttonUpd.Margin = new Padding(3, 2, 3, 2); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(82, 69); + buttonUpd.TabIndex = 2; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.icons8_удалить_100; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(18, 160); + buttonDel.Margin = new Padding(3, 2, 3, 2); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(82, 69); + buttonDel.TabIndex = 1; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.icons8_добавить_96; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(18, 14); + buttonAdd.Margin = new Padding(3, 2, 3, 2); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(82, 69); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormCloths + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(700, 338); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Margin = new Padding(3, 2, 3, 2); + Name = "FormCloths"; + StartPosition = FormStartPosition.CenterParent; + Text = "Ткани"; + Load += FormCloths_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panel1; + private Button buttonUpd; + private Button buttonDel; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormCloths.cs b/ProjectAtelier/ProjectAtelier/Forms/FormCloths.cs new file mode 100644 index 0000000..90df3b3 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormCloths.cs @@ -0,0 +1,90 @@ +using ProjectAtelier.Repositories; +using Unity; + +namespace ProjectAtelier.Forms +{ + public partial class FormCloths : Form + { + private readonly IUnityContainer _container; + private readonly IClothRepository _clothRepository; + public FormCloths(IUnityContainer container, IClothRepository clothRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _clothRepository = clothRepository ?? throw new ArgumentNullException(nameof(clothRepository)); + } + private void FormCloths_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 + { + _clothRepository.DeleteCloth(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _clothRepository.ReadCloths(); + 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; + } + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormCloths.resx b/ProjectAtelier/ProjectAtelier/Forms/FormCloths.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormCloths.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/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.Designer.cs new file mode 100644 index 0000000..29bd78f --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.Designer.cs @@ -0,0 +1,130 @@ +namespace ProjectAtelier.Forms +{ + partial class FormEntrance + { + /// + /// 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() + { + comboBoxClothType = new ComboBox(); + numericUpDownValue = new NumericUpDown(); + buttonCancel = new Button(); + buttonSave = new Button(); + labelValue = new Label(); + labelClothType = new Label(); + ((System.ComponentModel.ISupportInitialize)numericUpDownValue).BeginInit(); + SuspendLayout(); + // + // comboBoxClothType + // + comboBoxClothType.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxClothType.FormattingEnabled = true; + comboBoxClothType.Location = new Point(88, 9); + comboBoxClothType.Margin = new Padding(3, 2, 3, 2); + comboBoxClothType.Name = "comboBoxClothType"; + comboBoxClothType.Size = new Size(161, 23); + comboBoxClothType.TabIndex = 19; + // + // numericUpDownValue + // + numericUpDownValue.DecimalPlaces = 2; + numericUpDownValue.Location = new Point(89, 42); + numericUpDownValue.Margin = new Padding(3, 2, 3, 2); + numericUpDownValue.Minimum = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDownValue.Name = "numericUpDownValue"; + numericUpDownValue.Size = new Size(159, 23); + numericUpDownValue.TabIndex = 18; + numericUpDownValue.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + // + // buttonCancel + // + buttonCancel.Location = new Point(136, 73); + buttonCancel.Margin = new Padding(3, 2, 3, 2); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(112, 22); + buttonCancel.TabIndex = 17; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Location = new Point(12, 73); + buttonSave.Margin = new Padding(3, 2, 3, 2); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(112, 22); + buttonSave.TabIndex = 16; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // labelValue + // + labelValue.AutoSize = true; + labelValue.Location = new Point(12, 44); + labelValue.Name = "labelValue"; + labelValue.Size = new Size(45, 15); + labelValue.TabIndex = 15; + labelValue.Text = "Длина:"; + // + // labelClothType + // + labelClothType.AutoSize = true; + labelClothType.Location = new Point(12, 11); + labelClothType.Name = "labelClothType"; + labelClothType.Size = new Size(64, 15); + labelClothType.TabIndex = 14; + labelClothType.Text = "Тип ткани:"; + // + // FormEntrance + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(259, 106); + Controls.Add(comboBoxClothType); + Controls.Add(numericUpDownValue); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelValue); + Controls.Add(labelClothType); + Margin = new Padding(3, 2, 3, 2); + Name = "FormEntrance"; + StartPosition = FormStartPosition.CenterParent; + Text = "Пополнение ткани"; + ((System.ComponentModel.ISupportInitialize)numericUpDownValue).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxClothType; + private NumericUpDown numericUpDownValue; + private Button buttonCancel; + private Button buttonSave; + private Label labelValue; + private Label labelClothType; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.cs b/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.cs new file mode 100644 index 0000000..3865db9 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.cs @@ -0,0 +1,35 @@ +using ProjectAtelier.Entities; +using ProjectAtelier.Repositories; + +namespace ProjectAtelier.Forms +{ + public partial class FormEntrance : Form + { + private readonly IEntranceRepository _entranceRepository; + public FormEntrance(IClothRepository clothRepository, IEntranceRepository entranceRepository) + { + InitializeComponent(); + _entranceRepository = entranceRepository ?? throw new ArgumentNullException(nameof(entranceRepository)); + comboBoxClothType.DataSource = clothRepository.ReadCloths(); + comboBoxClothType.DisplayMember = "ClothType"; + comboBoxClothType.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxClothType.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _entranceRepository.CreateEntrance(Entrance.CreateOperation(0, (int)comboBoxClothType.SelectedValue!, Convert.ToInt32(numericUpDownValue.Value))); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.resx b/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrance.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/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs new file mode 100644 index 0000000..8031070 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs @@ -0,0 +1,103 @@ +namespace ProjectAtelier.Forms +{ + partial class FormEntrances + { + /// + /// 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() + { + dataGridViewData = new DataGridView(); + panel1 = new Panel(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // 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.Margin = new Padding(3, 2, 3, 2); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(583, 338); + dataGridViewData.TabIndex = 5; + // + // panel1 + // + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(583, 0); + panel1.Margin = new Padding(3, 2, 3, 2); + panel1.Name = "panel1"; + panel1.Size = new Size(117, 338); + panel1.TabIndex = 4; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.icons8_добавить_96; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(18, 14); + buttonAdd.Margin = new Padding(3, 2, 3, 2); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(82, 69); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormEntrances + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(700, 338); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Margin = new Padding(3, 2, 3, 2); + Name = "FormEntrances"; + StartPosition = FormStartPosition.CenterParent; + Text = "История пополнений"; + Load += Formentrances_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panel1; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs new file mode 100644 index 0000000..21ff726 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs @@ -0,0 +1,41 @@ +using ProjectAtelier.Repositories; +using Unity; + +namespace ProjectAtelier.Forms +{ + public partial class FormEntrances : Form + { + private readonly IUnityContainer _container; + private readonly IEntranceRepository _entranceRepository; + public FormEntrances(IUnityContainer container, IEntranceRepository entranceRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _entranceRepository = entranceRepository ?? throw new ArgumentNullException(nameof(entranceRepository)); + } + private void Formentrances_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 LoadList() => dataGridViewData.DataSource = _entranceRepository.ReadEntrances(); + } +} diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.resx b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.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/ProjectAtelier/ProjectAtelier/Forms/FormModel.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModel.Designer.cs new file mode 100644 index 0000000..94bafd4 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModel.Designer.cs @@ -0,0 +1,155 @@ +namespace ProjectAtelier.Forms +{ + partial class FormModel + { + /// + /// 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() + { + groupBox1 = new GroupBox(); + dataGridViewCloths = new DataGridView(); + comboBoxModelType = new ComboBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + labelModelType = new Label(); + ColumnClothType = new DataGridViewComboBoxColumn(); + ColumnValue = new DataGridViewTextBoxColumn(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewCloths).BeginInit(); + SuspendLayout(); + // + // groupBox1 + // + groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox1.Controls.Add(dataGridViewCloths); + groupBox1.Location = new Point(11, 63); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(535, 357); + groupBox1.TabIndex = 27; + groupBox1.TabStop = false; + groupBox1.Text = "Ткани"; + // + // dataGridViewCloths + // + dataGridViewCloths.AllowUserToResizeColumns = false; + dataGridViewCloths.AllowUserToResizeRows = false; + dataGridViewCloths.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewCloths.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewCloths.Columns.AddRange(new DataGridViewColumn[] { ColumnClothType, ColumnValue }); + dataGridViewCloths.Dock = DockStyle.Fill; + dataGridViewCloths.Location = new Point(3, 23); + dataGridViewCloths.MultiSelect = false; + dataGridViewCloths.Name = "dataGridViewCloths"; + dataGridViewCloths.RowHeadersVisible = false; + dataGridViewCloths.RowHeadersWidth = 51; + dataGridViewCloths.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewCloths.Size = new Size(529, 331); + dataGridViewCloths.TabIndex = 0; + // + // comboBoxModelType + // + comboBoxModelType.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxModelType.FormattingEnabled = true; + comboBoxModelType.Location = new Point(117, 27); + comboBoxModelType.Name = "comboBoxModelType"; + comboBoxModelType.Size = new Size(191, 28); + comboBoxModelType.TabIndex = 26; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(394, 425); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(149, 29); + buttonCancel.TabIndex = 24; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(15, 425); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(135, 29); + buttonSave.TabIndex = 23; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // labelModelType + // + labelModelType.AutoSize = true; + labelModelType.Location = new Point(15, 29); + labelModelType.Name = "labelModelType"; + labelModelType.Size = new Size(95, 20); + labelModelType.TabIndex = 21; + labelModelType.Text = "Тип модели:"; + // + // ColumnClothType + // + ColumnClothType.HeaderText = "Тип ткани"; + ColumnClothType.MinimumWidth = 6; + ColumnClothType.Name = "ColumnClothType"; + ColumnClothType.Resizable = DataGridViewTriState.True; + // + // ColumnValue + // + ColumnValue.HeaderText = "Расход"; + ColumnValue.MinimumWidth = 6; + ColumnValue.Name = "ColumnValue"; + ColumnValue.Resizable = DataGridViewTriState.True; + // + // FormModel + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(559, 467); + Controls.Add(groupBox1); + Controls.Add(comboBoxModelType); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelModelType); + Name = "FormModel"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormModel"; + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewCloths).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private GroupBox groupBox1; + private DataGridView dataGridViewCloths; + private ComboBox comboBoxModelType; + private Button buttonCancel; + private Button buttonSave; + private Label labelModelType; + private DataGridViewComboBoxColumn ColumnClothType; + private DataGridViewTextBoxColumn ColumnValue; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs new file mode 100644 index 0000000..9dffd25 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs @@ -0,0 +1,55 @@ +using ProjectAtelier.Entities; +using ProjectAtelier.Repositories; + +namespace ProjectAtelier.Forms +{ + public partial class FormModel : Form + { + private readonly IModelRepository _modelRepository; + public FormModel(IOrderRepository orderRepository, IClothRepository clothRepository, IModelRepository modelRepository) + { + InitializeComponent(); + _modelRepository = modelRepository ?? throw new ArgumentNullException(nameof(orderRepository)); + + comboBoxModelType.DataSource = modelRepository.ReadModels(); + comboBoxModelType.DisplayMember = "ModelType"; + comboBoxModelType.ValueMember = "Id"; + + ColumnClothType.DataSource = clothRepository.ReadCloths(); + ColumnClothType.DisplayMember = "ClothType"; + ColumnClothType.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridViewCloths.RowCount < 1 || comboBoxModelType.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _modelRepository.CreateModel(Model.CreateEntity(0, (Entities.Enums.ModelType)(int)comboBoxModelType.SelectedValue!, CreateListExpenditureFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private List + CreateListExpenditureFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridViewCloths.Rows) + { + if (row.Cells["ColumnClothType"].Value == null || row.Cells["ColumnValue"].Value == null) + { + continue; + } + list.Add(Expenditure.CreateOperation(0, Convert.ToInt32(row.Cells["ColumnClothType"].Value), Convert.ToInt32(row.Cells["ColumnValue"].Value))); + } + return list; + } + } +} diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModel.resx b/ProjectAtelier/ProjectAtelier/Forms/FormModel.resx new file mode 100644 index 0000000..5d8ae24 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModel.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + True + + + True + + \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs new file mode 100644 index 0000000..b9b2bf9 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs @@ -0,0 +1,117 @@ +namespace ProjectAtelier.Forms +{ + partial class FormModels + { + /// + /// 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() + { + buttonDel = new Button(); + buttonAdd = new Button(); + panel1 = new Panel(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.icons8_удалить_100; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(18, 87); + buttonDel.Margin = new Padding(3, 2, 3, 2); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(82, 69); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.icons8_добавить_96; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(18, 14); + buttonAdd.Margin = new Padding(3, 2, 3, 2); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(82, 69); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // panel1 + // + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(683, 0); + panel1.Margin = new Padding(3, 2, 3, 2); + panel1.Name = "panel1"; + panel1.Size = new Size(117, 450); + panel1.TabIndex = 8; + // + // 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.Margin = new Padding(3, 2, 3, 2); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(683, 450); + dataGridViewData.TabIndex = 9; + // + // FormModels + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormModels"; + StartPosition = FormStartPosition.CenterParent; + Text = "Модели"; + Load += FormModels_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Button buttonDel; + private Button buttonAdd; + private Panel panel1; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs new file mode 100644 index 0000000..2ad0139 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs @@ -0,0 +1,72 @@ +using ProjectAtelier.Repositories; +using Unity; + +namespace ProjectAtelier.Forms +{ + public partial class FormModels : Form + { + private readonly IUnityContainer _container; + private readonly IModelRepository _modelRepository; + public FormModels(IUnityContainer container, IModelRepository modelRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _modelRepository = modelRepository ?? throw new ArgumentNullException(nameof(modelRepository)); + } + private void FormModels_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 ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _modelRepository.DeleteModel(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _modelRepository.ReadModels(); + 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/ProjectAtelier/ProjectAtelier/Forms/FormModels.resx b/ProjectAtelier/ProjectAtelier/Forms/FormModels.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModels.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/ProjectAtelier/ProjectAtelier/Forms/FormOrder.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormOrder.Designer.cs new file mode 100644 index 0000000..e254e9d --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormOrder.Designer.cs @@ -0,0 +1,211 @@ +namespace ProjectAtelier.Forms +{ + partial class FormOrder + { + /// + /// 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() + { + comboBoxClient = new ComboBox(); + numericUpDownPrise = new NumericUpDown(); + buttonCancel = new Button(); + buttonSave = new Button(); + labelPlise = new Label(); + labelClient = new Label(); + groupBox1 = new GroupBox(); + dataGridViewModels = new DataGridView(); + ColumnModel = new DataGridViewComboBoxColumn(); + ColumnCount = new DataGridViewTextBoxColumn(); + checkedListBoxPrints = new CheckedListBox(); + label1 = new Label(); + ((System.ComponentModel.ISupportInitialize)numericUpDownPrise).BeginInit(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewModels).BeginInit(); + SuspendLayout(); + // + // comboBoxClient + // + comboBoxClient.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxClient.FormattingEnabled = true; + comboBoxClient.Location = new Point(79, 9); + comboBoxClient.Margin = new Padding(3, 2, 3, 2); + comboBoxClient.Name = "comboBoxClient"; + comboBoxClient.Size = new Size(190, 23); + comboBoxClient.TabIndex = 19; + // + // numericUpDownPrise + // + numericUpDownPrise.DecimalPlaces = 2; + numericUpDownPrise.Location = new Point(79, 41); + numericUpDownPrise.Margin = new Padding(3, 2, 3, 2); + numericUpDownPrise.Minimum = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDownPrise.Name = "numericUpDownPrise"; + numericUpDownPrise.Size = new Size(190, 23); + numericUpDownPrise.TabIndex = 18; + numericUpDownPrise.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(138, 484); + buttonCancel.Margin = new Padding(3, 2, 3, 2); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(130, 22); + buttonCancel.TabIndex = 17; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(12, 484); + buttonSave.Margin = new Padding(3, 2, 3, 2); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(118, 22); + buttonSave.TabIndex = 16; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // labelPlise + // + labelPlise.AutoSize = true; + labelPlise.Location = new Point(12, 44); + labelPlise.Name = "labelPlise"; + labelPlise.Size = new Size(38, 15); + labelPlise.TabIndex = 15; + labelPlise.Text = "Цена:"; + // + // labelClient + // + labelClient.AutoSize = true; + labelClient.Location = new Point(12, 11); + labelClient.Name = "labelClient"; + labelClient.Size = new Size(49, 15); + labelClient.TabIndex = 14; + labelClient.Text = "Клиент:"; + // + // groupBox1 + // + groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox1.Controls.Add(dataGridViewModels); + groupBox1.Location = new Point(12, 240); + groupBox1.Margin = new Padding(3, 2, 3, 2); + groupBox1.Name = "groupBox1"; + groupBox1.Padding = new Padding(3, 2, 3, 2); + groupBox1.Size = new Size(257, 242); + groupBox1.TabIndex = 20; + groupBox1.TabStop = false; + groupBox1.Text = "Модели"; + // + // dataGridViewModels + // + dataGridViewModels.AllowUserToResizeColumns = false; + dataGridViewModels.AllowUserToResizeRows = false; + dataGridViewModels.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewModels.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewModels.Columns.AddRange(new DataGridViewColumn[] { ColumnModel, ColumnCount }); + dataGridViewModels.Dock = DockStyle.Fill; + dataGridViewModels.Location = new Point(3, 18); + dataGridViewModels.Margin = new Padding(3, 2, 3, 2); + dataGridViewModels.MultiSelect = false; + dataGridViewModels.Name = "dataGridViewModels"; + dataGridViewModels.RowHeadersVisible = false; + dataGridViewModels.RowHeadersWidth = 51; + dataGridViewModels.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewModels.Size = new Size(251, 222); + dataGridViewModels.TabIndex = 0; + // + // ColumnModel + // + ColumnModel.HeaderText = "Модель"; + ColumnModel.MinimumWidth = 6; + ColumnModel.Name = "ColumnModel"; + // + // ColumnCount + // + ColumnCount.HeaderText = "Количество"; + ColumnCount.MinimumWidth = 6; + ColumnCount.Name = "ColumnCount"; + // + // checkedListBoxPrints + // + checkedListBoxPrints.FormattingEnabled = true; + checkedListBoxPrints.Location = new Point(79, 69); + checkedListBoxPrints.Name = "checkedListBoxPrints"; + checkedListBoxPrints.Size = new Size(190, 166); + checkedListBoxPrints.TabIndex = 21; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(15, 69); + label1.Name = "label1"; + label1.Size = new Size(54, 15); + label1.TabIndex = 22; + label1.Text = "Принты:"; + // + // FormOrder + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(283, 518); + Controls.Add(label1); + Controls.Add(checkedListBoxPrints); + Controls.Add(groupBox1); + Controls.Add(comboBoxClient); + Controls.Add(numericUpDownPrise); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelPlise); + Controls.Add(labelClient); + Margin = new Padding(3, 2, 3, 2); + Name = "FormOrder"; + StartPosition = FormStartPosition.CenterParent; + Text = "Заказ"; + ((System.ComponentModel.ISupportInitialize)numericUpDownPrise).EndInit(); + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewModels).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxClient; + private NumericUpDown numericUpDownPrise; + private Button buttonCancel; + private Button buttonSave; + private Label labelPlise; + private Label labelClient; + private GroupBox groupBox1; + private DataGridView dataGridViewModels; + private DataGridViewComboBoxColumn ColumnModel; + private DataGridViewTextBoxColumn ColumnCount; + private CheckedListBox checkedListBoxPrints; + private Label label1; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormOrder.cs b/ProjectAtelier/ProjectAtelier/Forms/FormOrder.cs new file mode 100644 index 0000000..c7b7f9c --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormOrder.cs @@ -0,0 +1,72 @@ +using Microsoft.VisualBasic.FileIO; +using ProjectAtelier.Entities; +using ProjectAtelier.Entities.Enums; +using ProjectAtelier.Repositories; +using System.Windows.Forms; + +namespace ProjectAtelier.Forms +{ + public partial class FormOrder : Form + { + private readonly IOrderRepository _orderRepository; + + public FormOrder(IOrderRepository orderRepository, IClientRepository clientRepository, IModelRepository modelRepository) + { + InitializeComponent(); + _orderRepository = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository)); + + comboBoxClient.DataSource = clientRepository.ReadClients(); + comboBoxClient.DisplayMember = "Name"; + comboBoxClient.ValueMember = "Id"; + + ColumnModel.DataSource = modelRepository.ReadModels(); + ColumnModel.DisplayMember = "ModelType"; + ColumnModel.ValueMember = "Id"; + + foreach (var elem in Enum.GetValues(typeof(Prints))) + { + checkedListBoxPrints.Items.Add(elem); + } + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridViewModels.RowCount < 1 || comboBoxClient.SelectedIndex < 0 || checkedListBoxPrints.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + Prints prints = Prints.None; + foreach (var elem in checkedListBoxPrints.CheckedItems) + { + prints |= (Prints)elem; + } + _orderRepository.CreateOrder(Order.CreateOperation( + 0, + (int)comboBoxClient.SelectedValue!, + (int)numericUpDownPrise.Value, + CreateListModelListFromDataGrid(), + prints)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private List CreateListModelListFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridViewModels.Rows) + { + if (row.Cells["ColumnModel"].Value == null || row.Cells["ColumnCount"].Value == null) + { + continue; + } + list.Add(ModelList.CreateElement(0, Convert.ToInt32(row.Cells["ColumnModel"].Value), Convert.ToInt32(row.Cells["ColumnCount"].Value))); + } + return list; + } + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormOrder.resx b/ProjectAtelier/ProjectAtelier/Forms/FormOrder.resx new file mode 100644 index 0000000..521085a --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormOrder.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + True + + + True + + \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormOrders.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormOrders.Designer.cs new file mode 100644 index 0000000..327017e --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormOrders.Designer.cs @@ -0,0 +1,118 @@ +namespace ProjectAtelier.Forms +{ + partial class FormOrders + { + /// + /// 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(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(583, 0); + panel1.Margin = new Padding(3, 2, 3, 2); + panel1.Name = "panel1"; + panel1.Size = new Size(117, 338); + panel1.TabIndex = 6; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.icons8_удалить_100; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(18, 87); + buttonDel.Margin = new Padding(3, 2, 3, 2); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(82, 69); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.icons8_добавить_96; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(18, 14); + buttonAdd.Margin = new Padding(3, 2, 3, 2); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(82, 69); + 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.Margin = new Padding(3, 2, 3, 2); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(583, 338); + dataGridViewData.TabIndex = 7; + // + // FormOrders + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(700, 338); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Margin = new Padding(3, 2, 3, 2); + Name = "FormOrders"; + StartPosition = FormStartPosition.CenterParent; + Text = "История заказов"; + Load += FormOrders_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonAdd; + private DataGridView dataGridViewData; + private Button buttonDel; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormOrders.cs b/ProjectAtelier/ProjectAtelier/Forms/FormOrders.cs new file mode 100644 index 0000000..eabceb7 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormOrders.cs @@ -0,0 +1,72 @@ +using ProjectAtelier.Repositories; +using Unity; + +namespace ProjectAtelier.Forms +{ + public partial class FormOrders : Form + { + private readonly IUnityContainer _container; + private readonly IOrderRepository _orderRepository; + public FormOrders(IUnityContainer container, IOrderRepository orderRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _orderRepository = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository)); + } + private void FormOrders_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 ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _orderRepository.DeleteOrder(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _orderRepository.ReadOrders(); + 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; + } + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormOrders.resx b/ProjectAtelier/ProjectAtelier/Forms/FormOrders.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Forms/FormOrders.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/ProjectAtelier/ProjectAtelier/Program.cs b/ProjectAtelier/ProjectAtelier/Program.cs index 91520ef..6130b6f 100644 --- a/ProjectAtelier/ProjectAtelier/Program.cs +++ b/ProjectAtelier/ProjectAtelier/Program.cs @@ -1,3 +1,8 @@ +using Unity.Lifetime; +using Unity; +using ProjectAtelier.Repositories; +using ProjectAtelier.Repositories.Implementations; + namespace ProjectAtelier { internal static class Program @@ -11,7 +16,18 @@ namespace ProjectAtelier // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(CreateContainer().Resolve()); + } + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + return container; } } } \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/ProjectAtelier.csproj b/ProjectAtelier/ProjectAtelier/ProjectAtelier.csproj index 663fdb8..accbdf0 100644 --- a/ProjectAtelier/ProjectAtelier/ProjectAtelier.csproj +++ b/ProjectAtelier/ProjectAtelier/ProjectAtelier.csproj @@ -8,4 +8,23 @@ enable + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Properties/Resources.Designer.cs b/ProjectAtelier/ProjectAtelier/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ffba4a5 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectAtelier.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectAtelier.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_добавить_96 { + get { + object obj = ResourceManager.GetObject("icons8-добавить-96", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_редактировать_96 { + get { + object obj = ResourceManager.GetObject("icons8-редактировать-96", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_удалить_100 { + get { + object obj = ResourceManager.GetObject("icons8-удалить-100", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap tkan_skladki_blesk_otliv { + get { + object obj = ResourceManager.GetObject("tkan-skladki-blesk-otliv", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectAtelier/ProjectAtelier/Properties/Resources.resx b/ProjectAtelier/ProjectAtelier/Properties/Resources.resx new file mode 100644 index 0000000..5c435d0 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\icons8-удалить-100.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\tkan-skladki-blesk-otliv.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-добавить-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-редактировать-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/IClientRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/IClientRepository.cs new file mode 100644 index 0000000..65f8588 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/IClientRepository.cs @@ -0,0 +1,12 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories; + +public interface IClientRepository +{ + IEnumerable ReadClients(); + Client ReadClientById(int id); + void CreateClient(Client client); + void UpdateClient(Client client); + void DeleteClient(int id); +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/IClothRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/IClothRepository.cs new file mode 100644 index 0000000..dba6ac6 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/IClothRepository.cs @@ -0,0 +1,12 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories; + +public interface IClothRepository +{ + IEnumerable ReadCloths(); + Cloth ReadClothById(int id); + void CreateCloth(Cloth cloth); + void UpdateCloth(Cloth cloth); + void DeleteCloth(int id); +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/IEntranceRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/IEntranceRepository.cs new file mode 100644 index 0000000..3c49637 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/IEntranceRepository.cs @@ -0,0 +1,9 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories; + +public interface IEntranceRepository +{ + IEnumerable ReadEntrances(DateTime? dateForm = null, DateTime? dateTo = null, int? clothId = null); + void CreateEntrance(Entrance entrance); +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/IModelRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/IModelRepository.cs new file mode 100644 index 0000000..0d59028 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/IModelRepository.cs @@ -0,0 +1,12 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories; + +public interface IModelRepository +{ + IEnumerable ReadModels(); + Model ReadModelById(int id); + void CreateModel(Model model); + void UpdateModel(Model model); + void DeleteModel(int id); +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/IOrderRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/IOrderRepository.cs new file mode 100644 index 0000000..53d748f --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/IOrderRepository.cs @@ -0,0 +1,10 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories; + +public interface IOrderRepository +{ + IEnumerable ReadOrders(DateTime? dateForm = null, DateTime? dateTo = null, int? clientId = null, int? modelId = null); + void CreateOrder(Order order); + void DeleteOrder(int id); +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ClientRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ClientRepository.cs new file mode 100644 index 0000000..a196630 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ClientRepository.cs @@ -0,0 +1,24 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories.Implementations; + +internal class ClientRepository : IClientRepository +{ + public void CreateClient(Client client) + { + } + public void DeleteClient(int id) + { + } + public Client ReadClientById(int id) + { + return Client.CreateEntity(0, string.Empty, string.Empty); + } + public IEnumerable ReadClients() + { + return []; + } + public void UpdateClient(Client client) + { + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ClothRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ClothRepository.cs new file mode 100644 index 0000000..0aada84 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ClothRepository.cs @@ -0,0 +1,25 @@ +using ProjectAtelier.Entities; +using ProjectAtelier.Entities.Enums; + +namespace ProjectAtelier.Repositories.Implementations; + +internal class ClothRepository : IClothRepository +{ + public void CreateCloth(Cloth cloth) + { + } + public void DeleteCloth(int id) + { + } + public Cloth ReadClothById(int id) + { + return Cloth.CreateEntity(0, ClothType.None, 0); + } + public IEnumerable ReadCloths() + { + return []; + } + public void UpdateCloth(Cloth cloth) + { + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/Implementations/EntranceRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/EntranceRepository.cs new file mode 100644 index 0000000..4794834 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/EntranceRepository.cs @@ -0,0 +1,14 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories.Implementations; + +internal class EntranceRepository : IEntranceRepository +{ + public void CreateEntrance(Entrance entrance) + { + } + public IEnumerable ReadEntrances(DateTime? dateForm = null, DateTime? dateTo = null, int? clothId = null) + { + return []; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ModelRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ModelRepository.cs new file mode 100644 index 0000000..3221160 --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/ModelRepository.cs @@ -0,0 +1,24 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories.Implementations; + +internal class ModelRepository : IModelRepository +{ + public void CreateModel(Model model) + { + } + public void DeleteModel(int id) + { + } + public Model ReadModelById(int id) + { + return null; + } + public IEnumerable ReadModels() + { + return []; + } + public void UpdateModel(Model model) + { + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Repositories/Implementations/OrderRepository.cs b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/OrderRepository.cs new file mode 100644 index 0000000..0e2b97e --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Repositories/Implementations/OrderRepository.cs @@ -0,0 +1,17 @@ +using ProjectAtelier.Entities; + +namespace ProjectAtelier.Repositories.Implementations; + +internal class OrderRepository : IOrderRepository +{ + public void CreateOrder(Order order) + { + } + public void DeleteOrder(int id) + { + } + public IEnumerable ReadOrders(DateTime? dateForm = null, DateTime? dateTo = null, int? clientId = null, int? modelId = null) + { + return []; + } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Resources/icons8-добавить-96.png b/ProjectAtelier/ProjectAtelier/Resources/icons8-добавить-96.png new file mode 100644 index 0000000..6133eea Binary files /dev/null and b/ProjectAtelier/ProjectAtelier/Resources/icons8-добавить-96.png differ diff --git a/ProjectAtelier/ProjectAtelier/Resources/icons8-редактировать-96.png b/ProjectAtelier/ProjectAtelier/Resources/icons8-редактировать-96.png new file mode 100644 index 0000000..bc60e78 Binary files /dev/null and b/ProjectAtelier/ProjectAtelier/Resources/icons8-редактировать-96.png differ diff --git a/ProjectAtelier/ProjectAtelier/Resources/icons8-удалить-100.png b/ProjectAtelier/ProjectAtelier/Resources/icons8-удалить-100.png new file mode 100644 index 0000000..993a722 Binary files /dev/null and b/ProjectAtelier/ProjectAtelier/Resources/icons8-удалить-100.png differ diff --git a/ProjectAtelier/ProjectAtelier/Resources/tkan-skladki-blesk-otliv.jpg b/ProjectAtelier/ProjectAtelier/Resources/tkan-skladki-blesk-otliv.jpg new file mode 100644 index 0000000..031d743 Binary files /dev/null and b/ProjectAtelier/ProjectAtelier/Resources/tkan-skladki-blesk-otliv.jpg differ