diff --git a/ComputerStore/ComputerStore.csproj b/ComputerStore/ComputerStore.csproj
index c78c9c7..b28bc68 100644
--- a/ComputerStore/ComputerStore.csproj
+++ b/ComputerStore/ComputerStore.csproj
@@ -6,4 +6,15 @@
enable
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
diff --git a/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs b/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs
index e6c737b..26748da 100644
--- a/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs
+++ b/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs
@@ -37,7 +37,7 @@ namespace ComputerStoreBusinessLogic.BusinessLogic
{
PCName = pc.Name,
Components = new List<(string Component, int count)>(),
- Request = requests.Where(x => x.RequestProduct.First(y => y.ID == pc.ID)).Select(x => x.ID)
+ //Request = requests.Where(x => x.RequestProduct.First(y => y.ID == pc.ID)).Select(x => x.ID)
};
@@ -69,7 +69,7 @@ namespace ComputerStoreBusinessLogic.BusinessLogic
foreach (var consignment in consignments)
{
- record.Consignments.Add(consignment.ConsignmentProducts.FirstOrDefault(x => x.ID == product.ID).Select(x => x.ID));
+ //record.Consignments.Add(consignment.ConsignmentProducts.FirstOrDefault(x => x.ID == product.ID).Select(x => x.ID));
}
foreach (var component in product.ProductComponents)
diff --git a/ComputerStoreBusinessLogic/BusinessLogic/RequestLogic.cs b/ComputerStoreBusinessLogic/BusinessLogic/RequestLogic.cs
index 2921fba..c0ce395 100644
--- a/ComputerStoreBusinessLogic/BusinessLogic/RequestLogic.cs
+++ b/ComputerStoreBusinessLogic/BusinessLogic/RequestLogic.cs
@@ -98,7 +98,6 @@ namespace ComputerStoreBusinessLogic.BusinessLogic
if (!withParams) { return; }
if (model.Price <= 0) { throw new ArgumentNullException("Invalid request's price", nameof(model)); }
if (string.IsNullOrEmpty(model.OrderID.ToString())) { throw new ArgumentNullException("Invalid Request's order ID", nameof(model)); }
- if (string.IsNullOrEmpty(model.PCID.ToString())) { throw new ArgumentNullException("Invalid Request's PC ID", nameof(model)); }
_logger.LogInformation("Request. Request ID:{ ID}. Order ID: { OrderID}. PC ID: { PCID}", model.ID, model.OrderID, model.PCID);
}
diff --git a/ComputerStoreContracts/BindingModels/OrderBindingModel.cs b/ComputerStoreContracts/BindingModels/OrderBindingModel.cs
index c70da7e..125a093 100644
--- a/ComputerStoreContracts/BindingModels/OrderBindingModel.cs
+++ b/ComputerStoreContracts/BindingModels/OrderBindingModel.cs
@@ -12,8 +12,8 @@ namespace ComputerStoreContracts.BindingModels
{
public int ID { get; set; }
public double Price { get; set; }
- public List OrderConsignments { get; set; } = new();
- public List OrderRequests { get; set; } = new();
+ public List? OrderConsignments { get; set; } = new();
+ public List? OrderRequests { get; set; } = new();
public OrderStatus Status { get; set; } = OrderStatus.Unknown;
public DateTime DateCreate { get; set; } = DateTime.Now;
public DateTime? DateImplement { get; set; }
diff --git a/ComputerStoreContracts/BindingModels/RequestBindingModel.cs b/ComputerStoreContracts/BindingModels/RequestBindingModel.cs
index aab609c..48e243e 100644
--- a/ComputerStoreContracts/BindingModels/RequestBindingModel.cs
+++ b/ComputerStoreContracts/BindingModels/RequestBindingModel.cs
@@ -12,6 +12,6 @@ namespace ComputerStoreContracts.BindingModels
public int ID { get; set; }
public int OrderID { get; set; }
public double Price { get; set; }
- public int PCID { get; set; }
+ public int? PCID { get; set; }
}
}
diff --git a/ComputerStoreContracts/BusinessLogicContracts/ISellerReportLogic.cs b/ComputerStoreContracts/BusinessLogicContracts/ISellerReportLogic.cs
new file mode 100644
index 0000000..3354c36
--- /dev/null
+++ b/ComputerStoreContracts/BusinessLogicContracts/ISellerReportLogic.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ComputerStoreContracts.BusinessLogicContracts
+{
+ internal class ISellerReportLogic
+ {
+ }
+}
diff --git a/ComputerStoreContracts/ViewModels/OrderViewModel.cs b/ComputerStoreContracts/ViewModels/OrderViewModel.cs
index fbc0610..67177b9 100644
--- a/ComputerStoreContracts/ViewModels/OrderViewModel.cs
+++ b/ComputerStoreContracts/ViewModels/OrderViewModel.cs
@@ -26,7 +26,7 @@ namespace ComputerStoreContracts.ViewModels
[DisplayName("SellerUsername")]
public string? SellerUsername { get; set; } = string.Empty;
- public List OrderConsignments { get; set; } = new();
- public List OrderRequests { get; set; } = new();
+ public List? OrderConsignments { get; set; } = new();
+ public List? OrderRequests { get; set; } = new();
}
}
diff --git a/ComputerStoreContracts/ViewModels/RequestViewModel.cs b/ComputerStoreContracts/ViewModels/RequestViewModel.cs
index a2e18b2..93c274b 100644
--- a/ComputerStoreContracts/ViewModels/RequestViewModel.cs
+++ b/ComputerStoreContracts/ViewModels/RequestViewModel.cs
@@ -18,6 +18,9 @@ namespace ComputerStoreContracts.ViewModels
public double Price { get; set; }
[DisplayName("PC ID")]
- public int PCID { get; set; }
+ public int? PCID { get; set; }
+
+ [DisplayName("PC's name")]
+ public string PCName { get; set; } = string.Empty;
}
}
diff --git a/ComputerStoreDataModels/Models/IOrderModel.cs b/ComputerStoreDataModels/Models/IOrderModel.cs
index 8406ab5..1e48105 100644
--- a/ComputerStoreDataModels/Models/IOrderModel.cs
+++ b/ComputerStoreDataModels/Models/IOrderModel.cs
@@ -10,8 +10,8 @@ namespace ComputerStoreDataModels.Models
public interface IOrderModel : IID
{
double Price { get; }
- List OrderConsignments { get; }
- List OrderRequests { get; }
+ List? OrderConsignments { get; }
+ List? OrderRequests { get; }
OrderStatus Status { get; }
DateTime DateCreate { get; }
DateTime? DateImplement { get; }
diff --git a/ComputerStoreDataModels/Models/IRequestModel.cs b/ComputerStoreDataModels/Models/IRequestModel.cs
index 0fb3992..c21a563 100644
--- a/ComputerStoreDataModels/Models/IRequestModel.cs
+++ b/ComputerStoreDataModels/Models/IRequestModel.cs
@@ -9,7 +9,7 @@ namespace ComputerStoreDataModels.Models
public interface IRequestModel : IID
{
int OrderID { get; }
- int PCID { get; }
+ int? PCID { get; }
double Price { get; }
}
}
diff --git a/ComputerStoreDatabaseImplement/ComputerStoreDatabase.cs b/ComputerStoreDatabaseImplement/ComputerStoreDatabase.cs
index 02df13b..fd3d783 100644
--- a/ComputerStoreDatabaseImplement/ComputerStoreDatabase.cs
+++ b/ComputerStoreDatabaseImplement/ComputerStoreDatabase.cs
@@ -14,7 +14,7 @@ namespace ComputerStoreDatabaseImplement
{
if (optionsBuilder.IsConfigured == false)
{
- optionsBuilder.UseSqlServer(@"Server=localhost\SQLEXPRESS;Initial Catalog=ComputerStoreDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
+ optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Initial Catalog=ComputerStoreDatabase;Integrated Security=True;MultipleActiveResultSets=True;TrustServerCertificate=True");
}
base.OnConfiguring(optionsBuilder);
}
@@ -25,5 +25,10 @@ namespace ComputerStoreDatabaseImplement
public virtual DbSet Employees { get; set; }
public virtual DbSet RequestComponents { get; set; }
public virtual DbSet ProductComponents { get; set; }
+ public virtual DbSet ConsignmentProducts { get; set; }
+ public virtual DbSet Consignments { get; set; }
+ public virtual DbSet Orders { get; set; }
+ public virtual DbSet Requests { get; set; }
+ public virtual DbSet Sellers { get; set; }
}
}
diff --git a/ComputerStoreDatabaseImplement/Implements/ConsignmentStorage.cs b/ComputerStoreDatabaseImplement/Implements/ConsignmentStorage.cs
index d31608d..e809f33 100644
--- a/ComputerStoreDatabaseImplement/Implements/ConsignmentStorage.cs
+++ b/ComputerStoreDatabaseImplement/Implements/ConsignmentStorage.cs
@@ -1,13 +1,117 @@
-using System;
+using ComputerStoreContracts.BindingModels;
+using ComputerStoreContracts.SearchModels;
+using ComputerStoreContracts.StorageContracts;
+using ComputerStoreContracts.ViewModels;
+using ComputerStoreDatabaseImplement.Models;
+using Microsoft.EntityFrameworkCore;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
+using System.Xml.Linq;
namespace ComputerStoreDatabaseImplement.Implements
{
- public class ConsignmentStorage //: IConsignmentStorage
+ public class ConsignmentStorage : IConsignmentStorage
{
+ public List GetFullList()
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Consignments
+ .Include(x => x.Order)
+ .Include(x => x.Products)
+ .ThenInclude(x => x.Product)
+ .Select(x => x.GetViewModel)
+ .ToList();
+ }
+ public List GetFilteredList(ConsignmentSearchModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Consignments.Include(x => x.Order)
+ .Include(x => x.Products)
+ .ThenInclude(x => x.Product)
+ .Where(x =>
+ (!model.ID.HasValue || x.ID == model.ID) &&
+ (!model.OrderID.HasValue || x.OrderID == model.OrderID) &&
+ (!model.ProductID.HasValue || x.Products.FirstOrDefault(y => y.ProductID == model.ProductID) != null))
+ .Select(x => x.GetViewModel)
+ .ToList();
+ }
+
+ public ConsignmentViewModel? GetElement(ConsignmentSearchModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Consignments.Include(x => x.Order)
+ .Include(x => x.Products)
+ .ThenInclude(x => x.Product)
+ .FirstOrDefault(x =>
+ (!model.ID.HasValue || x.ID == model.ID) &&
+ (!model.OrderID.HasValue || x.OrderID == model.OrderID) &&
+ (!model.ProductID.HasValue || x.Products.FirstOrDefault(y => y.ProductID == model.ProductID) != null))?
+ .GetViewModel;
+ }
+
+ public ConsignmentViewModel? Insert(ConsignmentBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var newConsignment = Consignment.Create(context, model);
+ if (newConsignment == null)
+ {
+ return null;
+ }
+
+ context.Consignments.Add(newConsignment);
+ context.SaveChanges();
+
+ return context.Consignments.Include(x => x.Order)
+ .Include(x => x.Products)
+ .ThenInclude(x => x.Product)
+ .FirstOrDefault(x => x.ID == newConsignment.ID)?
+ .GetViewModel;
+ }
+
+ public ConsignmentViewModel? Update(ConsignmentBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var consignment = context.Consignments.Include(x => x.Products).FirstOrDefault(x => x.ID == model.ID);
+ if (consignment == null)
+ {
+ return null;
+ }
+
+ consignment.Update(model);
+ consignment.UpdateProducts(context, model);
+ context.SaveChanges();
+
+ return context.Consignments.Include(x => x.Order)
+ .Include(x => x.Products)
+ .ThenInclude(x => x.Product)
+ .FirstOrDefault(x => x.ID == consignment.ID)?
+ .GetViewModel;
+ }
+
+ public ConsignmentViewModel? Delete(ConsignmentBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var consignment = context.Consignments.Include(x => x.Order)
+ .Include(x => x.Products)
+ .ThenInclude(x => x.Product)
+ .FirstOrDefault(x => x.ID == model.ID);
+ if (consignment != null)
+ {
+ context.Consignments.Remove(consignment);
+ context.SaveChanges();
+
+ return consignment.GetViewModel;
+ }
+
+ return null;
+ }
}
}
diff --git a/ComputerStoreDatabaseImplement/Implements/OrderStorage.cs b/ComputerStoreDatabaseImplement/Implements/OrderStorage.cs
index 9c327dc..8e7174e 100644
--- a/ComputerStoreDatabaseImplement/Implements/OrderStorage.cs
+++ b/ComputerStoreDatabaseImplement/Implements/OrderStorage.cs
@@ -1,4 +1,10 @@
-using System;
+using ComputerStoreContracts.BindingModels;
+using ComputerStoreContracts.SearchModels;
+using ComputerStoreContracts.StorageContracts;
+using ComputerStoreContracts.ViewModels;
+using ComputerStoreDatabaseImplement.Models;
+using Microsoft.EntityFrameworkCore;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -6,7 +12,123 @@ using System.Threading.Tasks;
namespace ComputerStoreDatabaseImplement.Implements
{
- public class OrderStorage //: IOrderStorage
+ public class OrderStorage : IOrderStorage
{
+ public List GetFullList()
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Orders.Include(x => x.Seller)
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .Select(x => x.GetViewModel)
+ .ToList();
+ }
+
+ public List GetFilteredList(OrderSearchModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Orders
+ .Include(x => x.Seller)
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .Where(x =>
+ (!model.ID.HasValue ||
+ x.ID == model.ID) &&
+ (!model.SellerID.HasValue ||
+ x.SellerID == model.SellerID) &&
+ (!model.ConsignmentID.HasValue ||
+ x._consignments.FirstOrDefault(y => y.ID == model.ConsignmentID) != null) &&
+ (!model.RequestID.HasValue ||
+ x._requests.FirstOrDefault(y => y.ID == model.RequestID) != null) &&
+ (!model.DateFrom.HasValue || x.DateCreate >= model.DateFrom) &&
+ (!model.DateTo.HasValue || x.DateCreate <= model.DateTo))
+ .Select(x => x.GetViewModel)
+ .ToList();
+ }
+
+ public OrderViewModel? GetElement(OrderSearchModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Orders.Include(x => x.Seller)
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .FirstOrDefault(x =>
+ (!model.ID.HasValue ||
+ x.ID == model.ID) &&
+ (!model.SellerID.HasValue ||
+ x.SellerID == model.SellerID) &&
+ (!model.ConsignmentID.HasValue ||
+ x._consignments.FirstOrDefault(y => y.ID == model.ConsignmentID) != null) &&
+ (!model.RequestID.HasValue ||
+ x._requests.FirstOrDefault(y => y.ID == model.RequestID) != null) &&
+ (!model.DateFrom.HasValue || x.DateCreate >= model.DateFrom) &&
+ (!model.DateTo.HasValue || x.DateCreate <= model.DateTo))?
+ .GetViewModel;
+
+ }
+
+ public OrderViewModel? Insert(OrderBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var newOrder = Order.Create(context, model);
+ if (newOrder == null)
+ {
+ return null;
+ }
+
+ context.Orders.Add(newOrder);
+ context.SaveChanges();
+
+ return context.Orders.Include(x => x.Seller)
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .FirstOrDefault(x => x.ID == newOrder.ID)?
+ .GetViewModel;
+ }
+
+ public OrderViewModel? Update(OrderBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var order = context.Orders
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .FirstOrDefault(x => x.ID == model.ID);
+ if (order == null)
+ {
+ return null;
+ }
+
+ order.Update(model);
+ order.UpdateOrderConsignments(context, model);
+ order.UpdateOrderRequests(context, model);
+ context.SaveChanges();
+
+ return context.Orders.Include(x => x.Seller)
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .FirstOrDefault(x => x.ID == model.ID)?
+ .GetViewModel;
+ }
+
+ public OrderViewModel? Delete(OrderBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var order = context.Orders.Include(x => x.Seller)
+ .Include(x => x._consignments)
+ .Include(x => x._requests)
+ .FirstOrDefault(x => x.ID == model.ID);
+ if (order != null)
+ {
+ context.Orders.Remove(order);
+ context.SaveChanges();
+
+ return order.GetViewModel;
+ }
+
+ return null;
+ }
}
}
diff --git a/ComputerStoreDatabaseImplement/Implements/RequestStorage.cs b/ComputerStoreDatabaseImplement/Implements/RequestStorage.cs
index ce9bf4c..13b4384 100644
--- a/ComputerStoreDatabaseImplement/Implements/RequestStorage.cs
+++ b/ComputerStoreDatabaseImplement/Implements/RequestStorage.cs
@@ -1,4 +1,10 @@
-using System;
+using ComputerStoreContracts.BindingModels;
+using ComputerStoreContracts.SearchModels;
+using ComputerStoreContracts.StorageContracts;
+using ComputerStoreContracts.ViewModels;
+using ComputerStoreDatabaseImplement.Models;
+using Microsoft.EntityFrameworkCore;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -6,7 +12,93 @@ using System.Threading.Tasks;
namespace ComputerStoreDatabaseImplement.Implements
{
- public class RequestStorage //: IRequestStorage
+ public class RequestStorage : IRequestStorage
{
+ public RequestViewModel? GetElement(RequestSearchModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Requests
+ .Include(x => x.Order)
+ .Include(y => y.PCs)
+ .FirstOrDefault(x =>
+ (!model.ID.HasValue || x.ID == model.ID) &&
+ (!model.OrderID.HasValue || x.OrderID == model.OrderID) &&
+ (!model.PCID.HasValue || x.PCID == model.PCID))?.GetViewModel;
+ }
+
+ public List GetFilteredList(RequestSearchModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Requests
+ .Include(x => x.Order)
+ .Include(y => y.PCs)
+ .Where(x =>
+ (!model.ID.HasValue || x.ID == model.ID) &&
+ (!model.OrderID.HasValue || x.OrderID == model.OrderID) &&
+ (!model.PCID.HasValue || x.PCID == model.PCID))
+ .Select(y => y.GetViewModel)
+ .ToList();
+ }
+
+ public List GetFullList()
+ {
+ using var context = new ComputerStoreDatabase();
+ return context.Requests
+ .Include(x => x.Order)
+ .Include(y => y.PCs)
+ .Select(y => y.GetViewModel)
+ .ToList();
+ }
+
+ public RequestViewModel? Insert(RequestBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ var newRequest = Request.Create(context, model);
+ if (newRequest == null) { return null; }
+ context.Requests.Add(newRequest);
+ context.SaveChanges();
+ return context.Requests
+ .Include(x => x.Order)
+ .Include(y => y.PCs)
+ .FirstOrDefault(x => x.ID == model.ID)?.GetViewModel;
+ }
+
+ public RequestViewModel? Update(RequestBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+ var request = context.Requests.FirstOrDefault(x => x.ID == model.ID);
+ if (request == null)
+ {
+ return null;
+ }
+
+ request.Update(model);
+ context.SaveChanges();
+
+ return context.Requests
+ .Include(x => x.Order)
+ .Include(y => y.PCs)
+ .FirstOrDefault(x => x.ID == model.ID)?.GetViewModel;
+ }
+
+ public RequestViewModel? Delete(RequestBindingModel model)
+ {
+ using var context = new ComputerStoreDatabase();
+
+ var request = context.Requests
+ .Include(x => x.Order)
+ .Include(y => y.PCs)
+ .FirstOrDefault(x => x.ID == model.ID);
+
+ if (request != null)
+ {
+ context.Requests.Remove(request);
+ context.SaveChanges();
+
+ return request.GetViewModel;
+ }
+
+ return null;
+ }
}
}
diff --git a/ComputerStoreDatabaseImplement/Migrations/20230408204154_init.Designer.cs b/ComputerStoreDatabaseImplement/Migrations/20230408204154_init.Designer.cs
new file mode 100644
index 0000000..c8b926c
--- /dev/null
+++ b/ComputerStoreDatabaseImplement/Migrations/20230408204154_init.Designer.cs
@@ -0,0 +1,501 @@
+//
+using System;
+using ComputerStoreDatabaseImplement;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace ComputerStoreDatabaseImplement.Migrations
+{
+ [DbContext(typeof(ComputerStoreDatabase))]
+ [Migration("20230408204154_init")]
+ partial class init
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Component", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.HasKey("ID");
+
+ b.ToTable("Components");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.Property("ProductID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("OrderID");
+
+ b.HasIndex("ProductID");
+
+ b.ToTable("Consignments");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ConsignmentProduct", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("ConsignmentID")
+ .HasColumnType("int");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("ProductID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("ConsignmentID");
+
+ b.HasIndex("ProductID");
+
+ b.ToTable("ConsignmentProducts");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Employee", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("FirstName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MiddleName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("ID");
+
+ b.ToTable("Employees");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("DateCreate")
+ .HasColumnType("datetime2");
+
+ b.Property("DateImplement")
+ .HasColumnType("datetime2");
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.Property("SellerID")
+ .HasColumnType("int");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("OrderID");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("EmployeeID")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.Property("RequestID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("EmployeeID");
+
+ b.ToTable("PCs");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("EmployeeID")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.HasKey("ID");
+
+ b.HasIndex("EmployeeID");
+
+ b.ToTable("Products");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ProductComponent", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("ComponentID")
+ .HasColumnType("int");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("ProductID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("ComponentID");
+
+ b.HasIndex("ProductID");
+
+ b.ToTable("ProductComponents");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("PCID")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.HasKey("ID");
+
+ b.HasIndex("OrderID");
+
+ b.ToTable("Requests");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.RequestComponent", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("ComponentID")
+ .HasColumnType("int");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("PCID")
+ .HasColumnType("int");
+
+ b.Property("RequestID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("ComponentID");
+
+ b.HasIndex("PCID");
+
+ b.HasIndex("RequestID");
+
+ b.ToTable("RequestComponents");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Seller", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("FirstName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MiddleName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("ID");
+
+ b.ToTable("Sellers");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Order", "Order")
+ .WithMany("_consignments")
+ .HasForeignKey("OrderID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Product", null)
+ .WithMany("Consignments")
+ .HasForeignKey("ProductID");
+
+ b.Navigation("Order");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ConsignmentProduct", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Consignment", "Consignment")
+ .WithMany("Products")
+ .HasForeignKey("ConsignmentID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product")
+ .WithMany()
+ .HasForeignKey("ProductID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Consignment");
+
+ b.Navigation("Product");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Seller", "Seller")
+ .WithMany("Orders")
+ .HasForeignKey("OrderID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Seller");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Employee", "Employee")
+ .WithMany("PCs")
+ .HasForeignKey("EmployeeID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Employee");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Employee", "Employee")
+ .WithMany("Products")
+ .HasForeignKey("EmployeeID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Employee");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ProductComponent", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Component", "Component")
+ .WithMany("ConsignmentComponents")
+ .HasForeignKey("ComponentID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product")
+ .WithMany("Components")
+ .HasForeignKey("ProductID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Component");
+
+ b.Navigation("Product");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Order", "Order")
+ .WithMany("_requests")
+ .HasForeignKey("OrderID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Order");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.RequestComponent", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Component", "Component")
+ .WithMany("RequestComponents")
+ .HasForeignKey("ComponentID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.PC", "PC")
+ .WithMany("Components")
+ .HasForeignKey("PCID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Request", "Request")
+ .WithMany("PCs")
+ .HasForeignKey("RequestID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Component");
+
+ b.Navigation("PC");
+
+ b.Navigation("Request");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Component", b =>
+ {
+ b.Navigation("ConsignmentComponents");
+
+ b.Navigation("RequestComponents");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b =>
+ {
+ b.Navigation("Products");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Employee", b =>
+ {
+ b.Navigation("PCs");
+
+ b.Navigation("Products");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b =>
+ {
+ b.Navigation("_consignments");
+
+ b.Navigation("_requests");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b =>
+ {
+ b.Navigation("Components");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b =>
+ {
+ b.Navigation("Components");
+
+ b.Navigation("Consignments");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b =>
+ {
+ b.Navigation("PCs");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Seller", b =>
+ {
+ b.Navigation("Orders");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/ComputerStoreDatabaseImplement/Migrations/20230408204154_init.cs b/ComputerStoreDatabaseImplement/Migrations/20230408204154_init.cs
new file mode 100644
index 0000000..4de3a93
--- /dev/null
+++ b/ComputerStoreDatabaseImplement/Migrations/20230408204154_init.cs
@@ -0,0 +1,367 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace ComputerStoreDatabaseImplement.Migrations
+{
+ ///
+ public partial class init : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Components",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Price = table.Column(type: "float", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Components", x => x.ID);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Employees",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Username = table.Column(type: "nvarchar(max)", nullable: false),
+ Password = table.Column(type: "nvarchar(max)", nullable: false),
+ FirstName = table.Column(type: "nvarchar(max)", nullable: true),
+ LastName = table.Column(type: "nvarchar(max)", nullable: true),
+ MiddleName = table.Column(type: "nvarchar(max)", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Employees", x => x.ID);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Sellers",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Username = table.Column(type: "nvarchar(max)", nullable: false),
+ Password = table.Column(type: "nvarchar(max)", nullable: false),
+ FirstName = table.Column(type: "nvarchar(max)", nullable: true),
+ LastName = table.Column(type: "nvarchar(max)", nullable: true),
+ MiddleName = table.Column(type: "nvarchar(max)", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Sellers", x => x.ID);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "PCs",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Price = table.Column(type: "float", nullable: false),
+ EmployeeID = table.Column(type: "int", nullable: false),
+ RequestID = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_PCs", x => x.ID);
+ table.ForeignKey(
+ name: "FK_PCs_Employees_EmployeeID",
+ column: x => x.EmployeeID,
+ principalTable: "Employees",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Products",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Price = table.Column(type: "float", nullable: false),
+ EmployeeID = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Products", x => x.ID);
+ table.ForeignKey(
+ name: "FK_Products_Employees_EmployeeID",
+ column: x => x.EmployeeID,
+ principalTable: "Employees",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Orders",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Price = table.Column(type: "float", nullable: false),
+ Status = table.Column(type: "int", nullable: false),
+ SellerID = table.Column(type: "int", nullable: false),
+ OrderID = table.Column(type: "int", nullable: false),
+ DateCreate = table.Column(type: "datetime2", nullable: false),
+ DateImplement = table.Column(type: "datetime2", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Orders", x => x.ID);
+ table.ForeignKey(
+ name: "FK_Orders_Sellers_OrderID",
+ column: x => x.OrderID,
+ principalTable: "Sellers",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "ProductComponents",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ ComponentID = table.Column(type: "int", nullable: false),
+ ProductID = table.Column(type: "int", nullable: false),
+ Count = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ProductComponents", x => x.ID);
+ table.ForeignKey(
+ name: "FK_ProductComponents_Components_ComponentID",
+ column: x => x.ComponentID,
+ principalTable: "Components",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_ProductComponents_Products_ProductID",
+ column: x => x.ProductID,
+ principalTable: "Products",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Consignments",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ OrderID = table.Column(type: "int", nullable: false),
+ Price = table.Column(type: "float", nullable: false),
+ ProductID = table.Column(type: "int", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Consignments", x => x.ID);
+ table.ForeignKey(
+ name: "FK_Consignments_Orders_OrderID",
+ column: x => x.OrderID,
+ principalTable: "Orders",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Consignments_Products_ProductID",
+ column: x => x.ProductID,
+ principalTable: "Products",
+ principalColumn: "ID");
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Requests",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ OrderID = table.Column(type: "int", nullable: false),
+ PCID = table.Column(type: "int", nullable: true),
+ Price = table.Column(type: "float", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Requests", x => x.ID);
+ table.ForeignKey(
+ name: "FK_Requests_Orders_OrderID",
+ column: x => x.OrderID,
+ principalTable: "Orders",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "ConsignmentProducts",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ ConsignmentID = table.Column(type: "int", nullable: false),
+ ProductID = table.Column(type: "int", nullable: false),
+ Count = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ConsignmentProducts", x => x.ID);
+ table.ForeignKey(
+ name: "FK_ConsignmentProducts_Consignments_ConsignmentID",
+ column: x => x.ConsignmentID,
+ principalTable: "Consignments",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_ConsignmentProducts_Products_ProductID",
+ column: x => x.ProductID,
+ principalTable: "Products",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "RequestComponents",
+ columns: table => new
+ {
+ ID = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ RequestID = table.Column(type: "int", nullable: false),
+ ComponentID = table.Column(type: "int", nullable: false),
+ PCID = table.Column(type: "int", nullable: false),
+ Count = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_RequestComponents", x => x.ID);
+ table.ForeignKey(
+ name: "FK_RequestComponents_Components_ComponentID",
+ column: x => x.ComponentID,
+ principalTable: "Components",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_RequestComponents_PCs_PCID",
+ column: x => x.PCID,
+ principalTable: "PCs",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_RequestComponents_Requests_RequestID",
+ column: x => x.RequestID,
+ principalTable: "Requests",
+ principalColumn: "ID",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_ConsignmentProducts_ConsignmentID",
+ table: "ConsignmentProducts",
+ column: "ConsignmentID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_ConsignmentProducts_ProductID",
+ table: "ConsignmentProducts",
+ column: "ProductID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Consignments_OrderID",
+ table: "Consignments",
+ column: "OrderID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Consignments_ProductID",
+ table: "Consignments",
+ column: "ProductID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Orders_OrderID",
+ table: "Orders",
+ column: "OrderID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_PCs_EmployeeID",
+ table: "PCs",
+ column: "EmployeeID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_ProductComponents_ComponentID",
+ table: "ProductComponents",
+ column: "ComponentID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_ProductComponents_ProductID",
+ table: "ProductComponents",
+ column: "ProductID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Products_EmployeeID",
+ table: "Products",
+ column: "EmployeeID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_RequestComponents_ComponentID",
+ table: "RequestComponents",
+ column: "ComponentID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_RequestComponents_PCID",
+ table: "RequestComponents",
+ column: "PCID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_RequestComponents_RequestID",
+ table: "RequestComponents",
+ column: "RequestID");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Requests_OrderID",
+ table: "Requests",
+ column: "OrderID");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "ConsignmentProducts");
+
+ migrationBuilder.DropTable(
+ name: "ProductComponents");
+
+ migrationBuilder.DropTable(
+ name: "RequestComponents");
+
+ migrationBuilder.DropTable(
+ name: "Consignments");
+
+ migrationBuilder.DropTable(
+ name: "Components");
+
+ migrationBuilder.DropTable(
+ name: "PCs");
+
+ migrationBuilder.DropTable(
+ name: "Requests");
+
+ migrationBuilder.DropTable(
+ name: "Products");
+
+ migrationBuilder.DropTable(
+ name: "Orders");
+
+ migrationBuilder.DropTable(
+ name: "Employees");
+
+ migrationBuilder.DropTable(
+ name: "Sellers");
+ }
+ }
+}
diff --git a/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs b/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs
new file mode 100644
index 0000000..09a4479
--- /dev/null
+++ b/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs
@@ -0,0 +1,498 @@
+//
+using System;
+using ComputerStoreDatabaseImplement;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace ComputerStoreDatabaseImplement.Migrations
+{
+ [DbContext(typeof(ComputerStoreDatabase))]
+ partial class ComputerStoreDatabaseModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Component", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.HasKey("ID");
+
+ b.ToTable("Components");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.Property("ProductID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("OrderID");
+
+ b.HasIndex("ProductID");
+
+ b.ToTable("Consignments");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ConsignmentProduct", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("ConsignmentID")
+ .HasColumnType("int");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("ProductID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("ConsignmentID");
+
+ b.HasIndex("ProductID");
+
+ b.ToTable("ConsignmentProducts");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Employee", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("FirstName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MiddleName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("ID");
+
+ b.ToTable("Employees");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("DateCreate")
+ .HasColumnType("datetime2");
+
+ b.Property("DateImplement")
+ .HasColumnType("datetime2");
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.Property("SellerID")
+ .HasColumnType("int");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("OrderID");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("EmployeeID")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.Property("RequestID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("EmployeeID");
+
+ b.ToTable("PCs");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("EmployeeID")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.HasKey("ID");
+
+ b.HasIndex("EmployeeID");
+
+ b.ToTable("Products");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ProductComponent", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("ComponentID")
+ .HasColumnType("int");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("ProductID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("ComponentID");
+
+ b.HasIndex("ProductID");
+
+ b.ToTable("ProductComponents");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("PCID")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("float");
+
+ b.HasKey("ID");
+
+ b.HasIndex("OrderID");
+
+ b.ToTable("Requests");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.RequestComponent", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("ComponentID")
+ .HasColumnType("int");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("PCID")
+ .HasColumnType("int");
+
+ b.Property("RequestID")
+ .HasColumnType("int");
+
+ b.HasKey("ID");
+
+ b.HasIndex("ComponentID");
+
+ b.HasIndex("PCID");
+
+ b.HasIndex("RequestID");
+
+ b.ToTable("RequestComponents");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Seller", b =>
+ {
+ b.Property("ID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+
+ b.Property("FirstName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MiddleName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("ID");
+
+ b.ToTable("Sellers");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Order", "Order")
+ .WithMany("_consignments")
+ .HasForeignKey("OrderID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Product", null)
+ .WithMany("Consignments")
+ .HasForeignKey("ProductID");
+
+ b.Navigation("Order");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ConsignmentProduct", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Consignment", "Consignment")
+ .WithMany("Products")
+ .HasForeignKey("ConsignmentID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product")
+ .WithMany()
+ .HasForeignKey("ProductID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Consignment");
+
+ b.Navigation("Product");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Seller", "Seller")
+ .WithMany("Orders")
+ .HasForeignKey("OrderID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Seller");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Employee", "Employee")
+ .WithMany("PCs")
+ .HasForeignKey("EmployeeID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Employee");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Employee", "Employee")
+ .WithMany("Products")
+ .HasForeignKey("EmployeeID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Employee");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ProductComponent", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Component", "Component")
+ .WithMany("ConsignmentComponents")
+ .HasForeignKey("ComponentID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product")
+ .WithMany("Components")
+ .HasForeignKey("ProductID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Component");
+
+ b.Navigation("Product");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Order", "Order")
+ .WithMany("_requests")
+ .HasForeignKey("OrderID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Order");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.RequestComponent", b =>
+ {
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Component", "Component")
+ .WithMany("RequestComponents")
+ .HasForeignKey("ComponentID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.PC", "PC")
+ .WithMany("Components")
+ .HasForeignKey("PCID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("ComputerStoreDatabaseImplement.Models.Request", "Request")
+ .WithMany("PCs")
+ .HasForeignKey("RequestID")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Component");
+
+ b.Navigation("PC");
+
+ b.Navigation("Request");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Component", b =>
+ {
+ b.Navigation("ConsignmentComponents");
+
+ b.Navigation("RequestComponents");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b =>
+ {
+ b.Navigation("Products");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Employee", b =>
+ {
+ b.Navigation("PCs");
+
+ b.Navigation("Products");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b =>
+ {
+ b.Navigation("_consignments");
+
+ b.Navigation("_requests");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b =>
+ {
+ b.Navigation("Components");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b =>
+ {
+ b.Navigation("Components");
+
+ b.Navigation("Consignments");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b =>
+ {
+ b.Navigation("PCs");
+ });
+
+ modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Seller", b =>
+ {
+ b.Navigation("Orders");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/ComputerStoreDatabaseImplement/Models/Consignment.cs b/ComputerStoreDatabaseImplement/Models/Consignment.cs
index fc0e3b9..7ea066f 100644
--- a/ComputerStoreDatabaseImplement/Models/Consignment.cs
+++ b/ComputerStoreDatabaseImplement/Models/Consignment.cs
@@ -8,6 +8,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Runtime.ConstrainedExecution;
namespace ComputerStoreDatabaseImplement.Models
{
@@ -17,6 +18,7 @@ namespace ComputerStoreDatabaseImplement.Models
[Required]
public int OrderID { get; private set; }
+ public virtual Order Order { get; set; }
[Required]
public double Price { get; private set; }
@@ -36,60 +38,72 @@ namespace ComputerStoreDatabaseImplement.Models
}
}
- [ForeignKey("ConsignmentId")]
- public virtual List Components { get; set; } = new();
-
-
- public virtual Product Product { get; private set; }
- private Dictionary? Products = null;
-
-
-
-
[ForeignKey("ConsignmentID")]
- public virtual List ConsignmentComponent { get; private set; } = new();
+ public virtual List Products { get; set; } = new();
- public static Consignment Create(ComputerStoreDatabase context, ConsignmentBindingModel model)
+ public static Consignment? Create(ComputerStoreDatabase context, ConsignmentBindingModel model)
{
if (model == null)
{
return null;
}
+ var products = context.Products;
return new Consignment()
{
ID = model.ID,
OrderID = model.OrderID,
Price = model.Price,
- _orderProducts = model.ConsignmentProducts
-
+ Products = model.ConsignmentProducts.Select(x => new ConsignmentProduct
+ {
+ Product = context.Products.First(y => y.ID == x.Key),
+ Count = x.Value.Item2
+ }).ToList()
};
-
- //return new Consignment()
- //{
- // ID = model.ID,
- // OrderID = model.OrderID,
- // Price = model.Price,
- // Products = model.ConsignmentProducts.Select(x => new ConsignmentComponent
- // {
- // Component = context.Components.First(y => y.ID == x.Key),
- // Count = x.Value.Item2
- // }).ToList()
- //};
}
- public void Update(ConsignmentBindingModel? model)
+
+ public void Update(ConsignmentBindingModel model)
{
if (model == null)
{
return;
}
- OrderID = model.OrderID;
Price = model.Price;
}
public ConsignmentViewModel GetViewModel => new()
{
ID = ID,
OrderID = OrderID,
- Price = Price
+ Price = Price,
+ ConsignmentProducts = ConsignmentProducts
};
+
+ public void UpdateProducts(ComputerStoreDatabase context, ConsignmentBindingModel model)
+ {
+ var consignmentProducts = context.ConsignmentProducts.Where(rec => rec.ConsignmentID == model.ID).ToList();
+ if (consignmentProducts != null && consignmentProducts.Count > 0)
+ {
+ context.ConsignmentProducts.RemoveRange(consignmentProducts.Where(rec => !model.ConsignmentProducts.ContainsKey(rec.ProductID)));
+ context.SaveChanges();
+ foreach (var updateProduct in consignmentProducts)
+ {
+ updateProduct.Count = model.ConsignmentProducts[updateProduct.ID].Item2;
+ model.ConsignmentProducts.Remove(updateProduct.ID);
+ }
+ context.SaveChanges();
+ }
+
+ var consignment = context.Consignments.First(x => x.ID == ID);
+ foreach (var pc in model.ConsignmentProducts)
+ {
+ context.ConsignmentProducts.Add(new ConsignmentProduct
+ {
+ Consignment = consignment,
+ Product = context.Products.First(x => x.ID == pc.Key),
+ Count = pc.Value.Item2
+ });
+ context.SaveChanges();
+ }
+ _consignmentProducts = null;
+ }
}
}
diff --git a/ComputerStoreDatabaseImplement/Models/ConsignmentProduct.cs b/ComputerStoreDatabaseImplement/Models/ConsignmentProduct.cs
new file mode 100644
index 0000000..96a947a
--- /dev/null
+++ b/ComputerStoreDatabaseImplement/Models/ConsignmentProduct.cs
@@ -0,0 +1,24 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Runtime.ConstrainedExecution;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ComputerStoreDatabaseImplement.Models
+{
+ public class ConsignmentProduct
+ {
+ public int ID { get; set; }
+ [Required]
+ public int ConsignmentID { get; set; }
+ [Required]
+ public int ProductID { get; set; }
+ [Required]
+ public int Count { get; set; }
+ public virtual Consignment Consignment { get; set; } = new();
+ public virtual Product Product { get; set; } = new();
+ }
+}
diff --git a/ComputerStoreDatabaseImplement/Models/Order.cs b/ComputerStoreDatabaseImplement/Models/Order.cs
index 167b6e9..d605ef5 100644
--- a/ComputerStoreDatabaseImplement/Models/Order.cs
+++ b/ComputerStoreDatabaseImplement/Models/Order.cs
@@ -16,30 +16,39 @@ namespace ComputerStoreDatabaseImplement.Models
public class Order : IOrderModel
{
public int ID { get; private set; }
-
[Required]
public double Price { get; private set; }
-
- public int? ConsignmentID { get; private set; }
-
- public int? RequestID { get; private set; }
-
[Required]
public OrderStatus Status { get; private set; } = OrderStatus.Unknown;
-
- [Required]
- public DateTime DateCreate { get; private set; } = DateTime.Now;
-
- public DateTime? DateImplement { get; private set; }
-
[Required]
public int SellerID { get; private set; }
-
public virtual Seller Seller { get; set; }
- public virtual Consignment Consignment { get; private set; }
- public virtual Request Request { get; private set; }
+ [Required]
+ public DateTime DateCreate { get; private set; } = DateTime.Now;
+ public DateTime? DateImplement { get; private set; }
- public static Order? Create(OrderBindingModel? model)
+ [ForeignKey("OrderID")]
+ public virtual List _consignments { get; private set; } = new();
+ [ForeignKey("OrderID")]
+ public virtual List _requests { get; private set; } = new();
+ [NotMapped]
+ public List OrderConsignments
+ {
+ get
+ {
+ return _consignments.Select(x => (IConsignmentModel)x).ToList();
+ }
+ }
+ [NotMapped]
+ public List OrderRequests
+ {
+ get
+ {
+ return _requests.Select(x => (IRequestModel)x).ToList();
+ }
+ }
+
+ public static Order? Create(ComputerStoreDatabase context, OrderBindingModel? model)
{
if (model == null)
{
@@ -47,15 +56,15 @@ namespace ComputerStoreDatabaseImplement.Models
}
return new Order
{
+ ID = model.ID,
Price = model.Price,
- ConsignmentID = model.ConsignmentID,
- RequestID = model.RequestID,
Status = model.Status,
+ SellerID = model.SellerID,
DateCreate = model.DateCreate,
DateImplement = model.DateImplement,
- SellerID = model.SellerID,
- ID = model.ID,
- };
+ _consignments = model.OrderConsignments.Select(x => context.Consignments.First(y => y.ID == x.ID)).ToList(),
+ _requests = model.OrderRequests.Select(x => context.Requests.First(y => y.ID == x.ID)).ToList(),
+ };
}
public void Update(OrderBindingModel? model)
@@ -66,6 +75,24 @@ namespace ComputerStoreDatabaseImplement.Models
}
Status = model.Status;
DateImplement = model.DateImplement;
+ Price = model.Price;
+ }
+
+ public void UpdateOrderRequests(ComputerStoreDatabase context, OrderBindingModel model)
+ {
+ if (model.OrderRequests == null)
+ {
+ return;
+ }
+ _requests = model.OrderRequests.Select(x => context.Requests.First(y => y.ID == x.ID)).ToList();
+ }
+ public void UpdateOrderConsignments(ComputerStoreDatabase context, OrderBindingModel model)
+ {
+ if (model.OrderRequests == null)
+ {
+ return;
+ }
+ _consignments = model.OrderConsignments.Select(x => context.Consignments.First(y => y.ID == x.ID)).ToList();
}
public OrderViewModel GetViewModel
@@ -77,14 +104,14 @@ namespace ComputerStoreDatabaseImplement.Models
{
ID = ID,
- ConsignmentID = ConsignmentID,
- RequestID = RequestID,
+ Price = Price,
DateCreate = DateCreate,
DateImplement = DateImplement,
Status = Status,
- Price = Price,
SellerID = SellerID,
- SellerUsername = context.Sellers.FirstOrDefault(x => x.ID == SellerID)?.Username ?? string.Empty
+ SellerUsername = context.Sellers.First(x => x.ID == SellerID)?.Username ?? string.Empty,
+ OrderConsignments = _consignments.Select(x => (IConsignmentModel)x.GetViewModel).ToList(),
+ OrderRequests = _requests.Select(x => (IRequestModel)x.GetViewModel).ToList()
};
}
}
diff --git a/ComputerStoreDatabaseImplement/Models/Request.cs b/ComputerStoreDatabaseImplement/Models/Request.cs
index 5a1d63a..7db9bc3 100644
--- a/ComputerStoreDatabaseImplement/Models/Request.cs
+++ b/ComputerStoreDatabaseImplement/Models/Request.cs
@@ -8,6 +8,10 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Azure.Core;
+using ComputerStoreContracts.SearchModels;
+using Microsoft.EntityFrameworkCore;
+using System.Xml.Linq;
namespace ComputerStoreDatabaseImplement.Models
{
@@ -17,14 +21,17 @@ namespace ComputerStoreDatabaseImplement.Models
[Required]
public int OrderID { get; private set; }
+ public virtual Order Order { get; set; }
+
+ public int? PCID { get; private set; }
[Required]
public double Price { get; private set; }
[ForeignKey("RequestID")]
- public virtual List RequestComponents { get; private set; } = new();
+ public virtual List PCs { get; set; } = new();
- public static Request? Create(RequestBindingModel model)
+ public static Request? Create(ComputerStoreDatabase context, RequestBindingModel model)
{
if (model == null)
{
@@ -38,21 +45,35 @@ namespace ComputerStoreDatabaseImplement.Models
};
}
- public void Update(RequestBindingModel? model)
+ public void Update(RequestBindingModel model)
{
if (model == null)
{
return;
}
- OrderID = model.OrderID;
Price = model.Price;
+ PCID = model.PCID;
}
- public RequestViewModel GetViewModel => new()
+ public void UpdatePCID(ComputerStoreDatabase context)
{
- ID = ID,
- OrderID = OrderID,
- Price = Price
- };
+ PCID = context.RequestComponents.First(x => x.RequestID == ID).PCID;
+ }
+
+ public RequestViewModel GetViewModel
+ {
+ get
+ {
+ var context = new ComputerStoreDatabase();
+ return new RequestViewModel()
+ {
+ ID = ID,
+ OrderID = OrderID,
+ Price = Price,
+ PCID = PCID,
+ PCName = context.PCs.First(rec => rec.ID == PCID).Name
+ };
+ }
+ }
}
}