From 72ff843aff403c01cbc03300b3cf1e23584dfd20 Mon Sep 17 00:00:00 2001 From: ujijrujijr Date: Thu, 25 Apr 2024 17:44:09 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BindingModels/RequestBindingModel.cs | 2 +- .../ViewModels/RequestViewModel.cs | 2 +- ComputerShopDataModels/Models/IRequestModel.cs | 2 +- ComputerShopDatabaseImplement/Models/Order.cs | 13 ++++++++++--- ComputerShopDatabaseImplement/Models/Request.cs | 12 +++++++++--- ComputerShopDatabaseImplement/Models/Shipment.cs | 9 +++------ 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ComputerShopContracts/BindingModels/RequestBindingModel.cs b/ComputerShopContracts/BindingModels/RequestBindingModel.cs index 6eb6316..fe1af9e 100644 --- a/ComputerShopContracts/BindingModels/RequestBindingModel.cs +++ b/ComputerShopContracts/BindingModels/RequestBindingModel.cs @@ -13,7 +13,7 @@ namespace ComputerShopContracts.BindingModels public int UserId { get; set; } - public int AssemblyId { get; set; } + public int? AssemblyId { get; set; } public DateTime DateMake { get; set; } = DateTime.Now; diff --git a/ComputerShopContracts/ViewModels/RequestViewModel.cs b/ComputerShopContracts/ViewModels/RequestViewModel.cs index f175318..1a3ca35 100644 --- a/ComputerShopContracts/ViewModels/RequestViewModel.cs +++ b/ComputerShopContracts/ViewModels/RequestViewModel.cs @@ -22,7 +22,7 @@ namespace ComputerShopContracts.ViewModels public string UserLogin { get; set; } = string.Empty; //id сборки - public int AssemblyId { get; set; } + public int? AssemblyId { get; set; } //!!!МБ НАДО БУДЕТ ПРИВЯЗЫВАТЬ НАЗВАНИЕ СБОРКИ И Т.Д. ДЛЯ ОТЧЁТОВ diff --git a/ComputerShopDataModels/Models/IRequestModel.cs b/ComputerShopDataModels/Models/IRequestModel.cs index 4c0dd4c..5b57b40 100644 --- a/ComputerShopDataModels/Models/IRequestModel.cs +++ b/ComputerShopDataModels/Models/IRequestModel.cs @@ -17,7 +17,7 @@ namespace ComputerShopDataModels.Models /// /// ID сборки /// - int AssemblyId { get; } + int? AssemblyId { get; } Dictionary RequestOrders { get; } diff --git a/ComputerShopDatabaseImplement/Models/Order.cs b/ComputerShopDatabaseImplement/Models/Order.cs index f9ba6c0..890407b 100644 --- a/ComputerShopDatabaseImplement/Models/Order.cs +++ b/ComputerShopDatabaseImplement/Models/Order.cs @@ -5,6 +5,7 @@ using ComputerShopDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -16,7 +17,6 @@ namespace ComputerShopDatabaseImplement.Models { public int Id { get; set; } - //!!!ТУТ МБ СДЕЛАТЬ КАК FOREIGN KEY [Required] public int UserId { get; private set; } @@ -32,13 +32,20 @@ namespace ComputerShopDatabaseImplement.Models //!!!мб не нужен public virtual User User { get; set; } + //!!!ПРОВЕРМТЬ, ЧТО ПАРВИЛЬНЫЕ ВНЕШНИЕ КЛЮЧИ + + [ForeignKey("OrderId")] + public virtual List RequestOrders { get; set; } = new(); + + [ForeignKey("OrderId")] + public virtual List ShipmentOrders { get; set; } = new(); + public static Order? Create(OrderBindingModel model) { if (model == null) { return null; } - using var context = new ComputerShopDatabase(); return new Order() { Id = model.Id, @@ -56,7 +63,7 @@ namespace ComputerShopDatabaseImplement.Models return; } using var context = new ComputerShopDatabase(); - //!!!МБ НАДО БУДЕТ ОБНОВЛЯТЬ ПОЛЬЗОВАТЕЛЯ, НО ОН ПО СУТИ НЕ ДОЛЖЕН ОБНОВЯЛТЬСЯ ПОСЛЕ СОЗДАНИЯ + //!!!МБ НАДО БУДЕТ ОБНОВЛЯТЬ ПОЛЬЗОВАТЕЛЯ, НО ОН ПО СУТИ НЕ ДОЛЖЕН ОБНОВЛЯТЬСЯ ПОСЛЕ СОЗДАНИЯ Status = model.Status; context.SaveChanges(); } diff --git a/ComputerShopDatabaseImplement/Models/Request.cs b/ComputerShopDatabaseImplement/Models/Request.cs index d55ea2b..64fd3ee 100644 --- a/ComputerShopDatabaseImplement/Models/Request.cs +++ b/ComputerShopDatabaseImplement/Models/Request.cs @@ -12,6 +12,7 @@ using System.Threading.Tasks; namespace ComputerShopDatabaseImplement.Models { //!!!ДОБАВИТЬ МЕТОД ПО ПРИВЯЗКЕ СБОРКИ + //!!!МБ У Id сделать private set у ВСЕХ МОИХ МОДЕЛЕЙ public class Request : IRequestModel { public int Id { get; set; } @@ -20,9 +21,11 @@ namespace ComputerShopDatabaseImplement.Models public virtual User User { get; set; } - public int AssemblyId { get; set; } + public int? AssemblyId { get; set; } + [Required] public DateTime DateMake { get; set; } + [Required] public string ClientFIO { get; set; } = string.Empty; @@ -36,14 +39,17 @@ namespace ComputerShopDatabaseImplement.Models if (_requestOrders == null) { //!!!ТУТ ПРОПИСАТЬ ЛОГИКУ (НЕ ЗНАЮ ПОКА, КАК) - + if (_requestOrders == null) + { + _requestOrders = Orders.ToDictionary(x => x.OrderId, x => (x.Order as IOrderModel)); + } } return _requestOrders; } } - [ForeignKey("OrderId")] + [ForeignKey("RequestId")] public virtual List Orders { get; set; } = new(); public static Request Create(ComputerShopDatabase context, RequestBindingModel model) diff --git a/ComputerShopDatabaseImplement/Models/Shipment.cs b/ComputerShopDatabaseImplement/Models/Shipment.cs index b7113e5..7f48b95 100644 --- a/ComputerShopDatabaseImplement/Models/Shipment.cs +++ b/ComputerShopDatabaseImplement/Models/Shipment.cs @@ -16,7 +16,6 @@ namespace ComputerShopDatabaseImplement.Models { public int Id { get; set; } - //!!!ТУТ МБ СДЕЛАТЬ КАК FOREIGN KEY [Required] public int UserId { get; private set; } @@ -42,17 +41,16 @@ namespace ComputerShopDatabaseImplement.Models if (_shipmentOrders == null) { //!!!ТУТ ПРОПИСАТЬ ЛОГИКУ (НЕ ЗНАЮ ПОКА, КАК) - - + _shipmentOrders = Orders.ToDictionary(x => x.OrderId, x => (x.Order as IOrderModel)); } return _shipmentOrders; } } //!!!ПРОВЕРИТЬ, ЧТО ТУТ ПРАВИЛЬНО СДЕЛАНО (ЧТО НАЗВАНИЕ ПРАВИЛЬНОЕ У ВНЕШ. КЛЮЧА, ЧТО ПРАВИЛЬНЫЙ ТИП в <>) - [ForeignKey("OrderId")] + [ForeignKey("ShipmentId")] public virtual List Orders { get; set; } = new(); - //!!!МБ ТУТ НАДО БУДЕТ ПРИСВАИВАТЬ ORDERS (но вряд ли, потому что по заданию заказы привязываются отдельно) + //!!!ПРОВЕРИТЬ, ЧТО ПРАВИЛЬНО ПРИСВАИВАЮ ЗНАЧЕНИЕ СПИСКУ ЗАКАЗОВ public static Shipment Create(ComputerShopDatabase context, ShipmentBindingModel model) { @@ -96,7 +94,6 @@ namespace ComputerShopDatabaseImplement.Models //удаление тех заказов, которых нет в модели if (shipmentOrders != null && shipmentOrders.Count > 0) { - //!!!ТУТ МБ НЕ x.OrderId, а x.ShipmentId, но не факт (вряд ли) context.ShipmentOrders.RemoveRange(shipmentOrders.Where(x => !model.ShipmentOrders.ContainsKey(x.OrderId))); context.SaveChanges();