diff --git a/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs b/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs index e33fc2e..d52aba3 100644 --- a/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs +++ b/ProjectAtelier/ProjectAtelier/Entities/Expenditure.cs @@ -5,7 +5,7 @@ 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) + public static Expenditure CreateElement(int id, int clothId, double value) { return new Expenditure { diff --git a/ProjectAtelier/ProjectAtelier/Entities/Model.cs b/ProjectAtelier/ProjectAtelier/Entities/Model.cs index 5077e82..1c98ee7 100644 --- a/ProjectAtelier/ProjectAtelier/Entities/Model.cs +++ b/ProjectAtelier/ProjectAtelier/Entities/Model.cs @@ -16,4 +16,14 @@ public class Model Expenditures = expenditures }; } + + public static Model CreateEntity(TempExpenditure tempExpenditure, IEnumerable expenditures) + { + return new Model + { + Id = tempExpenditure.Id, + ModelType = tempExpenditure.ModelType, + Expenditures = expenditures + }; + } } \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Entities/TempExpenditure.cs b/ProjectAtelier/ProjectAtelier/Entities/TempExpenditure.cs new file mode 100644 index 0000000..ac5853c --- /dev/null +++ b/ProjectAtelier/ProjectAtelier/Entities/TempExpenditure.cs @@ -0,0 +1,11 @@ +using ProjectAtelier.Entities.Enums; + +namespace ProjectAtelier.Entities; + +public class TempExpenditure +{ + public int Id { get; private set; } + public ModelType ModelType { get; private set; } + public int ClothId { get; private set; } + public double Value { get; private set; } +} \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs index 8031070..f921b2d 100644 --- a/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.Designer.cs @@ -45,46 +45,42 @@ 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.Size = new Size(666, 451); 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.Location = new Point(666, 0); panel1.Name = "panel1"; - panel1.Size = new Size(117, 338); + panel1.Size = new Size(134, 451); 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.Location = new Point(21, 19); buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(82, 69); + buttonAdd.Size = new Size(94, 92); buttonAdd.TabIndex = 0; buttonAdd.UseVisualStyleBackColor = true; buttonAdd.Click += ButtonAdd_Click; // // FormEntrances // - AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(700, 338); + ClientSize = new Size(800, 451); Controls.Add(dataGridViewData); Controls.Add(panel1); - Margin = new Padding(3, 2, 3, 2); Name = "FormEntrances"; StartPosition = FormStartPosition.CenterParent; Text = "История пополнений"; diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs index 21ff726..2468760 100644 --- a/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs +++ b/ProjectAtelier/ProjectAtelier/Forms/FormEntrances.cs @@ -1,4 +1,5 @@ using ProjectAtelier.Repositories; +using ProjectAtelier.Repositories.Implementations; using Unity; namespace ProjectAtelier.Forms diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs index 9dffd25..05329c8 100644 --- a/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModel.cs @@ -1,19 +1,48 @@ using ProjectAtelier.Entities; +using ProjectAtelier.Entities.Enums; using ProjectAtelier.Repositories; +using ProjectAtelier.Repositories.Implementations; +using System.Windows.Forms; namespace ProjectAtelier.Forms { public partial class FormModel : Form { private readonly IModelRepository _modelRepository; + private int? _modelId; + public int Id + { + set + { + try + { + var model = _modelRepository.ReadModelById(value); + if (model == null) + { + throw new InvalidDataException(nameof(model)); + } + comboBoxModelType.SelectedItem = model.ModelType; + foreach (var elem in model.Expenditures) + { + var row = dataGridViewCloths.Rows[dataGridViewCloths.Rows.Add()]; + row.Cells["ColumnClothType"].Value = elem.ClothId; + row.Cells["ColumnValue"].Value = elem.Value; + } + _modelId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } 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"; + + comboBoxModelType.DataSource = Enum.GetValues(typeof(ModelType)); ColumnClothType.DataSource = clothRepository.ReadCloths(); ColumnClothType.DisplayMember = "ClothType"; @@ -27,7 +56,14 @@ namespace ProjectAtelier.Forms { throw new Exception("Имеются незаполненные поля"); } - _modelRepository.CreateModel(Model.CreateEntity(0, (Entities.Enums.ModelType)(int)comboBoxModelType.SelectedValue!, CreateListExpenditureFromDataGrid())); + if (_modelId.HasValue) + { + _modelRepository.UpdateModel(CreateModel(_modelId.Value)); + } + else + { + _modelRepository.CreateModel(Model.CreateEntity(0, (Entities.Enums.ModelType)(int)comboBoxModelType.SelectedValue!, CreateListExpenditureFromDataGrid())); + } Close(); } catch (Exception ex) @@ -36,9 +72,9 @@ namespace ProjectAtelier.Forms } } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private Model CreateModel(int id) => Model.CreateEntity(id, (Entities.Enums.ModelType)(int)comboBoxModelType.SelectedValue!, CreateListExpenditureFromDataGrid()); - private List - CreateListExpenditureFromDataGrid() + private List CreateListExpenditureFromDataGrid() { var list = new List(); foreach (DataGridViewRow row in dataGridViewCloths.Rows) @@ -47,9 +83,13 @@ namespace ProjectAtelier.Forms { continue; } - list.Add(Expenditure.CreateOperation(0, Convert.ToInt32(row.Cells["ColumnClothType"].Value), Convert.ToInt32(row.Cells["ColumnValue"].Value))); + list.Add(Expenditure.CreateElement(0, + Convert.ToInt32(row.Cells["ColumnClothType"].Value), + Convert.ToInt32(row.Cells["ColumnValue"].Value))); } return list; } + + } } diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs index b9b2bf9..d64912a 100644 --- a/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModels.Designer.cs @@ -31,6 +31,7 @@ buttonDel = new Button(); buttonAdd = new Button(); panel1 = new Panel(); + buttonUpd = new Button(); dataGridViewData = new DataGridView(); panel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); @@ -40,7 +41,7 @@ // buttonDel.BackgroundImage = Properties.Resources.icons8_удалить_100; buttonDel.BackgroundImageLayout = ImageLayout.Stretch; - buttonDel.Location = new Point(18, 87); + buttonDel.Location = new Point(18, 160); buttonDel.Margin = new Padding(3, 2, 3, 2); buttonDel.Name = "buttonDel"; buttonDel.Size = new Size(82, 69); @@ -62,6 +63,7 @@ // // panel1 // + panel1.Controls.Add(buttonUpd); panel1.Controls.Add(buttonDel); panel1.Controls.Add(buttonAdd); panel1.Dock = DockStyle.Right; @@ -71,6 +73,18 @@ panel1.Size = new Size(117, 450); panel1.TabIndex = 8; // + // 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 = 10; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // // dataGridViewData // dataGridViewData.AllowUserToAddRows = false; @@ -113,5 +127,6 @@ private Button buttonAdd; private Panel panel1; private DataGridView dataGridViewData; + private Button buttonUpd; } } \ No newline at end of file diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs b/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs index 2ad0139..debd870 100644 --- a/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModels.cs @@ -36,6 +36,24 @@ namespace ProjectAtelier.Forms 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)) diff --git a/ProjectAtelier/ProjectAtelier/Forms/FormModels.resx b/ProjectAtelier/ProjectAtelier/Forms/FormModels.resx index af32865..8b2ff64 100644 --- a/ProjectAtelier/ProjectAtelier/Forms/FormModels.resx +++ b/ProjectAtelier/ProjectAtelier/Forms/FormModels.resx @@ -1,7 +1,7 @@