From 34ada3ab9829015e4d63ed09ae42866e229da2b0 Mon Sep 17 00:00:00 2001 From: dex_moth Date: Tue, 30 Apr 2024 15:57:30 +0400 Subject: [PATCH] =?UTF-8?q?vendor=20=D1=8F=20=D0=BD=D0=B0=D0=BF=D0=B8?= =?UTF-8?q?=D1=88=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/ProductViewModel.cs | 4 +- .../ComputerHardwareStoreDBContext.cs | 3 ++ .../Models/Build.cs | 22 ++++++++ .../Models/Component.cs | 11 ++-- .../Models/Order.cs | 11 ++-- .../Models/Product.cs | 3 +- .../Models/StoreKeeper.cs | 52 +++++++++++++++++++ 7 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Build.cs create mode 100644 ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/StoreKeeper.cs diff --git a/ComputerHardwareStore/ComputerHardwareStoreContracts/ViewModels/ProductViewModel.cs b/ComputerHardwareStore/ComputerHardwareStoreContracts/ViewModels/ProductViewModel.cs index 00cc4c2..c1ba122 100644 --- a/ComputerHardwareStore/ComputerHardwareStoreContracts/ViewModels/ProductViewModel.cs +++ b/ComputerHardwareStore/ComputerHardwareStoreContracts/ViewModels/ProductViewModel.cs @@ -10,8 +10,6 @@ namespace ComputerHardwareStoreContracts.ViewModels public string Name { get; set; } = string.Empty; [DisplayName("Цена")] public double Price { get; set; } - public Dictionary CannedComponents { get; set; } = new(); - - public Dictionary ProductComponents => throw new NotImplementedException(); + public Dictionary ProductComponents { get; set; } = new(); } } diff --git a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/ComputerHardwareStoreDBContext.cs b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/ComputerHardwareStoreDBContext.cs index 850515c..958078f 100644 --- a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/ComputerHardwareStoreDBContext.cs +++ b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/ComputerHardwareStoreDBContext.cs @@ -32,5 +32,8 @@ namespace ComputerHardwareStoreDatabaseImplement public virtual DbSet Products { set; get; } public virtual DbSet ProductComponents { set; get; } public virtual DbSet OrderProducts { set; get; } + + public virtual DbSet StoreKeepers { set; get; } + public virtual DbSet Builds { set; get; } } } diff --git a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Build.cs b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Build.cs new file mode 100644 index 0000000..4d650c3 --- /dev/null +++ b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Build.cs @@ -0,0 +1,22 @@ + +using ComputerHardwareStoreDataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace ComputerHardwareStoreDatabaseImplement.Models +{ + public class Build : IBuildModel + { + public int Id { get; private set; } + [Required] + public string Name { get; private set; } = string.Empty; + [Required] + public double Price { get; set; } + [Required] + public int VendorId { get; private set; } + public virtual Vendor Vendor { get; private set; } = new(); + + [ForeignKey("BuildId")] + public Dictionary BuildComponents => throw new NotImplementedException(); + } +} diff --git a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Component.cs b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Component.cs index 1a15d7e..3089400 100644 --- a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Component.cs +++ b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Component.cs @@ -13,9 +13,13 @@ namespace ComputerHardwareStoreDatabaseImplement.Models public string Name { get; private set; } = string.Empty; [Required] public double Cost { get; set; } + [Required] + public int StoreKeeperId { get; private set; } + public virtual StoreKeeper? StoreKeeper { get; set; } + [ForeignKey("ComponentId")] public virtual List ProductComponents { get; set; } = new(); - public static Component? Create(ComponentBindingModel model) + public static Component? Create(ComputerHardwareStoreDBContext context, ComponentBindingModel model) { if (model == null) { @@ -25,7 +29,8 @@ namespace ComputerHardwareStoreDatabaseImplement.Models { Id = model.Id, Name = model.Name, - Cost = model.Cost + Cost = model.Cost, + StoreKeeper = context.StoreKeepers.First(x => x.Id == model.StoreKeeperId) }; } public void Update (ComponentBindingModel model) @@ -44,7 +49,5 @@ namespace ComputerHardwareStoreDatabaseImplement.Models Name = Name, Cost = Cost }; - - public int StoreKeeperId => throw new NotImplementedException(); } } diff --git a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Order.cs b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Order.cs index 1754b65..ffb8b5e 100644 --- a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Order.cs +++ b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Order.cs @@ -51,14 +51,7 @@ namespace ComputerHardwareStoreDatabaseImplement.Models Status = model.Status, DateCreate = model.DateCreate, DateImplement = model.DateImplement, - Products = model.OrderProducts - .Select(op => new OrderProduct() - { - OrderId = model.Id, - ProductId = op.Key, - Count = op.Value.Item2 - }) - .ToList() + Product = context.Products.First(x => x.Id == model.ProductId) }; } public void Update(OrderBindingModel model) @@ -78,5 +71,7 @@ namespace ComputerHardwareStoreDatabaseImplement.Models DateCreate = DateCreate, DateImplement = DateImplement, }; + + public Dictionary OrderProduct => throw new NotImplementedException(); } } \ No newline at end of file diff --git a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Product.cs b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Product.cs index 0d67d07..a7af49c 100644 --- a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Product.cs +++ b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/Product.cs @@ -23,8 +23,7 @@ namespace ComputerHardwareStoreDatabaseImplement.Models if (_productComponents == null) { _productComponents = Components - .ToDictionary(c => c.ComponentId, c => - (c.Component as IComponentModel, c.Count)); + .ToDictionary(c => c.ComponentId, c => (c.Component as IComponentModel, c.Count)); } return _productComponents; } diff --git a/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/StoreKeeper.cs b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/StoreKeeper.cs new file mode 100644 index 0000000..1c2028d --- /dev/null +++ b/ComputerHardwareStore/ComputerHardwareStoreDatabaseImplement/Models/StoreKeeper.cs @@ -0,0 +1,52 @@ +using ComputerHardwareStoreContracts.BindingModels; +using ComputerHardwareStoreContracts.ViewModels; +using ComputerHardwareStoreDataModels.Models; +using System.ComponentModel.DataAnnotations; + +namespace ComputerHardwareStoreDatabaseImplement.Models +{ + public class StoreKeeper : IStoreKeeperModel + { + public int Id { get; private set; } + [Required] + public string Name { get; private set; } = string.Empty; + [Required] + + public string Login { get; private set; } = string.Empty; + [Required] + + public string Password { get; private set; } = string.Empty; + + public static StoreKeeper? Create(ComputerHardwareStoreDBContext context, StoreKeeperBindingModel model) + { + if (model == null) + { + return null; + } + return new StoreKeeper() + { + Id = model.Id, + Name = model.Name, + Login = model.Login, + Password = model.Password, + }; + } + public void Update(StoreKeeperBindingModel model) + { + if (model == null) + { + return; + } + Name = string.IsNullOrEmpty(model.Name) ? Name : model.Name; + Password = string.IsNullOrEmpty(model.Password) ? Password : model.Password; + } + + public StoreKeeperViewModel GetViewModel => new() + { + Id = Id, + Name = Name, + Login = Login, + Password = Password + }; + } +}