From e2106e58e66a0355516c5deb81d3830ff3465339 Mon Sep 17 00:00:00 2001 From: Ivan Gutorov Date: Mon, 25 Nov 2024 07:56:26 +0400 Subject: [PATCH 1/2] fix forms, restruct entities --- .../Entities/Contract.cs | 9 +- .../FormItCompany.Designer.cs | 11 +- .../FormItCompany.cs | 12 -- .../Forms/FormContract.Designer.cs | 6 +- .../Forms/FormContract.cs | 24 +++- .../Forms/FormCustomer.cs | 2 +- .../Forms/FormExecutor.cs | 2 +- .../Forms/FormService.Designer.cs | 121 ----------------- .../Forms/FormService.cs | 64 --------- .../Forms/FormService.resx | 120 ----------------- .../Forms/FormServices.Designer.cs | 126 ------------------ .../Forms/FormServices.cs | 96 ------------- .../Forms/FormServices.resx | 120 ----------------- PIbd-23_Gutorov_I.A._IT-Company/Program.cs | 1 - .../Repositories/IServiceRepository.cs | 16 --- .../Implementations/ServiceRepository.cs | 28 ---- 16 files changed, 30 insertions(+), 728 deletions(-) delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs delete mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Entities/Contract.cs b/PIbd-23_Gutorov_I.A._IT-Company/Entities/Contract.cs index cb943c3..66ec15b 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Entities/Contract.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Entities/Contract.cs @@ -18,7 +18,11 @@ public class Contract public int PaymentAmount { get; private set; } - public static Contract CreateEntity(int id, int customerID, int executorID, ContractCategory category, DateTime deadline, int paymentAmount) + public IEnumerable Services { get; private set; } = []; + + public static Contract CreateEntity(int id, int customerID, int executorID, + ContractCategory category, DateTime deadline, + int paymentAmount, IEnumerable services) { return new Contract { @@ -28,7 +32,8 @@ public class Contract Category = category, ConclusionDate = DateTime.Now, Deadline = deadline, - PaymentAmount = paymentAmount + PaymentAmount = paymentAmount, + Services = services }; } } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs index 3e5371a..4aec222 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs @@ -32,7 +32,6 @@ справочникиToolStripMenuItem = new ToolStripMenuItem(); CustomersToolStripMenuItem = new ToolStripMenuItem(); ExecutorsToolStripMenuItem = new ToolStripMenuItem(); - ServicesToolStripMenuItem = new ToolStripMenuItem(); операцииToolStripMenuItem = new ToolStripMenuItem(); CustomerContractReviewsToolStripMenuItem = new ToolStripMenuItem(); контрактыToolStripMenuItem = new ToolStripMenuItem(); @@ -51,7 +50,7 @@ // // справочникиToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CustomersToolStripMenuItem, ExecutorsToolStripMenuItem, ServicesToolStripMenuItem }); + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CustomersToolStripMenuItem, ExecutorsToolStripMenuItem }); справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; справочникиToolStripMenuItem.Size = new Size(94, 20); справочникиToolStripMenuItem.Text = "Справочники"; @@ -70,13 +69,6 @@ ExecutorsToolStripMenuItem.Text = "Исполнители"; ExecutorsToolStripMenuItem.Click += ExecutorsToolStripMenuItem_Click; // - // ServicesToolStripMenuItem - // - ServicesToolStripMenuItem.Name = "ServicesToolStripMenuItem"; - ServicesToolStripMenuItem.Size = new Size(180, 22); - ServicesToolStripMenuItem.Text = "Услуги"; - ServicesToolStripMenuItem.Click += ServicesToolStripMenuItem_Click; - // // операцииToolStripMenuItem // операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CustomerContractReviewsToolStripMenuItem, контрактыToolStripMenuItem }); @@ -128,7 +120,6 @@ private ToolStripMenuItem справочникиToolStripMenuItem; private ToolStripMenuItem CustomersToolStripMenuItem; private ToolStripMenuItem ExecutorsToolStripMenuItem; - private ToolStripMenuItem ServicesToolStripMenuItem; private ToolStripMenuItem операцииToolStripMenuItem; private ToolStripMenuItem отчетыToolStripMenuItem; private ToolStripMenuItem CustomerContractReviewsToolStripMenuItem; diff --git a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs index 710d8e2..3035efc 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs @@ -37,18 +37,6 @@ namespace PIbd_23_Gutorov_I.A._IT_Company } } - private void ServicesToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - _container.Resolve().ShowDialog(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ContractsToolStripMenuItem_Click(object sender, EventArgs e) { try diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs index 2eed9bf..165e71c 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs @@ -42,7 +42,7 @@ labelContractPaymentAmount = new Label(); dataGridViewServices = new DataGridView(); groupBox = new GroupBox(); - ColumnServiceDescription = new DataGridViewComboBoxColumn(); + ColumnServiceDescription = new DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)numericUpDownContractPaymentAmount).BeginInit(); ((System.ComponentModel.ISupportInitialize)dataGridViewServices).BeginInit(); groupBox.SuspendLayout(); @@ -185,10 +185,10 @@ // // ColumnServiceDescription // + ColumnServiceDescription.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; ColumnServiceDescription.HeaderText = "Услуга"; ColumnServiceDescription.Name = "ColumnServiceDescription"; ColumnServiceDescription.Resizable = DataGridViewTriState.True; - ColumnServiceDescription.SortMode = DataGridViewColumnSortMode.Automatic; // // FormContract // @@ -234,6 +234,6 @@ private Label labelContractPaymentAmount; private DataGridView dataGridViewServices; private GroupBox groupBox; - private DataGridViewComboBoxColumn ColumnServiceDescription; + private DataGridViewTextBoxColumn ColumnServiceDescription; } } \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs index 7be33b9..b2ceea6 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs @@ -9,7 +9,7 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms private readonly IContractRepository _contractRepository; public FormContract(IContractRepository contractRepository, ICustomerRepository customerRepository, - IExecutorRepository executorRepository, IServiceRepository serviceRepository) + IExecutorRepository executorRepository) { InitializeComponent(); _contractRepository = contractRepository ?? throw new ArgumentNullException(nameof(contractRepository)); @@ -22,10 +22,6 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms comboBoxContractExecutorId.DisplayMember = "Name"; comboBoxContractExecutorId.DisplayMember = "Id"; - ColumnServiceDescription.DataSource = serviceRepository.ReadServices(); - ColumnServiceDescription.DisplayMember = "Description"; - comboBoxContractExecutorId.DisplayMember = "Id"; - foreach (var elem in Enum.GetValues(typeof(ContractCategory))) { checkedListBoxContractCategory.Items.Add(elem); @@ -63,8 +59,22 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms contractCategory |= (ContractCategory)elem; } - return Contract.CreateEntity(id, (int)comboBoxContractCustomerId.SelectedValue!, (int)comboBoxContractExecutorId.SelectedValue!, - contractCategory, dateTimePickerContractDeadline.Value, Convert.ToInt32(numericUpDownContractPaymentAmount.Value)); + return Contract.CreateEntity(id, (int)comboBoxContractCustomerId.SelectedValue!, + (int)comboBoxContractExecutorId.SelectedValue!, contractCategory, + dateTimePickerContractDeadline.Value, Convert.ToInt32(numericUpDownContractPaymentAmount.Value), + CreateServicesFromDataGrid()); } + + private List CreateServicesFromDataGrid() + { + var list = new List(); + + foreach (DataGridViewRow row in dataGridViewServices.Rows) + if (!row.IsNewRow) + list.Add(Service.CreateEntity(0, Convert.ToString(row.Cells["Description"].Value)!, 0)); + + return list; + } + } } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormCustomer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormCustomer.cs index 84309c8..cbb6c0d 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormCustomer.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormCustomer.cs @@ -49,7 +49,7 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms } if (_customerId.HasValue) _customerRepository.UpdateCustomer(CreateCustomer(_customerId.Value)); - else _customerRepository.UpdateCustomer(CreateCustomer(0)); + else _customerRepository.CreateCustomer(CreateCustomer(0)); Close(); } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormExecutor.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormExecutor.cs index 5945fe2..d847278 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormExecutor.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormExecutor.cs @@ -50,7 +50,7 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms } if (_executorId.HasValue) _executorRepository.UpdateExecutor(CreateExecutor(_executorId.Value)); - else _executorRepository.UpdateExecutor(CreateExecutor(0)); + else _executorRepository.CreateExecutor(CreateExecutor(0)); Close(); } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs deleted file mode 100644 index 08125c8..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs +++ /dev/null @@ -1,121 +0,0 @@ -namespace PIbd_23_Gutorov_I.A._IT_Company.Forms -{ - partial class FormService - { - /// - /// 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() - { - comboBoxServiceContractId = new ComboBox(); - labelServiceContractId = new Label(); - labelServiceDescription = new Label(); - richTextBoxServiceDescription = new RichTextBox(); - buttonCancel = new Button(); - buttonSave = new Button(); - SuspendLayout(); - // - // comboBoxServiceContractId - // - comboBoxServiceContractId.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxServiceContractId.FormattingEnabled = true; - comboBoxServiceContractId.Location = new Point(169, 6); - comboBoxServiceContractId.Name = "comboBoxServiceContractId"; - comboBoxServiceContractId.Size = new Size(202, 23); - comboBoxServiceContractId.TabIndex = 15; - // - // labelServiceContractId - // - labelServiceContractId.AutoSize = true; - labelServiceContractId.Location = new Point(12, 9); - labelServiceContractId.Name = "labelServiceContractId"; - labelServiceContractId.Size = new Size(60, 15); - labelServiceContractId.TabIndex = 14; - labelServiceContractId.Text = "Контракт:"; - // - // labelServiceDescription - // - labelServiceDescription.AutoSize = true; - labelServiceDescription.Location = new Point(12, 38); - labelServiceDescription.Name = "labelServiceDescription"; - labelServiceDescription.Size = new Size(65, 15); - labelServiceDescription.TabIndex = 30; - labelServiceDescription.Text = "Описание:"; - // - // richTextBoxServiceDescription - // - richTextBoxServiceDescription.Location = new Point(169, 35); - richTextBoxServiceDescription.Name = "richTextBoxServiceDescription"; - richTextBoxServiceDescription.Size = new Size(202, 96); - richTextBoxServiceDescription.TabIndex = 29; - richTextBoxServiceDescription.Text = ""; - // - // buttonCancel - // - buttonCancel.Location = new Point(12, 166); - buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(359, 23); - buttonCancel.TabIndex = 32; - buttonCancel.Text = "Отмена"; - buttonCancel.UseVisualStyleBackColor = true; - buttonCancel.Click += ButtonCancel_Click; - // - // buttonSave - // - buttonSave.Location = new Point(12, 137); - buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(359, 23); - buttonSave.TabIndex = 31; - buttonSave.Text = "Сохранить"; - buttonSave.UseVisualStyleBackColor = true; - buttonSave.Click += ButtonSave_Click; - // - // FormService - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(387, 208); - Controls.Add(buttonCancel); - Controls.Add(buttonSave); - Controls.Add(labelServiceDescription); - Controls.Add(richTextBoxServiceDescription); - Controls.Add(comboBoxServiceContractId); - Controls.Add(labelServiceContractId); - Name = "FormService"; - StartPosition = FormStartPosition.CenterParent; - Text = "Услуга"; - ResumeLayout(false); - PerformLayout(); - } - - #endregion - - private ComboBox comboBoxServiceContractId; - private Label labelServiceContractId; - private Label labelServiceDescription; - private RichTextBox richTextBoxServiceDescription; - private Button buttonCancel; - private Button buttonSave; - } -} \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs deleted file mode 100644 index f94d5b7..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs +++ /dev/null @@ -1,64 +0,0 @@ -using PIbd_23_Gutorov_I.A._IT_Company.Entities; -using PIbd_23_Gutorov_I.A._IT_Company.Repositories; - -namespace PIbd_23_Gutorov_I.A._IT_Company.Forms -{ - public partial class FormService : Form - { - private readonly IServiceRepository _serviceRepository; - - private int? _serviceId; - - public int Id - { - set - { - try - { - var contract = _serviceRepository.ReadServiceById(value); - if (contract == null) throw new InvalidDataException(nameof(contract)); - - richTextBoxServiceDescription.Text = contract.Description; - _serviceId = value; - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - } - } - - public FormService(IServiceRepository serviceRepository, IContractRepository contractRepository) - { - InitializeComponent(); - _serviceRepository = serviceRepository ?? throw new ArgumentNullException(nameof(serviceRepository)); - - comboBoxServiceContractId.DataSource = contractRepository.ReadContracts(); - comboBoxServiceContractId.DisplayMember = "Id"; - } - - private void ButtonSave_Click(object sender, EventArgs e) - { - try - { - if (comboBoxServiceContractId.SelectedIndex < 0 || - string.IsNullOrEmpty(richTextBoxServiceDescription.Text)) - { - throw new Exception("Имеются незаполненные поля"); - } - - _serviceRepository.CreateService(Service.CreateEntity(0, - richTextBoxServiceDescription.Text, (int)comboBoxServiceContractId.SelectedValue!)); - - Close(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - } -} diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx deleted file mode 100644 index 8b2ff64..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs deleted file mode 100644 index dafc7f2..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs +++ /dev/null @@ -1,126 +0,0 @@ -namespace PIbd_23_Gutorov_I.A._IT_Company.Forms -{ - partial class FormServices - { - /// - /// 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(); - panel = new Panel(); - buttonDel = new Button(); - buttonUpd = new Button(); - buttonAdd = new Button(); - ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); - panel.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.MultiSelect = false; - dataGridViewData.Name = "dataGridViewData"; - dataGridViewData.ReadOnly = true; - dataGridViewData.RowHeadersVisible = false; - dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridViewData.Size = new Size(677, 450); - dataGridViewData.TabIndex = 5; - // - // panel - // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonUpd); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(677, 0); - panel.Name = "panel"; - panel.Size = new Size(123, 450); - panel.TabIndex = 4; - // - // buttonDel - // - buttonDel.BackgroundImage = Properties.Resources.icon_remove_button; - buttonDel.BackgroundImageLayout = ImageLayout.Stretch; - buttonDel.Location = new Point(16, 204); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(90, 90); - buttonDel.TabIndex = 2; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += ButtonDel_Click; - // - // buttonUpd - // - buttonUpd.BackgroundImage = Properties.Resources.icon_edit_button; - buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; - buttonUpd.Location = new Point(16, 108); - buttonUpd.Name = "buttonUpd"; - buttonUpd.Size = new Size(90, 90); - buttonUpd.TabIndex = 1; - buttonUpd.UseVisualStyleBackColor = true; - buttonUpd.Click += ButtonUpd_Click; - // - // buttonAdd - // - buttonAdd.BackgroundImage = Properties.Resources.icon_add_button; - buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; - buttonAdd.Location = new Point(16, 12); - buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(90, 90); - buttonAdd.TabIndex = 0; - buttonAdd.UseVisualStyleBackColor = true; - buttonAdd.Click += ButtonAdd_Click; - // - // FormServices - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); - Controls.Add(dataGridViewData); - Controls.Add(panel); - Name = "FormServices"; - StartPosition = FormStartPosition.CenterParent; - Text = "Услуги"; - Load += FormServices_Load; - ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); - panel.ResumeLayout(false); - ResumeLayout(false); - } - - #endregion - - private DataGridView dataGridViewData; - private Panel panel; - private Button buttonDel; - private Button buttonUpd; - private Button buttonAdd; - } -} \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs deleted file mode 100644 index 5b0cea9..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs +++ /dev/null @@ -1,96 +0,0 @@ -using PIbd_23_Gutorov_I.A._IT_Company.Repositories; -using Unity; - -namespace PIbd_23_Gutorov_I.A._IT_Company.Forms -{ - public partial class FormServices : Form - { - private readonly IUnityContainer _container; - - private readonly IServiceRepository _serviceRepository; - - public FormServices(IUnityContainer container, IServiceRepository serviceRepository) - { - InitializeComponent(); - _container = container ?? throw new ArgumentException(nameof(container)); - _serviceRepository = serviceRepository ?? throw new ArgumentException(nameof(serviceRepository)); - } - - private void FormServices_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 - { - _serviceRepository.DeleteService(findId); - LoadList(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void LoadList() => dataGridViewData.DataSource = _serviceRepository.ReadServices(); - - 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/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx deleted file mode 100644 index 8b2ff64..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PIbd-23_Gutorov_I.A._IT-Company/Program.cs b/PIbd-23_Gutorov_I.A._IT-Company/Program.cs index 3c5e10d..7874b0a 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Program.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Program.cs @@ -26,7 +26,6 @@ namespace PIbd_23_Gutorov_I.A._IT_Company container.RegisterType(); container.RegisterType(); container.RegisterType(); - container.RegisterType(); return container; } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs b/PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs deleted file mode 100644 index 703736b..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs +++ /dev/null @@ -1,16 +0,0 @@ -using PIbd_23_Gutorov_I.A._IT_Company.Entities; - -namespace PIbd_23_Gutorov_I.A._IT_Company.Repositories; - -public interface IServiceRepository -{ - IEnumerable ReadServices(int? contractId = null); - - Service ReadServiceById(int id); - - void CreateService(Service service); - - void UpdateService(Service service); - - void DeleteService(int id); -} diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs b/PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs deleted file mode 100644 index 1c4d86a..0000000 --- a/PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs +++ /dev/null @@ -1,28 +0,0 @@ -using PIbd_23_Gutorov_I.A._IT_Company.Entities; - -namespace PIbd_23_Gutorov_I.A._IT_Company.Repositories.Implementations; - -internal class ServiceRepository : IServiceRepository -{ - public void CreateService(Service service) - { - } - - public void DeleteService(int id) - { - } - - public Service ReadServiceById(int id) - { - return Service.CreateEntity(0, string.Empty, 0); - } - - public IEnumerable ReadServices(int? contractId = null) - { - return []; - } - - public void UpdateService(Service service) - { - } -} From 8b6c4644c19320ed5914178523a4a7753e2dd9ce Mon Sep 17 00:00:00 2001 From: vasmaae Date: Mon, 25 Nov 2024 01:34:17 -0800 Subject: [PATCH 2/2] add REAL many-to-many relationship (come back) --- .../Entities/Service.cs | 7 +- .../Entities/ServiceContract.cs | 20 +++ .../FormItCompany.Designer.cs | 11 +- .../FormItCompany.cs | 12 ++ .../Forms/FormContract.Designer.cs | 5 +- .../Forms/FormContract.cs | 27 ++-- .../Forms/FormService.Designer.cs | 96 +++++++++++++ .../Forms/FormService.cs | 58 ++++++++ .../Forms/FormService.resx | 120 ++++++++++++++++ .../Forms/FormServices.Designer.cs | 130 ++++++++++++++++++ .../Forms/FormServices.cs | 96 +++++++++++++ .../Forms/FormServices.resx | 120 ++++++++++++++++ PIbd-23_Gutorov_I.A._IT-Company/Program.cs | 1 + .../Repositories/IServiceRepository.cs | 16 +++ .../Implementations/ServiceRepository.cs | 28 ++++ 15 files changed, 727 insertions(+), 20 deletions(-) create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Entities/ServiceContract.cs create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs create mode 100644 PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Entities/Service.cs b/PIbd-23_Gutorov_I.A._IT-Company/Entities/Service.cs index 3b670c6..76ee123 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Entities/Service.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Entities/Service.cs @@ -6,15 +6,12 @@ public class Service public string Description { get; private set; } = string.Empty; - public int ContractId { get; private set; } - - public static Service CreateEntity(int id, string description, int contractId) + public static Service CreateEntity(int id, string description) { return new Service { Id = id, - Description = description, - ContractId = contractId + Description = description }; } } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Entities/ServiceContract.cs b/PIbd-23_Gutorov_I.A._IT-Company/Entities/ServiceContract.cs new file mode 100644 index 0000000..7edd1bd --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Entities/ServiceContract.cs @@ -0,0 +1,20 @@ +namespace PIbd_23_Gutorov_I.A._IT_Company.Entities; + +public class ServiceContract +{ + public int Id { get; private set; } + + public int ServiceId { get; private set; } + + public int ContractId { get; private set; } + + public static ServiceContract CreateElement(int id, int serviceId, int contractId) + { + return new ServiceContract + { + Id = id, + ContractId = contractId, + ServiceId = serviceId + }; + } +} diff --git a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs index 4aec222..ada79b9 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.Designer.cs @@ -32,6 +32,7 @@ справочникиToolStripMenuItem = new ToolStripMenuItem(); CustomersToolStripMenuItem = new ToolStripMenuItem(); ExecutorsToolStripMenuItem = new ToolStripMenuItem(); + ServicesToolStripMenuItem = new ToolStripMenuItem(); операцииToolStripMenuItem = new ToolStripMenuItem(); CustomerContractReviewsToolStripMenuItem = new ToolStripMenuItem(); контрактыToolStripMenuItem = new ToolStripMenuItem(); @@ -50,7 +51,7 @@ // // справочникиToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CustomersToolStripMenuItem, ExecutorsToolStripMenuItem }); + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CustomersToolStripMenuItem, ExecutorsToolStripMenuItem, ServicesToolStripMenuItem }); справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; справочникиToolStripMenuItem.Size = new Size(94, 20); справочникиToolStripMenuItem.Text = "Справочники"; @@ -69,6 +70,13 @@ ExecutorsToolStripMenuItem.Text = "Исполнители"; ExecutorsToolStripMenuItem.Click += ExecutorsToolStripMenuItem_Click; // + // ServicesToolStripMenuItem + // + ServicesToolStripMenuItem.Name = "ServicesToolStripMenuItem"; + ServicesToolStripMenuItem.Size = new Size(180, 22); + ServicesToolStripMenuItem.Text = "Услуги"; + ServicesToolStripMenuItem.Click += ServicesToolStripMenuItem_Click; + // // операцииToolStripMenuItem // операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CustomerContractReviewsToolStripMenuItem, контрактыToolStripMenuItem }); @@ -124,5 +132,6 @@ private ToolStripMenuItem отчетыToolStripMenuItem; private ToolStripMenuItem CustomerContractReviewsToolStripMenuItem; private ToolStripMenuItem контрактыToolStripMenuItem; + private ToolStripMenuItem ServicesToolStripMenuItem; } } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs index 3035efc..795a495 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/FormItCompany.cs @@ -60,5 +60,17 @@ namespace PIbd_23_Gutorov_I.A._IT_Company MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + private void ServicesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs index 165e71c..d0fa481 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.Designer.cs @@ -42,7 +42,7 @@ labelContractPaymentAmount = new Label(); dataGridViewServices = new DataGridView(); groupBox = new GroupBox(); - ColumnServiceDescription = new DataGridViewTextBoxColumn(); + ColumnServiceDescription = new DataGridViewComboBoxColumn(); ((System.ComponentModel.ISupportInitialize)numericUpDownContractPaymentAmount).BeginInit(); ((System.ComponentModel.ISupportInitialize)dataGridViewServices).BeginInit(); groupBox.SuspendLayout(); @@ -189,6 +189,7 @@ ColumnServiceDescription.HeaderText = "Услуга"; ColumnServiceDescription.Name = "ColumnServiceDescription"; ColumnServiceDescription.Resizable = DataGridViewTriState.True; + ColumnServiceDescription.SortMode = DataGridViewColumnSortMode.Automatic; // // FormContract // @@ -234,6 +235,6 @@ private Label labelContractPaymentAmount; private DataGridView dataGridViewServices; private GroupBox groupBox; - private DataGridViewTextBoxColumn ColumnServiceDescription; + private DataGridViewComboBoxColumn ColumnServiceDescription; } } \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs index b2ceea6..6271a08 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormContract.cs @@ -9,18 +9,22 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms private readonly IContractRepository _contractRepository; public FormContract(IContractRepository contractRepository, ICustomerRepository customerRepository, - IExecutorRepository executorRepository) + IExecutorRepository executorRepository, IServiceRepository serviceRepository) { InitializeComponent(); _contractRepository = contractRepository ?? throw new ArgumentNullException(nameof(contractRepository)); comboBoxContractCustomerId.DataSource = customerRepository.ReadCustomers(); comboBoxContractCustomerId.DisplayMember = "Name"; - comboBoxContractCustomerId.DisplayMember = "Id"; + comboBoxContractCustomerId.ValueMember = "Id"; comboBoxContractExecutorId.DataSource = executorRepository.ReadExecutors(); comboBoxContractExecutorId.DisplayMember = "Name"; - comboBoxContractExecutorId.DisplayMember = "Id"; + comboBoxContractExecutorId.ValueMember= "Id"; + + ColumnServiceDescription.DataSource = serviceRepository.ReadServices(); + ColumnServiceDescription.DisplayMember = "Description"; + ColumnServiceDescription.ValueMember = "Id"; foreach (var elem in Enum.GetValues(typeof(ContractCategory))) { @@ -59,22 +63,21 @@ namespace PIbd_23_Gutorov_I.A._IT_Company.Forms contractCategory |= (ContractCategory)elem; } - return Contract.CreateEntity(id, (int)comboBoxContractCustomerId.SelectedValue!, - (int)comboBoxContractExecutorId.SelectedValue!, contractCategory, - dateTimePickerContractDeadline.Value, Convert.ToInt32(numericUpDownContractPaymentAmount.Value), - CreateServicesFromDataGrid()); + return Contract.CreateEntity(id, (int)comboBoxContractCustomerId.SelectedValue!, + (int)comboBoxContractExecutorId.SelectedValue!, contractCategory, + dateTimePickerContractDeadline.Value, Convert.ToInt32(numericUpDownContractPaymentAmount.Value), + CreateListServicesFromDataGrid()); } - private List CreateServicesFromDataGrid() + private List CreateListServicesFromDataGrid() { var list = new List(); - + foreach (DataGridViewRow row in dataGridViewServices.Rows) - if (!row.IsNewRow) - list.Add(Service.CreateEntity(0, Convert.ToString(row.Cells["Description"].Value)!, 0)); + if (row.Cells["ColumnServiceDescription"].Value != null) + list.Add(Service.CreateEntity(0, Convert.ToString(row.Cells["ColumnServiceDescription"].Value)!)); return list; } - } } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs new file mode 100644 index 0000000..4112755 --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.Designer.cs @@ -0,0 +1,96 @@ +namespace PIbd_23_Gutorov_I.A._IT_Company.Forms +{ + partial class FormService + { + /// + /// 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() + { + labelServiceDescription = new Label(); + richTextBoxServiceDescription = new RichTextBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + SuspendLayout(); + // + // labelServiceDescription + // + labelServiceDescription.AutoSize = true; + labelServiceDescription.Location = new Point(16, 15); + labelServiceDescription.Name = "labelServiceDescription"; + labelServiceDescription.Size = new Size(65, 15); + labelServiceDescription.TabIndex = 30; + labelServiceDescription.Text = "Описание:"; + // + // richTextBoxServiceDescription + // + richTextBoxServiceDescription.Location = new Point(173, 12); + richTextBoxServiceDescription.Name = "richTextBoxServiceDescription"; + richTextBoxServiceDescription.Size = new Size(202, 96); + richTextBoxServiceDescription.TabIndex = 29; + richTextBoxServiceDescription.Text = ""; + // + // buttonCancel + // + buttonCancel.Location = new Point(16, 143); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(359, 23); + buttonCancel.TabIndex = 32; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Location = new Point(16, 114); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(359, 23); + buttonSave.TabIndex = 31; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // FormService + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(387, 181); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelServiceDescription); + Controls.Add(richTextBoxServiceDescription); + Name = "FormService"; + StartPosition = FormStartPosition.CenterParent; + Text = "Услуга"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + private Label labelServiceDescription; + private RichTextBox richTextBoxServiceDescription; + private Button buttonCancel; + private Button buttonSave; + } +} \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs new file mode 100644 index 0000000..6831fd9 --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.cs @@ -0,0 +1,58 @@ +using PIbd_23_Gutorov_I.A._IT_Company.Entities; +using PIbd_23_Gutorov_I.A._IT_Company.Repositories; + +namespace PIbd_23_Gutorov_I.A._IT_Company.Forms +{ + public partial class FormService : Form + { + private readonly IServiceRepository _serviceRepository; + + private int? _serviceId; + + public int Id + { + set + { + try + { + var service = _serviceRepository.ReadServiceById(value); + if (service == null) throw new InvalidDataException(nameof(service)); + + richTextBoxServiceDescription.Text = service.Description; + _serviceId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormService(IServiceRepository serviceRepository) + { + InitializeComponent(); + _serviceRepository = serviceRepository ?? throw new ArgumentNullException(nameof(serviceRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(richTextBoxServiceDescription.Text)) + throw new Exception("Имеются незаполненные поля"); + + _serviceRepository.CreateService(Service.CreateEntity(0, + richTextBoxServiceDescription.Text)); + + 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/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormService.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/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs new file mode 100644 index 0000000..1666c9a --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.Designer.cs @@ -0,0 +1,130 @@ +using static System.Net.Mime.MediaTypeNames; +using System.Windows.Forms; +using System.Xml.Linq; + +namespace PIbd_23_Gutorov_I.A._IT_Company.Forms +{ + partial class FormServices + { + /// + /// 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(); + panel = new Panel(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panel.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.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(677, 450); + dataGridViewData.TabIndex = 5; + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(677, 0); + panel.Name = "panel"; + panel.Size = new Size(123, 450); + panel.TabIndex = 4; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.icon_remove_button; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(16, 204); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(90, 90); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.icon_edit_button; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(16, 108); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(90, 90); + buttonUpd.TabIndex = 1; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.icon_add_button; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(16, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(90, 90); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormServices + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormServices"; + StartPosition = FormStartPosition.CenterParent; + Text = "Услуги"; + Load += FormServices_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panel.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs new file mode 100644 index 0000000..60f8f62 --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.cs @@ -0,0 +1,96 @@ +using PIbd_23_Gutorov_I.A._IT_Company.Repositories; +using Unity; + +namespace PIbd_23_Gutorov_I.A._IT_Company.Forms +{ + public partial class FormServices : Form + { + private readonly IUnityContainer _container; + + private readonly IServiceRepository _serviceRepository; + + public FormServices(IUnityContainer container, IServiceRepository serviceRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentException(nameof(container)); + _serviceRepository = serviceRepository ?? throw new ArgumentException(nameof(serviceRepository)); + } + + private void FormServices_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 + { + _serviceRepository.DeleteService(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _serviceRepository.ReadServices(); + + 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/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Forms/FormServices.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/PIbd-23_Gutorov_I.A._IT-Company/Program.cs b/PIbd-23_Gutorov_I.A._IT-Company/Program.cs index 7874b0a..3c5e10d 100644 --- a/PIbd-23_Gutorov_I.A._IT-Company/Program.cs +++ b/PIbd-23_Gutorov_I.A._IT-Company/Program.cs @@ -26,6 +26,7 @@ namespace PIbd_23_Gutorov_I.A._IT_Company container.RegisterType(); container.RegisterType(); container.RegisterType(); + container.RegisterType(); return container; } diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs b/PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs new file mode 100644 index 0000000..aa261c0 --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Repositories/IServiceRepository.cs @@ -0,0 +1,16 @@ +using PIbd_23_Gutorov_I.A._IT_Company.Entities; + +namespace PIbd_23_Gutorov_I.A._IT_Company.Repositories; + +public interface IServiceRepository +{ + IEnumerable ReadServices(); + + Service ReadServiceById(int id); + + void CreateService(Service Service); + + void UpdateService(Service Service); + + void DeleteService(int id); +} \ No newline at end of file diff --git a/PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs b/PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs new file mode 100644 index 0000000..922a9fc --- /dev/null +++ b/PIbd-23_Gutorov_I.A._IT-Company/Repositories/Implementations/ServiceRepository.cs @@ -0,0 +1,28 @@ +using PIbd_23_Gutorov_I.A._IT_Company.Entities; + +namespace PIbd_23_Gutorov_I.A._IT_Company.Repositories.Implementations; + +internal class ServiceRepository : IServiceRepository +{ + public void CreateService(Service Service) + { + } + + public void DeleteService(int id) + { + } + + public Service ReadServiceById(int id) + { + return Service.CreateEntity(0, string.Empty); + } + + public IEnumerable ReadServices() + { + return []; + } + + public void UpdateService(Service Service) + { + } +} \ No newline at end of file