From 662311e932ebdc6649f7249c80f25db1cf95809a Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Sun, 12 Feb 2023 11:11:07 +0400 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8,=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82=D1=8B,=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShopLogic.cs | 118 ++++++++++++++++++ .../BindingModels/ShopBindingModel.cs | 21 ++++ .../BusinessLogicsContarcts/IShopLogic.cs | 20 +++ .../SearchModels/ShopSearchModel.cs | 14 +++ .../StoragesContracts/IShopStorage.cs | 21 ++++ .../ViewModels/ShopViewModel.cs | 23 ++++ .../Models/IShopModel.cs | 16 +++ .../DataListSingleton.cs | 3 + .../Implements/ShopStorage.cs | 113 +++++++++++++++++ .../Models/Shop.cs | 60 +++++++++ 10 files changed, 409 insertions(+) create mode 100644 FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/ShopBindingModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/ShopSearchModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/ShopViewModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyDataModels/Models/IShopModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs new file mode 100644 index 0000000..edc3886 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs @@ -0,0 +1,118 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.BusinessLogicsContarcts; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.StoragesContracts; +using FurnitureAssemblyContracts.ViewModels; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyBusinessLogic +{ + public class ShopLogic : IShopLogic + { + private readonly ILogger _logger; + private readonly IShopStorage _shopStorage; + + public ShopLogic(ILogger logger, IShopStorage shopStorage) + { + _logger = logger; + _shopStorage = shopStorage; + } + public ShopViewModel? ReadElement(ShopSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. ShopName:{ShopName}. Id:{ Id}", model.ShopName, model.Id); + var element = _shopStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + + public List? ReadList(ShopSearchModel? model) + { + _logger.LogInformation("ReadList. ShopName:{ShopName}. Id:{ Id}", model?.ShopName, model?.Id); + var list = model == null ? _shopStorage.GetFullList() : _shopStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + public bool Create(ShopBindingModel model) + { + CheckModel(model); + if (_shopStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + + public bool Delete(ShopBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_shopStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + + public bool Update(ShopBindingModel model) + { + CheckModel(model); + if (_shopStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + + private void CheckModel(ShopBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.ShopName)) + { + throw new ArgumentNullException("Нет названия магазина", nameof(model.ShopName)); + } + if (string.IsNullOrEmpty(model.Address)) + { + throw new ArgumentNullException("Нет адреса магазина", nameof(model.Address)); + } + if (model.DateOpening.Equals(null)) + { + throw new ArgumentNullException("Нет даты открытия магазина", nameof(model.DateOpening)); + } + _logger.LogInformation("Shop. ShopName:{ShopName}. Address:{ Address}. DateOpening:{ DateOpening}. Id: { Id}", model.ShopName, model.Address, model.DateOpening, model.Id); + var element = _shopStorage.GetElement(new ShopSearchModel { ShopName = model.ShopName }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Магазин с таким названием уже есть"); + } + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/ShopBindingModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/ShopBindingModel.cs new file mode 100644 index 0000000..379850c --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/ShopBindingModel.cs @@ -0,0 +1,21 @@ +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.BindingModels +{ + public class ShopBindingModel : IShopModel + { + public int Id { get; set; } + public string ShopName { get; set; } = string.Empty; + + public string Address { get; set; } = string.Empty; + + public DateTime DateOpening { get; set; } + + public Dictionary Furnitures { get; set; } = new(); + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs b/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs new file mode 100644 index 0000000..1660abe --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs @@ -0,0 +1,20 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.BusinessLogicsContarcts +{ + public interface IShopLogic + { + List? ReadList(ShopSearchModel? model); + ShopViewModel? ReadElement(ShopSearchModel model); + bool Create(ShopBindingModel model); + bool Update(ShopBindingModel model); + bool Delete(ShopBindingModel model); + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/ShopSearchModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/ShopSearchModel.cs new file mode 100644 index 0000000..254f7ab --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/ShopSearchModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.SearchModels +{ + public class ShopSearchModel + { + public int? Id { get; set; } + public string? ShopName { get; set; } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs b/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs new file mode 100644 index 0000000..43a0aaa --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs @@ -0,0 +1,21 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.StoragesContracts +{ + public interface IShopStorage + { + List GetFullList(); + List GetFilteredList(ShopSearchModel model); + ShopViewModel? GetElement(ShopSearchModel model); + ShopViewModel? Insert(ShopBindingModel model); + ShopViewModel? Update(ShopBindingModel model); + ShopViewModel? Delete(ShopBindingModel model); + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/ShopViewModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/ShopViewModel.cs new file mode 100644 index 0000000..0a738fc --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/ShopViewModel.cs @@ -0,0 +1,23 @@ +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.ViewModels +{ + public class ShopViewModel : IShopModel + { + public int Id { get; set; } + [DisplayName("Название магазина")] + public string ShopName { get; set; } = string.Empty; + [DisplayName("Адрес магазина")] + public string Address { get; set; } = string.Empty; + [DisplayName("Дата открытия")] + public DateTime DateOpening { get; set; } + + public Dictionary Furnitures { get; set; } = new(); + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IShopModel.cs b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IShopModel.cs new file mode 100644 index 0000000..bd5efbf --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IShopModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyDataModels.Models +{ + public interface IShopModel : IId + { + string ShopName { get; } + string Address { get; } + DateTime DateOpening { get; } + Dictionary Furnitures { get; } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/DataListSingleton.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/DataListSingleton.cs index d3d6d9d..bd7526a 100644 --- a/FurnitureAssembly/FurnitureAssemblyListImplement/DataListSingleton.cs +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/DataListSingleton.cs @@ -13,11 +13,14 @@ namespace FurnitureAssemblyListImplement public List Components { get; set; } public List Orders { get; set; } public List Furnitures { get; set; } + public List Shops { get; set; } + private DataListSingleton() { Components = new List(); Orders = new List(); Furnitures = new List(); + Shops = new List(); } public static DataListSingleton GetInstance() { diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs new file mode 100644 index 0000000..65e0e2b --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs @@ -0,0 +1,113 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.StoragesContracts; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyListImplement.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyListImplement.Implements +{ + public class ShopStorage : IShopStorage + { + private readonly DataListSingleton _source; + + public ShopStorage() + { + _source = DataListSingleton.GetInstance(); + } + + public List GetFullList() + { + var result = new List(); + foreach (var shop in _source.Shops) + { + result.Add(shop.GetViewModel); + } + return result; + } + + public List GetFilteredList(ShopSearchModel model) + { + var result = new List(); + if (string.IsNullOrEmpty(model.ShopName)) + { + return result; + } + foreach (var shop in _source.Shops) + { + if (shop.ShopName.Contains(model.ShopName)) + { + result.Add(shop.GetViewModel); + } + } + return result; + } + + public ShopViewModel? GetElement(ShopSearchModel model) + { + if (string.IsNullOrEmpty(model.ShopName) && !model.Id.HasValue) + { + return null; + } + foreach (var shop in _source.Shops) + { + if ((!string.IsNullOrEmpty(model.ShopName) && shop.ShopName == model.ShopName) || + (model.Id.HasValue && shop.Id == model.Id)) + { + return shop.GetViewModel; + } + } + return null; + } + + public ShopViewModel? Insert(ShopBindingModel model) + { + model.Id = 1; + foreach (var shop in _source.Shops) + { + if (model.Id <= shop.Id) + { + model.Id = shop.Id + 1; + } + } + var newShop = Shop.Create(model); + if (newShop == null) + { + return null; + } + _source.Shops.Add(newShop); + return newShop.GetViewModel; + } + + public ShopViewModel? Update(ShopBindingModel model) + { + foreach (var shop in _source.Shops) + { + if (shop.Id == model.Id) + { + shop.Update(model); + return shop.GetViewModel; + } + } + return null; + } + + public ShopViewModel? Delete(ShopBindingModel model) + { + for (int i = 0; i < _source.Shops.Count; ++i) + { + if (_source.Shops[i].Id == model.Id) + { + var element = _source.Shops[i]; + _source.Shops.RemoveAt(i); + return element.GetViewModel; + } + } + return null; + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs new file mode 100644 index 0000000..8e96c90 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs @@ -0,0 +1,60 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyListImplement.Models +{ + public class Shop : IShopModel + { + public int Id { get; private set; } + public string ShopName { get; private set; } = string.Empty; + + public string Address { get; private set; } = string.Empty; + + public DateTime DateOpening { get; private set; } + + public Dictionary Furnitures { get; private set; } = new(); + + public static Shop? Create(ShopBindingModel? model) + { + if (model == null) + { + return null; + } + return new Shop() + { + Id = model.Id, + ShopName = model.ShopName, + Address = model.Address, + DateOpening = model.DateOpening, + Furnitures = model.Furnitures + }; + } + + public void Update(ShopBindingModel? model) + { + if (model == null) + { + return; + } + ShopName = model.ShopName; + Address = model.Address; + DateOpening = model.DateOpening; + Furnitures = model.Furnitures; + } + public ShopViewModel GetViewModel => new() + { + Id = Id, + ShopName = ShopName, + Address = Address, + DateOpening = DateOpening, + Furnitures = Furnitures + }; + } +} -- 2.25.1 From 335cda61e4aefa30c8c79e1a6bd14c6ac148b3ae Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Sun, 12 Feb 2023 11:15:06 +0400 Subject: [PATCH 2/6] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=B0=D0=B3=D0=B0=D0=B7=D0=B8=D0=BD=D0=B0=20=D0=B8=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BC=D0=B0=D0=B3=D0=B0=D0=B7=D0=B8=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FurnitureAssembly/FormShop.Designer.cs | 141 ++++++++++++++++++ .../FurnitureAssembly/FormShop.cs | 105 +++++++++++++ .../FurnitureAssembly/FormShop.resx | 60 ++++++++ .../FurnitureAssembly/FormShops.Designer.cs | 114 ++++++++++++++ .../FurnitureAssembly/FormShops.cs | 108 ++++++++++++++ .../FurnitureAssembly/FormShops.resx | 60 ++++++++ 6 files changed, 588 insertions(+) create mode 100644 FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs create mode 100644 FurnitureAssembly/FurnitureAssembly/FormShop.cs create mode 100644 FurnitureAssembly/FurnitureAssembly/FormShop.resx create mode 100644 FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs create mode 100644 FurnitureAssembly/FurnitureAssembly/FormShops.cs create mode 100644 FurnitureAssembly/FurnitureAssembly/FormShops.resx diff --git a/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs b/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs new file mode 100644 index 0000000..59820d1 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs @@ -0,0 +1,141 @@ +namespace FurnitureAssembly +{ + partial class FormShop + { + /// + /// 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.labelShopName = new System.Windows.Forms.Label(); + this.textBoxName = new System.Windows.Forms.TextBox(); + this.textBoxAddress = new System.Windows.Forms.TextBox(); + this.labelAddress = new System.Windows.Forms.Label(); + this.labelDate = new System.Windows.Forms.Label(); + this.dateTimePicker = new System.Windows.Forms.DateTimePicker(); + this.ButtonSave = new System.Windows.Forms.Button(); + this.ButtonCancel = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // labelShopName + // + this.labelShopName.AutoSize = true; + this.labelShopName.Location = new System.Drawing.Point(37, 45); + this.labelShopName.Name = "labelShopName"; + this.labelShopName.Size = new System.Drawing.Size(113, 15); + this.labelShopName.TabIndex = 0; + this.labelShopName.Text = "Название магазина"; + // + // textBoxName + // + this.textBoxName.Location = new System.Drawing.Point(168, 42); + this.textBoxName.Name = "textBoxName"; + this.textBoxName.Size = new System.Drawing.Size(282, 23); + this.textBoxName.TabIndex = 1; + // + // textBoxAddress + // + this.textBoxAddress.Location = new System.Drawing.Point(168, 83); + this.textBoxAddress.Name = "textBoxAddress"; + this.textBoxAddress.Size = new System.Drawing.Size(282, 23); + this.textBoxAddress.TabIndex = 3; + // + // labelAddress + // + this.labelAddress.AutoSize = true; + this.labelAddress.Location = new System.Drawing.Point(37, 86); + this.labelAddress.Name = "labelAddress"; + this.labelAddress.Size = new System.Drawing.Size(40, 15); + this.labelAddress.TabIndex = 2; + this.labelAddress.Text = "Адрес"; + // + // labelDate + // + this.labelDate.AutoSize = true; + this.labelDate.Location = new System.Drawing.Point(37, 128); + this.labelDate.Name = "labelDate"; + this.labelDate.Size = new System.Drawing.Size(87, 15); + this.labelDate.TabIndex = 4; + this.labelDate.Text = "Дата открытия"; + // + // dateTimePicker + // + this.dateTimePicker.Location = new System.Drawing.Point(168, 122); + this.dateTimePicker.Name = "dateTimePicker"; + this.dateTimePicker.Size = new System.Drawing.Size(282, 23); + this.dateTimePicker.TabIndex = 6; + // + // ButtonSave + // + this.ButtonSave.Location = new System.Drawing.Point(230, 169); + this.ButtonSave.Name = "ButtonSave"; + this.ButtonSave.Size = new System.Drawing.Size(99, 28); + this.ButtonSave.TabIndex = 7; + this.ButtonSave.Text = "Сохранить"; + this.ButtonSave.UseVisualStyleBackColor = true; + this.ButtonSave.Click += new System.EventHandler(this.ButtonSave_Click); + // + // ButtonCancel + // + this.ButtonCancel.Location = new System.Drawing.Point(351, 169); + this.ButtonCancel.Name = "ButtonCancel"; + this.ButtonCancel.Size = new System.Drawing.Size(99, 28); + this.ButtonCancel.TabIndex = 8; + this.ButtonCancel.Text = "Отмена"; + this.ButtonCancel.UseVisualStyleBackColor = true; + this.ButtonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); + // + // FormShop + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(498, 209); + this.Controls.Add(this.ButtonCancel); + this.Controls.Add(this.ButtonSave); + this.Controls.Add(this.dateTimePicker); + this.Controls.Add(this.labelDate); + this.Controls.Add(this.textBoxAddress); + this.Controls.Add(this.labelAddress); + this.Controls.Add(this.textBoxName); + this.Controls.Add(this.labelShopName); + this.Name = "FormShop"; + this.Text = "Магазин"; + this.Load += new System.EventHandler(this.FormShop_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private Label labelShopName; + private TextBox textBoxName; + private TextBox textBoxAddress; + private Label labelAddress; + private Label labelDate; + private DateTimePicker dateTimePicker; + private Button ButtonSave; + private Button ButtonCancel; + } +} \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssembly/FormShop.cs b/FurnitureAssembly/FurnitureAssembly/FormShop.cs new file mode 100644 index 0000000..7e388a8 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.cs @@ -0,0 +1,105 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.BusinessLogicsContarcts; +using FurnitureAssemblyContracts.SearchModels; +using Microsoft.Extensions.Logging; + +namespace FurnitureAssembly +{ + public partial class FormShop : Form + { + private readonly ILogger _logger; + private readonly IShopLogic _logic; + + private int? _id; + public int Id { set { _id = value; } } + public FormShop(ILogger logger, IShopLogic logic) + { + InitializeComponent(); + _logger = logger; + _logic = logic; + } + + + private void ButtonSave_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(textBoxName.Text)) + { + MessageBox.Show("Заполните название", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + if (string.IsNullOrEmpty(textBoxAddress.Text)) + { + MessageBox.Show("Заполните адрес", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (string.IsNullOrEmpty(dateTimePicker.Text)) + { + MessageBox.Show("Заполните дату открытия", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + _logger.LogInformation("Сохранение магазина"); + try + { + var model = new ShopBindingModel + { + Id = _id ?? 0, + ShopName = textBoxName.Text, + Address = textBoxAddress.Text, + DateOpening = dateTimePicker.Value + }; + var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + MessageBox.Show("Сохранение прошло успешно", "Сообщение", + MessageBoxButtons.OK, MessageBoxIcon.Information); + DialogResult = DialogResult.OK; + Close(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения магазина"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + + private void FormShop_Load(object sender, EventArgs e) + { + if (_id.HasValue) + { + try + { + _logger.LogInformation("Получение магазина"); + var view = _logic.ReadElement(new ShopSearchModel + { + Id = _id.Value + }); + if (view != null) + { + textBoxName.Text = view.ShopName; + textBoxAddress.Text = view.Address.ToString(); + dateTimePicker.Value = view.DateOpening; + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения магазина"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } + } + } +} diff --git a/FurnitureAssembly/FurnitureAssembly/FormShop.resx b/FurnitureAssembly/FurnitureAssembly/FormShop.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs b/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs new file mode 100644 index 0000000..f9bfdce --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs @@ -0,0 +1,114 @@ +namespace FurnitureAssembly +{ + partial class FormShops + { + /// + /// 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.dataGridView = new System.Windows.Forms.DataGridView(); + this.ButtonRef = new System.Windows.Forms.Button(); + this.ButtonUpd = new System.Windows.Forms.Button(); + this.ButtonDel = new System.Windows.Forms.Button(); + this.ButtonAdd = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); + this.SuspendLayout(); + // + // dataGridView + // + this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView.Location = new System.Drawing.Point(-1, -1); + this.dataGridView.Name = "dataGridView"; + this.dataGridView.RowTemplate.Height = 25; + this.dataGridView.Size = new System.Drawing.Size(559, 453); + this.dataGridView.TabIndex = 6; + // + // ButtonRef + // + this.ButtonRef.Location = new System.Drawing.Point(601, 223); + this.ButtonRef.Name = "ButtonRef"; + this.ButtonRef.Size = new System.Drawing.Size(105, 29); + this.ButtonRef.TabIndex = 13; + this.ButtonRef.Text = "Обновить"; + this.ButtonRef.UseVisualStyleBackColor = true; + this.ButtonRef.Click += new System.EventHandler(this.ButtonRef_Click); + // + // ButtonUpd + // + this.ButtonUpd.Location = new System.Drawing.Point(601, 168); + this.ButtonUpd.Name = "ButtonUpd"; + this.ButtonUpd.Size = new System.Drawing.Size(105, 29); + this.ButtonUpd.TabIndex = 12; + this.ButtonUpd.Text = "Изменить"; + this.ButtonUpd.UseVisualStyleBackColor = true; + this.ButtonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); + // + // ButtonDel + // + this.ButtonDel.Location = new System.Drawing.Point(601, 113); + this.ButtonDel.Name = "ButtonDel"; + this.ButtonDel.Size = new System.Drawing.Size(105, 29); + this.ButtonDel.TabIndex = 11; + this.ButtonDel.Text = "Удалить"; + this.ButtonDel.UseVisualStyleBackColor = true; + this.ButtonDel.Click += new System.EventHandler(this.ButtonDel_Click); + // + // ButtonAdd + // + this.ButtonAdd.Location = new System.Drawing.Point(601, 59); + this.ButtonAdd.Name = "ButtonAdd"; + this.ButtonAdd.Size = new System.Drawing.Size(105, 29); + this.ButtonAdd.TabIndex = 10; + this.ButtonAdd.Text = "Добавить"; + this.ButtonAdd.UseVisualStyleBackColor = true; + this.ButtonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); + // + // FormShops + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(743, 451); + this.Controls.Add(this.ButtonRef); + this.Controls.Add(this.ButtonUpd); + this.Controls.Add(this.ButtonDel); + this.Controls.Add(this.ButtonAdd); + this.Controls.Add(this.dataGridView); + this.Name = "FormShops"; + this.Text = "FormShops"; + this.Load += new System.EventHandler(this.FormShops_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private DataGridView dataGridView; + private Button ButtonRef; + private Button ButtonUpd; + private Button ButtonDel; + private Button ButtonAdd; + } +} \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssembly/FormShops.cs b/FurnitureAssembly/FurnitureAssembly/FormShops.cs new file mode 100644 index 0000000..7f75bd5 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormShops.cs @@ -0,0 +1,108 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.BusinessLogicsContarcts; +using Microsoft.Extensions.Logging; + + +namespace FurnitureAssembly +{ + public partial class FormShops : Form + { + private readonly ILogger _logger; + private readonly IShopLogic _logic; + + public FormShops(ILogger logger, IShopLogic logic) + { + InitializeComponent(); + _logger = logger; + _logic = logic; + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormShop)); + if (service is FormShop form) + { + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + + private void FormShops_Load(object sender, EventArgs e) + { + LoadData(); + } + + private void LoadData() + { + try + { + var list = _logic.ReadList(null); + if (list != null) + { + dataGridView.DataSource = list; + dataGridView.Columns["Id"].Visible = false; + dataGridView.Columns["ShopName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + _logger.LogInformation("Загрузка магазинов"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки магазинов"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var service = + Program.ServiceProvider?.GetService(typeof(FormShop)); + if (service is FormShop form) + { + form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", + MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + int id = + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Удаление магазина"); + try + { + if (!_logic.Delete(new ShopBindingModel{ Id = id})) + { + throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления магазина"); + MessageBox.Show(ex.Message, "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + + private void ButtonRef_Click(object sender, EventArgs e) + { + LoadData(); + } + } +} diff --git a/FurnitureAssembly/FurnitureAssembly/FormShops.resx b/FurnitureAssembly/FurnitureAssembly/FormShops.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormShops.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 -- 2.25.1 From 2c54d51c2c51863d4e7093284ef0d81a15dfb0a6 Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Sun, 12 Feb 2023 23:21:00 +0400 Subject: [PATCH 3/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FurnitureAssemblyBusinessLogic/ShopLogic.cs | 12 ++++++++++++ .../BusinessLogicsContarcts/IShopLogic.cs | 1 + .../StoragesContracts/IShopStorage.cs | 7 ++----- .../Implements/ShopStorage.cs | 13 +++++++++++++ 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs index edc3886..544b405 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs @@ -114,5 +114,17 @@ namespace FurnitureAssemblyBusinessLogic throw new InvalidOperationException("Магазин с таким названием уже есть"); } } + + public bool AddFurniture(ShopBindingModel model, FurnitureBindingModel furnitureModel, int count) + { + CheckModel(model); + + if (_shopStorage.AddFurniture(model, furnitureModel, count) == null) + { + _logger.LogWarning("Replenishment operation failed"); + return false; + } + return true; + } } } diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs b/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs index 1660abe..d08b39d 100644 --- a/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicsContarcts/IShopLogic.cs @@ -16,5 +16,6 @@ namespace FurnitureAssemblyContracts.BusinessLogicsContarcts bool Create(ShopBindingModel model); bool Update(ShopBindingModel model); bool Delete(ShopBindingModel model); + bool AddFurniture(ShopBindingModel model, FurnitureBindingModel furnitureModel, int count); } } diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs b/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs index 43a0aaa..a72939f 100644 --- a/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs +++ b/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs @@ -1,11 +1,7 @@ using FurnitureAssemblyContracts.BindingModels; using FurnitureAssemblyContracts.SearchModels; using FurnitureAssemblyContracts.ViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; + namespace FurnitureAssemblyContracts.StoragesContracts { @@ -17,5 +13,6 @@ namespace FurnitureAssemblyContracts.StoragesContracts ShopViewModel? Insert(ShopBindingModel model); ShopViewModel? Update(ShopBindingModel model); ShopViewModel? Delete(ShopBindingModel model); + ShopViewModel? AddFurniture(ShopBindingModel model, FurnitureBindingModel furniture, int count); } } diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs index 65e0e2b..3b1731a 100644 --- a/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs @@ -109,5 +109,18 @@ namespace FurnitureAssemblyListImplement.Implements } return null; } + + public ShopViewModel? AddFurniture(ShopBindingModel model, FurnitureBindingModel furniture, int count) + { + foreach (var shop in _source.Shops) + { + if (shop.Id == model.Id) + { + shop.AddFurniture(model, furniture, count); + return shop.GetViewModel; + } + } + return null; + } } } -- 2.25.1 From 4e0ca60e928faae4b7f1b9407517cbbcbd639bed Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Sun, 12 Feb 2023 23:21:21 +0400 Subject: [PATCH 4/6] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D1=8B=20=D0=B8=20?= =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FurnitureAssembly/FormMain.Designer.cs | 24 ++- .../FurnitureAssembly/FormMain.cs | 69 ++++++++- .../FormReplenishmentShop.Designer.cs | 142 ++++++++++++++++++ .../FormReplenishmentShop.cs | 142 ++++++++++++++++++ .../FormReplenishmentShop.resx | 60 ++++++++ .../FurnitureAssembly/FormShop.Designer.cs | 46 +++++- .../FurnitureAssembly/FormShop.cs | 30 ++++ .../FurnitureAssembly/FormShop.resx | 9 ++ .../FurnitureAssembly/FormShops.Designer.cs | 2 +- .../FurnitureAssembly/Program.cs | 5 + .../Models/Shop.cs | 16 ++ 11 files changed, 536 insertions(+), 9 deletions(-) create mode 100644 FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.Designer.cs create mode 100644 FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.cs create mode 100644 FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.resx diff --git a/FurnitureAssembly/FurnitureAssembly/FormMain.Designer.cs b/FurnitureAssembly/FurnitureAssembly/FormMain.Designer.cs index 0199789..f81c725 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormMain.Designer.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormMain.Designer.cs @@ -38,6 +38,8 @@ this.справочникиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.компонентыToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.изделияToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.магазиныToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.пополнениеМагазинаToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); @@ -104,7 +106,8 @@ // menuStrip1 // this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.справочникиToolStripMenuItem}); + this.справочникиToolStripMenuItem, + this.пополнениеМагазинаToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(1065, 24); @@ -115,7 +118,8 @@ // this.справочникиToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.компонентыToolStripMenuItem, - this.изделияToolStripMenuItem}); + this.изделияToolStripMenuItem, + this.магазиныToolStripMenuItem}); this.справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; this.справочникиToolStripMenuItem.Size = new System.Drawing.Size(94, 20); this.справочникиToolStripMenuItem.Text = "Справочники"; @@ -134,6 +138,20 @@ this.изделияToolStripMenuItem.Text = "Изделия"; this.изделияToolStripMenuItem.Click += new System.EventHandler(this.ИзделияToolStripMenuItem_Click); // + // магазиныToolStripMenuItem + // + this.магазиныToolStripMenuItem.Name = "магазиныToolStripMenuItem"; + this.магазиныToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.магазиныToolStripMenuItem.Text = "Магазины"; + this.магазиныToolStripMenuItem.Click += new System.EventHandler(this.ShopsToolStripMenuItem_Click); + // + // пополнениеМагазинаToolStripMenuItem + // + this.пополнениеМагазинаToolStripMenuItem.Name = "пополнениеМагазинаToolStripMenuItem"; + this.пополнениеМагазинаToolStripMenuItem.Size = new System.Drawing.Size(143, 20); + this.пополнениеМагазинаToolStripMenuItem.Text = "Пополнение магазина"; + this.пополнениеМагазинаToolStripMenuItem.Click += new System.EventHandler(this.ReplenishmentToolStripMenuItem_Click); + // // FormMain // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -170,5 +188,7 @@ private ToolStripMenuItem справочникиToolStripMenuItem; private ToolStripMenuItem компонентыToolStripMenuItem; private ToolStripMenuItem изделияToolStripMenuItem; + private ToolStripMenuItem магазиныToolStripMenuItem; + private ToolStripMenuItem пополнениеМагазинаToolStripMenuItem; } } \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssembly/FormMain.cs b/FurnitureAssembly/FurnitureAssembly/FormMain.cs index 62e043a..cc422a4 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormMain.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormMain.cs @@ -18,11 +18,13 @@ namespace FurnitureAssembly { private readonly ILogger _logger; private readonly IOrderLogic _orderLogic; - public FormMain(ILogger logger, IOrderLogic orderLogic) + private readonly IShopLogic _shopLogic; + public FormMain(ILogger logger, IOrderLogic orderLogic, IShopLogic shopLogic) { InitializeComponent(); _logger = logger; - _orderLogic = orderLogic; + _orderLogic = orderLogic; + _shopLogic = shopLogic; } private void FormMain_Load(object sender, EventArgs e) { @@ -153,6 +155,67 @@ namespace FurnitureAssembly private void ButtonRef_Click(object sender, EventArgs e) { LoadData(); - } + } + + private OrderBindingModel GetOrderBindingModel() + { + return new OrderBindingModel + { + Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value), + FurnitureId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["FurnitureId"].Value), + FurnitureName = dataGridView.SelectedRows[0].Cells["FurnitureName"].Value.ToString(), + Status = Enum.Parse(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()), + Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), + Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()), + DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString()) + }; + } + + private void ShopsToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormShops)); + if (service is FormShops form) + { + form.ShowDialog(); + } + } + + private void ReplenishmentToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormReplenishmentShop)); + if (service is FormReplenishmentShop form) + { + if (form.ShowDialog() == DialogResult.OK) + { + if (form.ShopModel == null || form.FurnitureModel == null) + { + return; + } + _logger.LogInformation("Добавление в магазин {ShopName} изделия: { FurnitureName}- { Count}", form.ShopModel.ShopName, form.FurnitureModel.FurnitureName, form.Count); + + var modelShop = new ShopBindingModel + { + Id = form.Id, + ShopName = form.ShopModel.ShopName, + Address = form.ShopModel.Address, + DateOpening = form.ShopModel.DateOpening, + }; + + var modelFurn = new FurnitureBindingModel + { + Id = form.FurnitureId, + FurnitureName = form.FurnitureModel.FurnitureName, + Price = form.FurnitureModel.Price, + FurnitureComponents = form.FurnitureModel.FurnitureComponents + }; + + var operationResult = _shopLogic.AddFurniture(modelShop, modelFurn, form.Count); + if (!operationResult) + { + throw new Exception("Ошибка при пополнении магазина. Дополнительная информация в логах."); + } + } + } + } } } diff --git a/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.Designer.cs b/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.Designer.cs new file mode 100644 index 0000000..4b4f438 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.Designer.cs @@ -0,0 +1,142 @@ +namespace FurnitureAssembly +{ + partial class FormReplenishmentShop + { + /// + /// 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.comboBoxShop = new System.Windows.Forms.ComboBox(); + this.labelShop = new System.Windows.Forms.Label(); + this.comboBoxFurniture = new System.Windows.Forms.ComboBox(); + this.labelFurniture = new System.Windows.Forms.Label(); + this.labelNum = new System.Windows.Forms.Label(); + this.buttonAdd = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.textBoxCount = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // comboBoxShop + // + this.comboBoxShop.FormattingEnabled = true; + this.comboBoxShop.Location = new System.Drawing.Point(133, 18); + this.comboBoxShop.Name = "comboBoxShop"; + this.comboBoxShop.Size = new System.Drawing.Size(296, 23); + this.comboBoxShop.TabIndex = 0; + // + // labelShop + // + this.labelShop.AutoSize = true; + this.labelShop.Location = new System.Drawing.Point(46, 21); + this.labelShop.Name = "labelShop"; + this.labelShop.Size = new System.Drawing.Size(54, 15); + this.labelShop.TabIndex = 1; + this.labelShop.Text = "Магазин"; + // + // comboBoxFurniture + // + this.comboBoxFurniture.FormattingEnabled = true; + this.comboBoxFurniture.Location = new System.Drawing.Point(133, 62); + this.comboBoxFurniture.Name = "comboBoxFurniture"; + this.comboBoxFurniture.Size = new System.Drawing.Size(296, 23); + this.comboBoxFurniture.TabIndex = 2; + // + // labelFurniture + // + this.labelFurniture.AutoSize = true; + this.labelFurniture.Location = new System.Drawing.Point(46, 65); + this.labelFurniture.Name = "labelFurniture"; + this.labelFurniture.Size = new System.Drawing.Size(53, 15); + this.labelFurniture.TabIndex = 4; + this.labelFurniture.Text = "Изделие"; + // + // labelNum + // + this.labelNum.AutoSize = true; + this.labelNum.Location = new System.Drawing.Point(46, 106); + this.labelNum.Name = "labelNum"; + this.labelNum.Size = new System.Drawing.Size(72, 15); + this.labelNum.TabIndex = 5; + this.labelNum.Text = "Количество"; + // + // buttonAdd + // + this.buttonAdd.Location = new System.Drawing.Point(194, 161); + this.buttonAdd.Name = "buttonAdd"; + this.buttonAdd.Size = new System.Drawing.Size(99, 29); + this.buttonAdd.TabIndex = 6; + this.buttonAdd.Text = "Пополнить"; + this.buttonAdd.UseVisualStyleBackColor = true; + this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click); + // + // buttonCancel + // + this.buttonCancel.Location = new System.Drawing.Point(330, 161); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(99, 29); + this.buttonCancel.TabIndex = 7; + this.buttonCancel.Text = "Отмена"; + this.buttonCancel.UseVisualStyleBackColor = true; + this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); + // + // textBoxCount + // + this.textBoxCount.Location = new System.Drawing.Point(133, 103); + this.textBoxCount.Name = "textBoxCount"; + this.textBoxCount.Size = new System.Drawing.Size(160, 23); + this.textBoxCount.TabIndex = 8; + // + // FormReplenishmentShop + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(479, 214); + this.Controls.Add(this.textBoxCount); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonAdd); + this.Controls.Add(this.labelNum); + this.Controls.Add(this.labelFurniture); + this.Controls.Add(this.comboBoxFurniture); + this.Controls.Add(this.labelShop); + this.Controls.Add(this.comboBoxShop); + this.Name = "FormReplenishmentShop"; + this.Text = "Пополнение магазина"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ComboBox comboBoxShop; + private Label labelShop; + private ComboBox comboBoxFurniture; + private Label labelFurniture; + private Label labelNum; + private Button buttonAdd; + private Button buttonCancel; + private TextBox textBoxCount; + } +} \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.cs b/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.cs new file mode 100644 index 0000000..4ae0fb4 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.cs @@ -0,0 +1,142 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.BusinessLogicsContarcts; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace FurnitureAssembly +{ + public partial class FormReplenishmentShop : Form + { + + private readonly List? _listShops; + private readonly List? _listFurnitures; + + public int Id + { + get + { + return Convert.ToInt32(comboBoxShop.SelectedValue); + } + set + { + comboBoxShop.SelectedValue = value; + } + } + public IShopModel? ShopModel + { + get + { + if (_listShops == null) + { + return null; + } + foreach (var elem in _listShops) + { + if (elem.Id == Id) + { + return elem; + } + } + return null; + } + } + + public int FurnitureId + { + get + { + return Convert.ToInt32(comboBoxFurniture.SelectedValue); + } + set + { + comboBoxFurniture.SelectedValue = value; + } + } + public IFurnitureModel? FurnitureModel + { + get + { + if (_listFurnitures == null) + { + return null; + } + foreach (var elem in _listFurnitures) + { + if (elem.Id == Id) + { + return elem; + } + } + return null; + } + } + + public int Count + { + get { return Convert.ToInt32(textBoxCount.Text); } + set + { textBoxCount.Text = value.ToString(); } + } + public FormReplenishmentShop(IShopLogic shopLogic, IFurnitureLogic furnitureLogic) + { + InitializeComponent(); + _listShops = shopLogic.ReadList(null); + _listFurnitures = furnitureLogic.ReadList(null); + if (_listShops != null) + { + comboBoxShop.DisplayMember = "ShopName"; + comboBoxShop.ValueMember = "Id"; + comboBoxShop.DataSource = _listShops; + comboBoxShop.SelectedItem = null; + } + if (_listFurnitures != null) + { + comboBoxFurniture.DisplayMember = "FurnitureName"; + comboBoxFurniture.ValueMember = "Id"; + comboBoxFurniture.DataSource = _listFurnitures; + comboBoxFurniture.SelectedItem = null; + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + + private void buttonAdd_Click(object sender, EventArgs e) + { + if (comboBoxShop.SelectedValue == null) + { + MessageBox.Show("Выберите магазин", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (comboBoxFurniture.SelectedValue == null) + { + MessageBox.Show("Выберите изделие", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (string.IsNullOrEmpty(textBoxCount.Text)) + { + MessageBox.Show("Укажите количество поступившего изделия", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + DialogResult = DialogResult.OK; + Close(); + } + } +} diff --git a/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.resx b/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/FurnitureAssembly/FurnitureAssembly/FormReplenishmentShop.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs b/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs index 59820d1..d7dc3a8 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.Designer.cs @@ -36,6 +36,11 @@ this.dateTimePicker = new System.Windows.Forms.DateTimePicker(); this.ButtonSave = new System.Windows.Forms.Button(); this.ButtonCancel = new System.Windows.Forms.Button(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.FurnitureId = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.FurnitureName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Count = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); this.SuspendLayout(); // // labelShopName @@ -88,7 +93,7 @@ // // ButtonSave // - this.ButtonSave.Location = new System.Drawing.Point(230, 169); + this.ButtonSave.Location = new System.Drawing.Point(382, 490); this.ButtonSave.Name = "ButtonSave"; this.ButtonSave.Size = new System.Drawing.Size(99, 28); this.ButtonSave.TabIndex = 7; @@ -98,7 +103,7 @@ // // ButtonCancel // - this.ButtonCancel.Location = new System.Drawing.Point(351, 169); + this.ButtonCancel.Location = new System.Drawing.Point(509, 490); this.ButtonCancel.Name = "ButtonCancel"; this.ButtonCancel.Size = new System.Drawing.Size(99, 28); this.ButtonCancel.TabIndex = 8; @@ -106,11 +111,41 @@ this.ButtonCancel.UseVisualStyleBackColor = true; this.ButtonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.FurnitureId, + this.FurnitureName, + this.Count}); + this.dataGridView1.Location = new System.Drawing.Point(37, 177); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 25; + this.dataGridView1.Size = new System.Drawing.Size(571, 289); + this.dataGridView1.TabIndex = 9; + // + // FurnitureId + // + this.FurnitureId.HeaderText = "Id"; + this.FurnitureId.Name = "FurnitureId"; + this.FurnitureId.Visible = false; + // + // FurnitureName + // + this.FurnitureName.HeaderText = "Название"; + this.FurnitureName.Name = "FurnitureName"; + // + // Count + // + this.Count.HeaderText = "Количество"; + this.Count.Name = "Count"; + // // FormShop // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(498, 209); + this.ClientSize = new System.Drawing.Size(631, 530); + this.Controls.Add(this.dataGridView1); this.Controls.Add(this.ButtonCancel); this.Controls.Add(this.ButtonSave); this.Controls.Add(this.dateTimePicker); @@ -122,6 +157,7 @@ this.Name = "FormShop"; this.Text = "Магазин"; this.Load += new System.EventHandler(this.FormShop_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -137,5 +173,9 @@ private DateTimePicker dateTimePicker; private Button ButtonSave; private Button ButtonCancel; + private DataGridView dataGridView1; + private DataGridViewTextBoxColumn FurnitureId; + private DataGridViewTextBoxColumn FurnitureName; + private DataGridViewTextBoxColumn Count; } } \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssembly/FormShop.cs b/FurnitureAssembly/FurnitureAssembly/FormShop.cs index 7e388a8..b49158b 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormShop.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.cs @@ -1,6 +1,7 @@ using FurnitureAssemblyContracts.BindingModels; using FurnitureAssemblyContracts.BusinessLogicsContarcts; using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyDataModels.Models; using Microsoft.Extensions.Logging; namespace FurnitureAssembly @@ -9,6 +10,7 @@ namespace FurnitureAssembly { private readonly ILogger _logger; private readonly IShopLogic _logic; + private Dictionary _shopFurnitures; private int? _id; public int Id { set { _id = value; } } @@ -17,6 +19,7 @@ namespace FurnitureAssembly InitializeComponent(); _logger = logger; _logic = logic; + _shopFurnitures = new Dictionary(); } @@ -91,6 +94,10 @@ namespace FurnitureAssembly textBoxName.Text = view.ShopName; textBoxAddress.Text = view.Address.ToString(); dateTimePicker.Value = view.DateOpening; + _shopFurnitures = view.Furnitures ?? new + Dictionary(); + dta + LoadData(); } } catch (Exception ex) @@ -101,5 +108,28 @@ namespace FurnitureAssembly } } } + + private void LoadData() + { + _logger.LogInformation("Загрузка компонент изделия"); + try + { + if (_shopFurnitures != null) + { + dataGridView1.Rows.Clear(); + foreach (var pc in _shopFurnitures) + { + dataGridView1.Rows.Add(new object[] { pc.Key, pc.Value.Item1.FurnitureName, pc.Value.Item2 }); + } + + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки компонент изделия"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } } } diff --git a/FurnitureAssembly/FurnitureAssembly/FormShop.resx b/FurnitureAssembly/FurnitureAssembly/FormShop.resx index f298a7b..565a3a5 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormShop.resx +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.resx @@ -57,4 +57,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs b/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs index f9bfdce..ee13c0d 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormShops.Designer.cs @@ -96,7 +96,7 @@ this.Controls.Add(this.ButtonAdd); this.Controls.Add(this.dataGridView); this.Name = "FormShops"; - this.Text = "FormShops"; + this.Text = "Магазины"; this.Load += new System.EventHandler(this.FormShops_Load); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); this.ResumeLayout(false); diff --git a/FurnitureAssembly/FurnitureAssembly/Program.cs b/FurnitureAssembly/FurnitureAssembly/Program.cs index 2cc7ecb..2209e02 100644 --- a/FurnitureAssembly/FurnitureAssembly/Program.cs +++ b/FurnitureAssembly/FurnitureAssembly/Program.cs @@ -38,9 +38,11 @@ namespace FurnitureAssembly services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -48,6 +50,9 @@ namespace FurnitureAssembly services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); } } } \ No newline at end of file diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs index 8e96c90..780811a 100644 --- a/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs @@ -48,6 +48,22 @@ namespace FurnitureAssemblyListImplement.Models DateOpening = model.DateOpening; Furnitures = model.Furnitures; } + + public void AddFurniture(ShopBindingModel? model, FurnitureBindingModel furniture, int count) + { + if (model == null) + { + return; + } + if (Furnitures.ContainsKey(furniture.Id)) + { + int prev_count = Furnitures[furniture.Id].Item2; + Furnitures[furniture.Id] = (furniture, prev_count + count); + } else + { + Furnitures[furniture.Id] = (furniture, count); + } + } public ShopViewModel GetViewModel => new() { Id = Id, -- 2.25.1 From a6c28cd37ec812468639d7d7a834bfc81dcb9ad1 Mon Sep 17 00:00:00 2001 From: pgirl111 Date: Mon, 13 Feb 2023 10:37:45 +0400 Subject: [PATCH 5/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20(=D0=BD=D0=BE=20=D0=BD=D1=83=D0=B6?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8=D1=82?= =?UTF-8?q?=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FurnitureAssembly/FormMain.cs | 10 ++----- .../FurnitureAssembly/FormShop.cs | 1 - .../ShopLogic.cs | 28 ++++++++++++++++--- .../StoragesContracts/IShopStorage.cs | 3 +- .../Implements/ShopStorage.cs | 13 --------- .../Models/Shop.cs | 17 +---------- 6 files changed, 28 insertions(+), 44 deletions(-) diff --git a/FurnitureAssembly/FurnitureAssembly/FormMain.cs b/FurnitureAssembly/FurnitureAssembly/FormMain.cs index cc422a4..09e1bb0 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormMain.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormMain.cs @@ -195,18 +195,12 @@ namespace FurnitureAssembly var modelShop = new ShopBindingModel { - Id = form.Id, - ShopName = form.ShopModel.ShopName, - Address = form.ShopModel.Address, - DateOpening = form.ShopModel.DateOpening, + Id = form.Id }; var modelFurn = new FurnitureBindingModel { - Id = form.FurnitureId, - FurnitureName = form.FurnitureModel.FurnitureName, - Price = form.FurnitureModel.Price, - FurnitureComponents = form.FurnitureModel.FurnitureComponents + Id = form.FurnitureId }; var operationResult = _shopLogic.AddFurniture(modelShop, modelFurn, form.Count); diff --git a/FurnitureAssembly/FurnitureAssembly/FormShop.cs b/FurnitureAssembly/FurnitureAssembly/FormShop.cs index b49158b..5063508 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormShop.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormShop.cs @@ -96,7 +96,6 @@ namespace FurnitureAssembly dateTimePicker.Value = view.DateOpening; _shopFurnitures = view.Furnitures ?? new Dictionary(); - dta LoadData(); } } diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs index 544b405..41094d8 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/ShopLogic.cs @@ -16,11 +16,13 @@ namespace FurnitureAssemblyBusinessLogic { private readonly ILogger _logger; private readonly IShopStorage _shopStorage; + private readonly IFurnitureStorage _furnitureStorage; - public ShopLogic(ILogger logger, IShopStorage shopStorage) + public ShopLogic(ILogger logger, IShopStorage shopStorage, IFurnitureStorage furnitureStorage) { _logger = logger; _shopStorage = shopStorage; + _furnitureStorage = furnitureStorage; } public ShopViewModel? ReadElement(ShopSearchModel model) { @@ -117,9 +119,27 @@ namespace FurnitureAssemblyBusinessLogic public bool AddFurniture(ShopBindingModel model, FurnitureBindingModel furnitureModel, int count) { - CheckModel(model); - - if (_shopStorage.AddFurniture(model, furnitureModel, count) == null) + var shop = _shopStorage.GetElement(new ShopSearchModel { Id = model.Id }); + var furniture = _furnitureStorage.GetElement(new FurnitureSearchModel { Id = furnitureModel.Id }); + + if (shop == null || furniture == null) + { + return false; + } + if (shop.Furnitures.ContainsKey(furniture.Id)) + { + int prev_count = shop.Furnitures[furniture.Id].Item2; + shop.Furnitures[furniture.Id] = (furniture, prev_count + count); + } + else + { + shop.Furnitures[furniture.Id] = (furniture, count); + } + model.Furnitures = shop.Furnitures; + model.DateOpening = shop.DateOpening; + model.Address = shop.Address; + model.ShopName = shop.ShopName; + if (_shopStorage.Update(model) == null) { _logger.LogWarning("Replenishment operation failed"); return false; diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs b/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs index a72939f..cc4fa6a 100644 --- a/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs +++ b/FurnitureAssembly/FurnitureAssemblyContracts/StoragesContracts/IShopStorage.cs @@ -12,7 +12,6 @@ namespace FurnitureAssemblyContracts.StoragesContracts ShopViewModel? GetElement(ShopSearchModel model); ShopViewModel? Insert(ShopBindingModel model); ShopViewModel? Update(ShopBindingModel model); - ShopViewModel? Delete(ShopBindingModel model); - ShopViewModel? AddFurniture(ShopBindingModel model, FurnitureBindingModel furniture, int count); + ShopViewModel? Delete(ShopBindingModel model); } } diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs index 3b1731a..65e0e2b 100644 --- a/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/Implements/ShopStorage.cs @@ -109,18 +109,5 @@ namespace FurnitureAssemblyListImplement.Implements } return null; } - - public ShopViewModel? AddFurniture(ShopBindingModel model, FurnitureBindingModel furniture, int count) - { - foreach (var shop in _source.Shops) - { - if (shop.Id == model.Id) - { - shop.AddFurniture(model, furniture, count); - return shop.GetViewModel; - } - } - return null; - } } } diff --git a/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs b/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs index 780811a..4b64a67 100644 --- a/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs +++ b/FurnitureAssembly/FurnitureAssemblyListImplement/Models/Shop.cs @@ -48,22 +48,7 @@ namespace FurnitureAssemblyListImplement.Models DateOpening = model.DateOpening; Furnitures = model.Furnitures; } - - public void AddFurniture(ShopBindingModel? model, FurnitureBindingModel furniture, int count) - { - if (model == null) - { - return; - } - if (Furnitures.ContainsKey(furniture.Id)) - { - int prev_count = Furnitures[furniture.Id].Item2; - Furnitures[furniture.Id] = (furniture, prev_count + count); - } else - { - Furnitures[furniture.Id] = (furniture, count); - } - } + public ShopViewModel GetViewModel => new() { Id = Id, -- 2.25.1 From f1b88f6ca1282b06b864d86a701bd9182ff93111 Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Tue, 28 Feb 2023 18:52:20 +0400 Subject: [PATCH 6/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5:=20=D1=81=D1=82=D0=BE=D0=BB=D0=B1?= =?UTF-8?q?=D0=B5=D1=86=20=D1=81=20=D0=B8=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D1=8F=D0=BC=D0=B8=20=D0=BD=D0=B5=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FurnitureAssembly/FurnitureAssembly/FormShops.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/FurnitureAssembly/FurnitureAssembly/FormShops.cs b/FurnitureAssembly/FurnitureAssembly/FormShops.cs index 7f75bd5..65487cc 100644 --- a/FurnitureAssembly/FurnitureAssembly/FormShops.cs +++ b/FurnitureAssembly/FurnitureAssembly/FormShops.cs @@ -44,6 +44,7 @@ namespace FurnitureAssembly dataGridView.DataSource = list; dataGridView.Columns["Id"].Visible = false; dataGridView.Columns["ShopName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + dataGridView.Columns["Furnitures"].Visible = false; } _logger.LogInformation("Загрузка магазинов"); } -- 2.25.1