diff --git a/ConfectionaryBusinessLogic/ShopLogic.cs b/ConfectionaryBusinessLogic/ShopLogic.cs index 36d618a..d127dfa 100644 --- a/ConfectionaryBusinessLogic/ShopLogic.cs +++ b/ConfectionaryBusinessLogic/ShopLogic.cs @@ -133,6 +133,12 @@ namespace ConfectioneryBusinessLogic } _logger.LogInformation("AddPastryInShop find. Id:{Id}", element.Id); + if (element.MaxCountPastries < 0) + { + throw new ArgumentException( + "Максимальное количество изделий в магазине не должно быть отрицательным", + nameof(element.MaxCountPastries)); + } if (element.Pastries.TryGetValue(pastry.Id, out var pair)) { diff --git a/ConfectionaryFileImplement/Pastry.cs b/ConfectionaryFileImplement/Pastry.cs index f32067c..6138c0c 100644 --- a/ConfectionaryFileImplement/Pastry.cs +++ b/ConfectionaryFileImplement/Pastry.cs @@ -1,7 +1,6 @@ using ConfectioneryContracts.BindingModels; using ConfectioneryContracts.ViewModels; using ConfectioneryDataModels.Models; -using ConfectioneryDataModels.Models; using System.Xml.Linq; namespace ConfectioneryFileImplement.Models diff --git a/ConfectionaryFileImplement/Shop.cs b/ConfectionaryFileImplement/Shop.cs index 39f14be..fadd63f 100644 --- a/ConfectionaryFileImplement/Shop.cs +++ b/ConfectionaryFileImplement/Shop.cs @@ -12,6 +12,8 @@ namespace ConfectioneryFileImplement public string Address { get; private set; } = string.Empty; + public int MaxCountPastries { get; private set; } + public DateTime DateOpening { get; private set; } public Dictionary CountPastries { get; private set; } = new(); @@ -46,6 +48,7 @@ namespace ConfectioneryFileImplement Name = model.Name, Address = model.Address, DateOpening = model.DateOpening, + MaxCountPastries = model.MaxCountPastries, CountPastries = new() }; } @@ -57,11 +60,12 @@ namespace ConfectioneryFileImplement } return new() { - Id = Convert.ToInt32(element.Attribute("Id")!.Value), - Name = element.Element("Name")!.Value, - Address = element.Element("Address")!.Value, - DateOpening = Convert.ToDateTime(element.Element("DateOpening")!.Value), - CountPastries = element.Element("CountPastries")!.Elements("CountPastry") + Id = Convert.ToInt32(element.Attribute("Id")!.Value), + Name = element.Element("Name")!.Value, + Address = element.Element("Address")!.Value, + DateOpening = Convert.ToDateTime(element.Element("DateOpening")!.Value), + MaxCountPastries = Convert.ToInt32(element.Element("MaxCountPastries")!.Value), + CountPastries = element.Element("CountPastries")!.Elements("CountPastry") .ToDictionary( x => Convert.ToInt32(x.Element("Key")?.Value), x => Convert.ToInt32(x.Element("Value")?.Value) @@ -77,6 +81,7 @@ namespace ConfectioneryFileImplement Name = model.Name; Address = model.Address; DateOpening = model.DateOpening; + MaxCountPastries = model.MaxCountPastries; CountPastries = model.Pastries.ToDictionary(x => x.Key, x => x.Value.Item2); _cachedPastries = null; } @@ -87,12 +92,14 @@ namespace ConfectioneryFileImplement Address = Address, Pastries = Pastries, DateOpening = DateOpening, + MaxCountPastries = MaxCountPastries, }; public XElement GetXElement => new("Order", new XAttribute("Id", Id), new XElement("Name", Name), new XElement("Address", Address), new XElement("DateOpening", DateOpening), + new XElement("MaxCountPastries", MaxCountPastries), new XElement("CountPastries", CountPastries .Select(x => new XElement("CountPastry", new XElement("Key", x.Key), diff --git a/ConfectionaryListImplement/Shop.cs b/ConfectionaryListImplement/Shop.cs index 93e754c..42b553d 100644 --- a/ConfectionaryListImplement/Shop.cs +++ b/ConfectionaryListImplement/Shop.cs @@ -11,6 +11,8 @@ namespace ConfectioneryListImplement public string Address { get; private set; } = string.Empty; + public int MaxCountPastries { get; private set; } + public DateTime DateOpening { get; private set; } public Dictionary Pastries @@ -33,6 +35,7 @@ namespace ConfectioneryListImplement Name = model.Name, Address = model.Address, DateOpening = model.DateOpening, + MaxCountPastries = model.MaxCountPastries, Pastries = new() }; } @@ -45,6 +48,7 @@ namespace ConfectioneryListImplement Name = model.Name; Address = model.Address; DateOpening = model.DateOpening; + MaxCountPastries = model.MaxCountPastries; Pastries = model.Pastries; } public ShopViewModel GetViewModel => new() @@ -54,6 +58,7 @@ namespace ConfectioneryListImplement Address = Address, Pastries = Pastries, DateOpening = DateOpening, + MaxCountPastries = MaxCountPastries, }; } } diff --git a/ConfectioneryContracts/BindingModels/ShopBindingModel.cs b/ConfectioneryContracts/BindingModels/ShopBindingModel.cs index 38d8750..f627224 100644 --- a/ConfectioneryContracts/BindingModels/ShopBindingModel.cs +++ b/ConfectioneryContracts/BindingModels/ShopBindingModel.cs @@ -9,6 +9,8 @@ namespace ConfectioneryContracts.BindingModels public string Address { get; set; } = string.Empty; + public int MaxCountPastries { get; set; } + public DateTime DateOpening { get; set; } = DateTime.Now; public Dictionary Pastries diff --git a/ConfectioneryContracts/ViewModels/ShopViewModel.cs b/ConfectioneryContracts/ViewModels/ShopViewModel.cs index a87ca8d..f7fce9b 100644 --- a/ConfectioneryContracts/ViewModels/ShopViewModel.cs +++ b/ConfectioneryContracts/ViewModels/ShopViewModel.cs @@ -12,6 +12,9 @@ namespace ConfectioneryContracts.ViewModels [DisplayName("Адрес магазина")] public string Address { get; set; } = string.Empty; + [DisplayName("Максимальное количество изделий в магазине")] + public int MaxCountPastries { get; set; } + [DisplayName("Время открытия")] public DateTime DateOpening { get; set; } = DateTime.Now; @@ -22,5 +25,6 @@ namespace ConfectioneryContracts.ViewModels } = new(); public int Id { get; set; } + } } diff --git a/ConfectioneryDataModels/IShopModel.cs b/ConfectioneryDataModels/IShopModel.cs index c0883e9..31936ea 100644 --- a/ConfectioneryDataModels/IShopModel.cs +++ b/ConfectioneryDataModels/IShopModel.cs @@ -6,6 +6,7 @@ namespace ConfectioneryDataModels { string Name { get; } string Address { get; } + int MaxCountPastries { get; } DateTime DateOpening { get; } Dictionary Pastries { get; } }