diff --git a/ComputerShopProvider/ComputerShopBusinessLogic/BusinessLogics/OrderLogic.cs b/ComputerShopProvider/ComputerShopBusinessLogic/BusinessLogics/OrderLogic.cs index f88d55b..71ec7c1 100644 --- a/ComputerShopProvider/ComputerShopBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/ComputerShopProvider/ComputerShopBusinessLogic/BusinessLogics/OrderLogic.cs @@ -17,12 +17,12 @@ namespace ComputerShopBusinessLogic.BusinessLogics { private readonly ILogger _logger; private readonly IOrderStorage _orderStorage; - private readonly IAssemblyStorage _assemblyStorage; - public OrderLogic(ILogger logger, IOrderStorage orderStorage, IAssemblyStorage assemblyStorage) + private readonly IComponentStorage _componentStorage; + public OrderLogic(ILogger logger, IOrderStorage orderStorage, IComponentStorage componentStorage) { _logger = logger; _orderStorage = orderStorage; - _assemblyStorage = assemblyStorage; + _componentStorage = componentStorage; } public bool CreateOrder(OrderBindingModel model) { @@ -99,22 +99,17 @@ namespace ComputerShopBusinessLogic.BusinessLogics _logger.LogWarning("Order model not found"); return false; } - OrderBindingModel model = new OrderBindingModel - { - Id = viewModel.Id, - ClientId = viewModel.ClientId, - Status = viewModel.Status, - DateCreate = viewModel.DateCreate, - DateImplement = viewModel.DateImplement, - Sum = viewModel.Sum - }; + CheckModel(rawModel, false); if (rawModel.Status + 1 != _newStatus) { _logger.LogWarning("Status update to " + _newStatus.ToString() + " operation failed. Order status incorrect."); return false; } - if (rawModel.Status == OrderStatus.Выдан) rawModel.DateImplement = DateTime.Now; + rawModel.Status = _newStatus; + if (rawModel.Status == OrderStatus.Выдан) + rawModel.DateImplement = DateTime.Now; + if (_orderStorage.Update(rawModel) == null) { rawModel.Status--; @@ -139,39 +134,39 @@ namespace ComputerShopBusinessLogic.BusinessLogics } if (model.Sum <= 0) { - throw new ArgumentNullException("Сумма заказа должна быть больше 0", nameof(model.Sum)); + } _logger.LogInformation("Order. OrderID:{Id}. Sum:{ Sum}. ClientId: { ClientId}", model.Id, model.Sum, model.ClientId); } - public bool AddAssembly(OrderSearchModel model, AssemblySearchModel assemblymodel, int amount) + public bool AddComponent(OrderSearchModel model, ComponentSearchModel componentmodel, int amount) { if (model == null) { throw new ArgumentNullException(nameof(model)); } - _logger.LogInformation("AddAssemblyToOrder. AssemblyName:{AssemblyName}.Id:{ Id}", assemblymodel.AssemblyName, model.Id); + _logger.LogInformation("AddComponentToOrder. AssemblyName:{AssemblyName}.Id:{ Id}", componentmodel.ComponentName, model.Id); var order = _orderStorage.GetElement(model); - var assembly = _assemblyStorage.GetElement(assemblymodel); + var component = _componentStorage.GetElement(componentmodel); - if (order == null || assembly == null) + if (order == null || component == null) { return false; } - _logger.LogInformation("AddAssemblyToOrder find. Id:{Id}", order.Id); + _logger.LogInformation("AddComponentToOrder find. Id:{Id}", order.Id); - order.OrderAssemblies[assembly.Id] = (assembly, amount); + order.OrderComponents[component.Id] = (component, amount); _orderStorage.Update(new() { Id = order.Id, Status = order.Status, - Sum = order.Sum + assembly.Price * amount, + Sum = order.Sum + component.Cost * amount, ClientId = order.ClientId, - AssemblyOrders = order.OrderAssemblies - }); + OrderComponents = order.OrderComponents + }); return true; } diff --git a/ComputerShopProvider/ComputerShopContracts/BindingModels/AssemblyBindingModel.cs b/ComputerShopProvider/ComputerShopContracts/BindingModels/AssemblyBindingModel.cs index d1c3b31..1a09b89 100644 --- a/ComputerShopProvider/ComputerShopContracts/BindingModels/AssemblyBindingModel.cs +++ b/ComputerShopProvider/ComputerShopContracts/BindingModels/AssemblyBindingModel.cs @@ -18,10 +18,5 @@ namespace ComputerShopContracts.BindingModels get; set; } = new(); - public Dictionary AssemblyOrders - { - get; - set; - } = new(); } } diff --git a/ComputerShopProvider/ComputerShopContracts/BindingModels/OrderBindingModel.cs b/ComputerShopProvider/ComputerShopContracts/BindingModels/OrderBindingModel.cs index 61d13dd..242a238 100644 --- a/ComputerShopProvider/ComputerShopContracts/BindingModels/OrderBindingModel.cs +++ b/ComputerShopProvider/ComputerShopContracts/BindingModels/OrderBindingModel.cs @@ -15,12 +15,12 @@ namespace ComputerShopContracts.BindingModels public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; - public DateTime DateCreate { get; set; } + public DateTime DateCreate { get; set; } = DateTime.Now; - public DateTime? DateImplement { get; set; } = DateTime.Now; + public DateTime? DateImplement { get; set; } public int ClientId { get; set; } - public Dictionary AssemblyOrders - { + public Dictionary OrderComponents + { get; set; } = new(); diff --git a/ComputerShopProvider/ComputerShopContracts/BusinessLogicContracts/IOrderLogic.cs b/ComputerShopProvider/ComputerShopContracts/BusinessLogicContracts/IOrderLogic.cs index 43bd404..7c09f84 100644 --- a/ComputerShopProvider/ComputerShopContracts/BusinessLogicContracts/IOrderLogic.cs +++ b/ComputerShopProvider/ComputerShopContracts/BusinessLogicContracts/IOrderLogic.cs @@ -18,6 +18,6 @@ namespace ComputerShopContracts.BusinessLogicContracts bool TakeOrderInWork(OrderBindingModel model); bool FinishOrder(OrderBindingModel model); bool DeliveryOrder(OrderBindingModel model); - bool AddAssembly(OrderSearchModel ordermodel, AssemblySearchModel model, int amount); + bool AddComponent(OrderSearchModel ordermodel, ComponentSearchModel model, int amount); } } diff --git a/ComputerShopProvider/ComputerShopContracts/SearchModels/ComponentSearchModel.cs b/ComputerShopProvider/ComputerShopContracts/SearchModels/ComponentSearchModel.cs index c9ef869..9e10479 100644 --- a/ComputerShopProvider/ComputerShopContracts/SearchModels/ComponentSearchModel.cs +++ b/ComputerShopProvider/ComputerShopContracts/SearchModels/ComponentSearchModel.cs @@ -11,5 +11,6 @@ namespace ComputerShopContracts.SearchModels public int? Id { get; set; } public string? ComponentName { get; set; } public int? ClientId { get; set; } + public int? OrderId { get; set; } } } diff --git a/ComputerShopProvider/ComputerShopContracts/StorageContracts/IOrderStorage.cs b/ComputerShopProvider/ComputerShopContracts/StorageContracts/IOrderStorage.cs index 30dc1c3..f578285 100644 --- a/ComputerShopProvider/ComputerShopContracts/StorageContracts/IOrderStorage.cs +++ b/ComputerShopProvider/ComputerShopContracts/StorageContracts/IOrderStorage.cs @@ -17,5 +17,6 @@ namespace ComputerShopContracts.StorageContracts OrderViewModel? Insert(OrderBindingModel model); OrderViewModel? Update(OrderBindingModel model); OrderViewModel? Delete(OrderBindingModel model); - } + ComponentViewModel? GetComponentsByOrder(OrderSearchModel model); + } } diff --git a/ComputerShopProvider/ComputerShopContracts/ViewModels/OrderViewModel.cs b/ComputerShopProvider/ComputerShopContracts/ViewModels/OrderViewModel.cs index 89c2630..9aa5745 100644 --- a/ComputerShopProvider/ComputerShopContracts/ViewModels/OrderViewModel.cs +++ b/ComputerShopProvider/ComputerShopContracts/ViewModels/OrderViewModel.cs @@ -19,8 +19,8 @@ namespace ComputerShopContracts.ViewModels [DisplayName("Дата создания")] public DateTime DateCreate { get; set; } = DateTime.Now; - public Dictionary OrderAssemblies - { + public Dictionary OrderComponents + { get; set; } = new(); diff --git a/ComputerShopProvider/ComputerShopDataModels/Models/IOrderModel.cs b/ComputerShopProvider/ComputerShopDataModels/Models/IOrderModel.cs index 37753b3..874b0ba 100644 --- a/ComputerShopProvider/ComputerShopDataModels/Models/IOrderModel.cs +++ b/ComputerShopProvider/ComputerShopDataModels/Models/IOrderModel.cs @@ -8,5 +8,6 @@ namespace ComputerShopDataModels.Models OrderStatus Status { get; } DateTime DateCreate { get; } DateTime? DateImplement { get; } - } + Dictionary OrderComponents { get; } + } } diff --git a/ComputerShopProvider/ComputerShopDataModels/Models/ISupplyModel.cs b/ComputerShopProvider/ComputerShopDataModels/Models/ISupplyModel.cs index 944bbb3..cf958e3 100644 --- a/ComputerShopProvider/ComputerShopDataModels/Models/ISupplyModel.cs +++ b/ComputerShopProvider/ComputerShopDataModels/Models/ISupplyModel.cs @@ -8,7 +8,6 @@ namespace ComputerShopDataModels.Models DateTime DateCreate { get; } DateTime? DateImplement { get; } int? ReceivingId { get; } - int? ComponentId { get; } Dictionary SupplyOrders { get; } } } diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/ComputerShopDatabase.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/ComputerShopDatabase.cs index 5542817..4ec023b 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/ComputerShopDatabase.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/ComputerShopDatabase.cs @@ -28,7 +28,7 @@ namespace ComputerShopDatabaseImplement public virtual DbSet SupplyOrders { set; get; } public virtual DbSet EquipmentReceivings { set; get; } public virtual DbSet ComponentSupplies { set; get; } - public virtual DbSet AssemblyOrders { set; get; } + public virtual DbSet OrderComponents { set; get; } public virtual DbSet Clients { set; get; } } -} +} \ No newline at end of file diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/EquipmentReceivingStorage.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/EquipmentReceivingStorage.cs index 5f885cb..55b0341 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/EquipmentReceivingStorage.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/EquipmentReceivingStorage.cs @@ -34,8 +34,7 @@ namespace ComputerShopDatabaseImplement.Implements return null; } using var context = new ComputerShopDatabase(); - return context.EquipmentReceivings - .FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + return context.EquipmentReceivings.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; } public List GetFilteredList(EquipmentReceivingSearchModel model) diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/OrderStorage.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/OrderStorage.cs index fbb7d7a..4c5d85c 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/OrderStorage.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Implements/OrderStorage.cs @@ -35,54 +35,57 @@ namespace ComputerShopDatabaseImplement.Implements return null; } using var context = new ComputerShopDatabase(); - return context.Orders - .FirstOrDefault(x => - (model.Id.HasValue && x.Id == model.Id)) - ?.GetViewModel; + return context.Orders.FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id)?.GetViewModel; } public List GetFilteredList(OrderSearchModel model) { - using var context = new ComputerShopDatabase(); - if (model.ClientId.HasValue) + + if (!model.ClientId.HasValue) { - return context.Orders - .Include(x => x.Assemblies) - .Include(x => x.Client) + return new(); + } + using var context = new ComputerShopDatabase(); + if (model.DateFrom.HasValue & model.DateTo.HasValue) + { + return context.Orders + .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) + .Include(x => x.OrderComponents).Include(x => x.Client) + .Select(x => x.GetViewModel) + .ToList(); + } + + return context.Orders + .Include(x => x.Components) + .ThenInclude(x => x.Component) .Where(x => x.ClientId == model.ClientId) .Select(x => x.GetViewModel) .ToList(); - } - - return context.Orders - .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) - .Include(x => x.Assemblies).Include(x => x.Client) - .Select(x => x.GetViewModel) - .ToList(); + } public List GetFullList() { using var context = new ComputerShopDatabase(); return context.Orders - .Include(x => x.Assemblies).Include(x => x.Client) + .Include(x => x.OrderComponents).Include(x => x.Client) .Select(x => x.GetViewModel) .ToList(); } public OrderViewModel? Insert(OrderBindingModel model) { - var newOrder = Order.Create(model); + using var context = new ComputerShopDatabase(); + var newOrder = Order.Create(context, model); if (newOrder == null) { return null; } - using var context = new ComputerShopDatabase(); context.Orders.Add(newOrder); context.SaveChanges(); - return context.Orders.Include(x => x.Assemblies).Include(x => x.Client).FirstOrDefault(x => x.Id == newOrder.Id)?.GetViewModel; - } + return newOrder.GetViewModel; + } public OrderViewModel? Update(OrderBindingModel model) { @@ -94,7 +97,23 @@ namespace ComputerShopDatabaseImplement.Implements } order.Update(model); context.SaveChanges(); - return context.Orders.Include(x => x.Assemblies).FirstOrDefault(x => x.Id == order.Id)?.GetViewModel; + return order.GetViewModel; } + + public ComponentViewModel? GetComponentsByOrder(OrderSearchModel model) + { + using var context = new ComputerShopDatabase(); + var order_components = context.OrderComponents.FirstOrDefault(x => x.OrderId == model.Id); + if (order_components == null) + { + return null; + } + var components = context.Components.FirstOrDefault(x => x.Id == order_components.Id); + if (components == null) + { + return null; + } + return components.GetViewModel; + } } } diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240516194435_1605.Designer.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240516194435_1605.Designer.cs new file mode 100644 index 0000000..6ace50d --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240516194435_1605.Designer.cs @@ -0,0 +1,550 @@ +// +using System; +using ComputerShopDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + [DbContext(typeof(ComputerShopDatabase))] + [Migration("20240516194435_1605")] + partial class _1605 + { + /// + 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("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Assemblies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AssemblyId"); + + b.HasIndex("ComponentId"); + + b.ToTable("AssemblyComponents"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("SupplyId"); + + b.ToTable("ComponentSupplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("EquipmentReceivings"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderAssembly", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AssemblyId"); + + b.HasIndex("OrderId"); + + b.ToTable("AssemblyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComponentId"); + + b.ToTable("Purchases"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("ReceivingId") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComponentId"); + + b.HasIndex("ReceivingId"); + + b.ToTable("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("SupplyId"); + + b.ToTable("SupplyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Assemblies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly") + .WithMany("Components") + .HasForeignKey("AssemblyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("AssemblyComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assembly"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", null) + .WithMany("Components") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Supplies") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Components") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("EquipmentReceivings") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderAssembly", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly") + .WithMany() + .HasForeignKey("AssemblyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany("Assemblies") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assembly"); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Purchases") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Purchases") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Supplies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany() + .HasForeignKey("ComponentId"); + + b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", "Receiving") + .WithMany("Supplies") + .HasForeignKey("ReceivingId"); + + b.Navigation("Client"); + + b.Navigation("Component"); + + b.Navigation("Receiving"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany("SupplyOrders") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Orders") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Navigation("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Navigation("Assemblies"); + + b.Navigation("Components"); + + b.Navigation("EquipmentReceivings"); + + b.Navigation("Orders"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Navigation("AssemblyComponents"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Navigation("Assemblies"); + + b.Navigation("SupplyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240516194435_1605.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240516194435_1605.cs new file mode 100644 index 0000000..6b64a64 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240516194435_1605.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + /// + public partial class _1605 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517100456_component.Designer.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517100456_component.Designer.cs new file mode 100644 index 0000000..7664f49 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517100456_component.Designer.cs @@ -0,0 +1,548 @@ +// +using System; +using ComputerShopDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + [DbContext(typeof(ComputerShopDatabase))] + [Migration("20240517100456_component")] + partial class component + { + /// + 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("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Assemblies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AssemblyId"); + + b.HasIndex("ComponentId"); + + b.ToTable("AssemblyComponents"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("SupplyId"); + + b.ToTable("ComponentSupplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("EquipmentReceivings"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("OrderId"); + + b.ToTable("AssemblyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComponentId"); + + b.ToTable("Purchases"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("ReceivingId") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("OrderId"); + + b.HasIndex("ReceivingId"); + + b.ToTable("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("SupplyId"); + + b.ToTable("SupplyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Assemblies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly") + .WithMany("Components") + .HasForeignKey("AssemblyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("AssemblyComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assembly"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", null) + .WithMany("Components") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Supplies") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Components") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("EquipmentReceivings") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany() + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany("Components") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Purchases") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Purchases") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Supplies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", null) + .WithMany("Supplies") + .HasForeignKey("OrderId"); + + b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", "Receiving") + .WithMany("Supplies") + .HasForeignKey("ReceivingId"); + + b.Navigation("Client"); + + b.Navigation("Receiving"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany() + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Orders") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Navigation("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Navigation("Assemblies"); + + b.Navigation("Components"); + + b.Navigation("EquipmentReceivings"); + + b.Navigation("Orders"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Navigation("AssemblyComponents"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Navigation("Components"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517100456_component.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517100456_component.cs new file mode 100644 index 0000000..c7fa5f8 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517100456_component.cs @@ -0,0 +1,104 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + /// + public partial class component : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_AssemblyOrders_Assemblies_AssemblyId", + table: "AssemblyOrders"); + + migrationBuilder.DropForeignKey( + name: "FK_Supplies_Components_ComponentId", + table: "Supplies"); + + migrationBuilder.RenameColumn( + name: "ComponentId", + table: "Supplies", + newName: "OrderId"); + + migrationBuilder.RenameIndex( + name: "IX_Supplies_ComponentId", + table: "Supplies", + newName: "IX_Supplies_OrderId"); + + migrationBuilder.RenameColumn( + name: "AssemblyId", + table: "AssemblyOrders", + newName: "ComponentId"); + + migrationBuilder.RenameIndex( + name: "IX_AssemblyOrders_AssemblyId", + table: "AssemblyOrders", + newName: "IX_AssemblyOrders_ComponentId"); + + migrationBuilder.AddForeignKey( + name: "FK_AssemblyOrders_Components_ComponentId", + table: "AssemblyOrders", + column: "ComponentId", + principalTable: "Components", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Supplies_Orders_OrderId", + table: "Supplies", + column: "OrderId", + principalTable: "Orders", + principalColumn: "Id"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_AssemblyOrders_Components_ComponentId", + table: "AssemblyOrders"); + + migrationBuilder.DropForeignKey( + name: "FK_Supplies_Orders_OrderId", + table: "Supplies"); + + migrationBuilder.RenameColumn( + name: "OrderId", + table: "Supplies", + newName: "ComponentId"); + + migrationBuilder.RenameIndex( + name: "IX_Supplies_OrderId", + table: "Supplies", + newName: "IX_Supplies_ComponentId"); + + migrationBuilder.RenameColumn( + name: "ComponentId", + table: "AssemblyOrders", + newName: "AssemblyId"); + + migrationBuilder.RenameIndex( + name: "IX_AssemblyOrders_ComponentId", + table: "AssemblyOrders", + newName: "IX_AssemblyOrders_AssemblyId"); + + migrationBuilder.AddForeignKey( + name: "FK_AssemblyOrders_Assemblies_AssemblyId", + table: "AssemblyOrders", + column: "AssemblyId", + principalTable: "Assemblies", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Supplies_Components_ComponentId", + table: "Supplies", + column: "ComponentId", + principalTable: "Components", + principalColumn: "Id"); + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517104817_component1.Designer.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517104817_component1.Designer.cs new file mode 100644 index 0000000..9eba960 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517104817_component1.Designer.cs @@ -0,0 +1,548 @@ +// +using System; +using ComputerShopDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + [DbContext(typeof(ComputerShopDatabase))] + [Migration("20240517104817_component1")] + partial class component1 + { + /// + 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("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Assemblies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AssemblyId"); + + b.HasIndex("ComponentId"); + + b.ToTable("AssemblyComponents"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("SupplyId"); + + b.ToTable("ComponentSupplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("EquipmentReceivings"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("OrderId"); + + b.ToTable("AssemblyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComponentId"); + + b.ToTable("Purchases"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("ReceivingId") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("OrderId"); + + b.HasIndex("ReceivingId"); + + b.ToTable("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("SupplyId"); + + b.ToTable("SupplyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Assemblies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly") + .WithMany("Components") + .HasForeignKey("AssemblyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("AssemblyComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assembly"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", null) + .WithMany("Components") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Supplies") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Components") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("EquipmentReceivings") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany() + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany("Components") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Purchases") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Purchases") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Supplies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", null) + .WithMany("Supplies") + .HasForeignKey("OrderId"); + + b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", "Receiving") + .WithMany("Supplies") + .HasForeignKey("ReceivingId"); + + b.Navigation("Client"); + + b.Navigation("Receiving"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany() + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Orders") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Navigation("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Navigation("Assemblies"); + + b.Navigation("Components"); + + b.Navigation("EquipmentReceivings"); + + b.Navigation("Orders"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Navigation("AssemblyComponents"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Navigation("Components"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517104817_component1.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517104817_component1.cs new file mode 100644 index 0000000..de0ce86 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517104817_component1.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + /// + public partial class component1 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517112046_component2.Designer.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517112046_component2.Designer.cs new file mode 100644 index 0000000..04c5bd8 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517112046_component2.Designer.cs @@ -0,0 +1,548 @@ +// +using System; +using ComputerShopDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + [DbContext(typeof(ComputerShopDatabase))] + [Migration("20240517112046_component2")] + partial class component2 + { + /// + 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("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Assemblies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AssemblyId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AssemblyId"); + + b.HasIndex("ComponentId"); + + b.ToTable("AssemblyComponents"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("SupplyId"); + + b.ToTable("ComponentSupplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("EquipmentReceivings"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderComponents"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComponentId"); + + b.ToTable("Purchases"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("ReceivingId") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("OrderId"); + + b.HasIndex("ReceivingId"); + + b.ToTable("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("SupplyId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("SupplyId"); + + b.ToTable("SupplyOrders"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Assemblies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly") + .WithMany("Components") + .HasForeignKey("AssemblyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("AssemblyComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assembly"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", null) + .WithMany("Components") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ComponentSupply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Supplies") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Components") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("EquipmentReceivings") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany() + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany("Components") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Purchases") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany("Purchases") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Component"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") + .WithMany("Supplies") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Order", null) + .WithMany("Supplies") + .HasForeignKey("OrderId"); + + b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", "Receiving") + .WithMany("Supplies") + .HasForeignKey("ReceivingId"); + + b.Navigation("Client"); + + b.Navigation("Receiving"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => + { + b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") + .WithMany() + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerShopDatabaseImplement.Models.Supply", "Supply") + .WithMany("Orders") + .HasForeignKey("SupplyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Supply"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => + { + b.Navigation("Components"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => + { + b.Navigation("Assemblies"); + + b.Navigation("Components"); + + b.Navigation("EquipmentReceivings"); + + b.Navigation("Orders"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b => + { + b.Navigation("AssemblyComponents"); + + b.Navigation("Purchases"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.EquipmentReceiving", b => + { + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => + { + b.Navigation("Components"); + + b.Navigation("Supplies"); + }); + + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517112046_component2.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517112046_component2.cs new file mode 100644 index 0000000..6d8ae03 --- /dev/null +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/20240517112046_component2.cs @@ -0,0 +1,49 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputerShopDatabaseImplement.Migrations +{ + /// + public partial class component2 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "OrderComponents", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), + OrderId = table.Column(nullable: false), + ComponentId = table.Column(nullable: false), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OrderComponents", x => x.Id); + table.ForeignKey( + name: "FK_OrderComponents_Orders_OrderId", + column: x => x.OrderId, + principalTable: "Orders", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_OrderComponents_Components_ComponentId", + column: x => x.ComponentId, + principalTable: "Components", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "OrderComponents"); + } + } +} diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/ComputerShopDatabaseModelSnapshot.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/ComputerShopDatabaseModelSnapshot.cs index c99a233..6c64199 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/ComputerShopDatabaseModelSnapshot.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Migrations/ComputerShopDatabaseModelSnapshot.cs @@ -203,7 +203,7 @@ namespace ComputerShopDatabaseImplement.Migrations b.ToTable("Orders"); }); - modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderAssembly", b => + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -211,7 +211,7 @@ namespace ComputerShopDatabaseImplement.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("AssemblyId") + b.Property("ComponentId") .HasColumnType("int"); b.Property("Count") @@ -222,11 +222,11 @@ namespace ComputerShopDatabaseImplement.Migrations b.HasKey("Id"); - b.HasIndex("AssemblyId"); + b.HasIndex("ComponentId"); b.HasIndex("OrderId"); - b.ToTable("AssemblyOrders"); + b.ToTable("OrderComponents"); }); modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Purchase", b => @@ -282,15 +282,15 @@ namespace ComputerShopDatabaseImplement.Migrations b.Property("ClientId") .HasColumnType("int"); - b.Property("ComponentId") - .HasColumnType("int"); - b.Property("DateCreate") .HasColumnType("datetime2"); b.Property("DateImplement") .HasColumnType("datetime2"); + b.Property("OrderId") + .HasColumnType("int"); + b.Property("ReceivingId") .HasColumnType("int"); @@ -301,7 +301,7 @@ namespace ComputerShopDatabaseImplement.Migrations b.HasIndex("ClientId"); - b.HasIndex("ComponentId"); + b.HasIndex("OrderId"); b.HasIndex("ReceivingId"); @@ -405,28 +405,30 @@ namespace ComputerShopDatabaseImplement.Migrations modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => { - b.HasOne("ComputerShopDatabaseImplement.Models.Client", null) + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") .WithMany("Orders") .HasForeignKey("ClientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("Client"); }); - modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderAssembly", b => + modelBuilder.Entity("ComputerShopDatabaseImplement.Models.OrderComponent", b => { - b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly") - .WithMany("Orders") - .HasForeignKey("AssemblyId") + b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") + .WithMany() + .HasForeignKey("ComponentId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") - .WithMany("Assemblies") + .WithMany("Components") .HasForeignKey("OrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.Navigation("Assembly"); + b.Navigation("Component"); b.Navigation("Order"); }); @@ -452,21 +454,21 @@ namespace ComputerShopDatabaseImplement.Migrations modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => { - b.HasOne("ComputerShopDatabaseImplement.Models.Client", null) + b.HasOne("ComputerShopDatabaseImplement.Models.Client", "Client") .WithMany("Supplies") .HasForeignKey("ClientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component") - .WithMany() - .HasForeignKey("ComponentId"); + b.HasOne("ComputerShopDatabaseImplement.Models.Order", null) + .WithMany("Supplies") + .HasForeignKey("OrderId"); b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", "Receiving") .WithMany("Supplies") .HasForeignKey("ReceivingId"); - b.Navigation("Component"); + b.Navigation("Client"); b.Navigation("Receiving"); }); @@ -474,7 +476,7 @@ namespace ComputerShopDatabaseImplement.Migrations modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b => { b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order") - .WithMany("SupplyOrders") + .WithMany() .HasForeignKey("OrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -493,8 +495,6 @@ namespace ComputerShopDatabaseImplement.Migrations modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b => { b.Navigation("Components"); - - b.Navigation("Orders"); }); modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Client", b => @@ -528,9 +528,9 @@ namespace ComputerShopDatabaseImplement.Migrations modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b => { - b.Navigation("Assemblies"); + b.Navigation("Components"); - b.Navigation("SupplyOrders"); + b.Navigation("Supplies"); }); modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Supply", b => diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Assembly.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Assembly.cs index d2af51f..19e133b 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Assembly.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Assembly.cs @@ -22,7 +22,6 @@ namespace ComputerShopDatabaseImplement.Models [Required] public int ClientId { get; private set; } private Dictionary? _assemblyComponents = null; - [NotMapped] public Dictionary AssemblyComponents { get @@ -38,8 +37,6 @@ namespace ComputerShopDatabaseImplement.Models } public virtual List Components { get; set; } = new(); - [ForeignKey("AssemblyId")] - public virtual List Orders { get; set; } = new(); public virtual Client Client { get; set; } public static Assembly Create(ComputerShopDatabase context, AssemblyBindingModel model) { @@ -55,12 +52,6 @@ namespace ComputerShopDatabaseImplement.Models Component = context.Components.First(y => y.Id == x.Key), Count = x.Value.Item2 }).ToList(), - Orders = model.AssemblyOrders.Select(x => new - OrderAssembly - { - Order = context.Orders.First(y => y.Id == x.Key), - Count = x.Value.Item2 - }).ToList() }; } public void Update(AssemblyBindingModel model) diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Component.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Component.cs index 6be527c..1866909 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Component.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Component.cs @@ -25,7 +25,7 @@ namespace ComputerShopDatabaseImplement.Models [ForeignKey("ComponentId")] public virtual List Purchases { get; set; } = new(); [ForeignKey("ComponentId")] - public virtual List Supplies { get; set; } = new(); + public virtual List Supplies { get; set; } = new(); public static Component? Create(ComponentBindingModel model) { if (model == null) diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Order.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Order.cs index f1f867b..05e3b43 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Order.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Order.cs @@ -23,37 +23,46 @@ namespace ComputerShopDatabaseImplement.Models public DateTime DateCreate { get; private set; } = DateTime.Now; public DateTime? DateImplement { get; private set; } - [ForeignKey("OrderId")] - public virtual List? SupplyOrders { get; set; } = new(); [ForeignKey("OrderId")] - public virtual List? Assemblies { get; set; } = new(); - private Dictionary? _assemblyOrders = null; + private Dictionary? _orderComponents = null; - [NotMapped] - public Dictionary AssemblyOrders - { + public Dictionary OrderComponents + { get { - if (_assemblyOrders == null) + if (_orderComponents == null) { - _assemblyOrders = Assemblies - .ToDictionary(recPC => recPC.AssemblyId, recPC => - (recPC.Order as IOrderModel, recPC.Count)); + _orderComponents = Components + .ToDictionary(recPC => recPC.ComponentId, recPC => + (recPC.Component as IComponentModel, recPC.Count)); } - return _assemblyOrders; + return _orderComponents; } } - [Required] + [ForeignKey("OrderId")] + public virtual List Components { get; set; } = new(); + [ForeignKey("OrderId")] + public virtual List? Supplies { get; set; } = new(); + + [Required] public int ClientId { get; set; } public virtual Client? Client { get; set; } - public static Order? Create(OrderBindingModel model) + public static Order? Create(ComputerShopDatabase context, OrderBindingModel model) { if (model == null) { return null; } + var order_comp = model.OrderComponents.Select(x => new + OrderComponent + { + Component = context.Components.First(y => y.Id == x.Key), + Count = x.Value.Item2 + }).ToList(); + + return new Order() { Id = model.Id, @@ -61,7 +70,8 @@ namespace ComputerShopDatabaseImplement.Models Status = model.Status, DateCreate = model.DateCreate, DateImplement = model.DateImplement, - ClientId = model.ClientId + ClientId = model.ClientId, + Components = order_comp }; } @@ -81,6 +91,7 @@ namespace ComputerShopDatabaseImplement.Models Status = Status, DateCreate = DateCreate, DateImplement = DateImplement, + OrderComponents = OrderComponents, ClientId = ClientId }; } diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/OrderAssembly.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/OrderComponent.cs similarity index 66% rename from ComputerShopProvider/ComputerShopDatabaseImplement/Models/OrderAssembly.cs rename to ComputerShopProvider/ComputerShopDatabaseImplement/Models/OrderComponent.cs index 1a15340..c004464 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/OrderAssembly.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/OrderComponent.cs @@ -7,16 +7,16 @@ using System.Threading.Tasks; namespace ComputerShopDatabaseImplement.Models { - internal class OrderAssembly + internal class OrderComponent { public int Id { get; set; } [Required] - public int AssemblyId { get; set; } - [Required] - public int OrderId { get; set; } + public int OrderId { get; set; } [Required] + public int ComponentId { get; set; } + [Required] public int Count { get; set; } public virtual Order Order { get; set; } = new(); - public virtual Assembly Assembly { get; set; } = new(); + public virtual Component Component { get; set; } = new(); } } diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Supply.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Supply.cs index 6f0dca8..2fbd293 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Supply.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/Supply.cs @@ -26,8 +26,6 @@ namespace ComputerShopDatabaseImplement.Models public virtual Client? Client { get; set; } public int? ReceivingId { get; set; } public virtual EquipmentReceiving? Receiving { get; set; } - public int? ComponentId { get; set; } - public virtual Component? Component { get; set; } private Dictionary? _supplyOrders = null; @@ -59,7 +57,6 @@ namespace ComputerShopDatabaseImplement.Models DateCreate = model.DateCreate, DateImplement = model.DateImplement, ReceivingId = model.ReceivingId, - ComponentId = model.ComponentId, Orders = model.SupplyOrders.Select(x => new SupplyOrder { @@ -85,7 +82,6 @@ namespace ComputerShopDatabaseImplement.Models SupplyOrders = SupplyOrders, ReceivingId = ReceivingId, ClientId = ClientId, - ComponentId = ComponentId, }; public void UpdateOrders(ComputerShopDatabase context, SupplyBindingModel model) { diff --git a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/SupplyOrder.cs b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/SupplyOrder.cs index 73fe7f4..30e75cd 100644 --- a/ComputerShopProvider/ComputerShopDatabaseImplement/Models/SupplyOrder.cs +++ b/ComputerShopProvider/ComputerShopDatabaseImplement/Models/SupplyOrder.cs @@ -7,16 +7,16 @@ using System.Threading.Tasks; namespace ComputerShopDatabaseImplement.Models { - internal class SupplyOrder - { - public int Id { get; set; } - [Required] - public int OrderId { get; set; } - [Required] - public int SupplyId { get; set; } - [Required] - public int Count { get; set; } - public virtual Order Order { get; set; } = new(); - public virtual Supply Supply { get; set; } = new(); - } + internal class SupplyOrder + { + public int Id { get; set; } + [Required] + public int SupplyId { get; set; } + [Required] + public int OrderId { get; set; } + [Required] + public int Count { get; set; } + public virtual Supply Supply { get; set; } = new(); + public virtual Order Order { get; set; } = new(); + } } diff --git a/ComputerShopProvider/ComputerShopRestApi/Controllers/ComponentController.cs b/ComputerShopProvider/ComputerShopRestApi/Controllers/ComponentController.cs index 2ae4631..36b2ddb 100644 --- a/ComputerShopProvider/ComputerShopRestApi/Controllers/ComponentController.cs +++ b/ComputerShopProvider/ComputerShopRestApi/Controllers/ComponentController.cs @@ -88,5 +88,6 @@ namespace ComputerShopRestApi.Controllers throw; } } - } + + } } diff --git a/ComputerShopProvider/ComputerShopRestApi/Controllers/OrderController.cs b/ComputerShopProvider/ComputerShopRestApi/Controllers/OrderController.cs index 7e58d5e..444d8a8 100644 --- a/ComputerShopProvider/ComputerShopRestApi/Controllers/OrderController.cs +++ b/ComputerShopProvider/ComputerShopRestApi/Controllers/OrderController.cs @@ -3,6 +3,9 @@ using ComputerShopContracts.BusinessLogicContracts; using ComputerShopContracts.SearchModels; using ComputerShopContracts.StorageContracts; using ComputerShopContracts.ViewModels; +using ComputerShopDatabaseImplement.Implements; +using DocumentFormat.OpenXml.Bibliography; +using DocumentFormat.OpenXml.Drawing.Charts; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.Reflection; @@ -17,10 +20,12 @@ namespace ComputerShopRestApi.Controllers private readonly IOrderLogic _order; private readonly IOrderStorage _orderStorage; - public OrderController(ILogger logger, IOrderLogic order, ISupplyLogic supply) + public OrderController(ILogger logger, IOrderLogic order, ISupplyLogic supply, IOrderStorage orderStorage) { _logger = logger; _order = order; + _orderStorage = orderStorage; + } [HttpGet] @@ -38,7 +43,22 @@ namespace ComputerShopRestApi.Controllers } } - [HttpGet] + [HttpGet] + public List? GetOrder(int id) + { + + try + { + return _order.ReadList(new OrderSearchModel { Id = id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения заказа"); + throw; + } + } + + [HttpGet] public List? GetOrders(int clientId) { try @@ -65,7 +85,7 @@ namespace ComputerShopRestApi.Controllers throw; } } - [HttpDelete] + [HttpPost] public void DeleteOrder(OrderBindingModel model) { try @@ -127,6 +147,7 @@ namespace ComputerShopRestApi.Controllers try { var order = _orderStorage.GetElement(new() { Id = id }); + OrderBindingModel model = new OrderBindingModel() { Id = id, @@ -138,17 +159,17 @@ namespace ComputerShopRestApi.Controllers } catch (Exception ex) { - _logger.LogError(ex, "Ошибка изменения закупки"); + _logger.LogError(ex, "Ошибка изменения получения техники"); throw; } } [HttpPost] - public void AddAssembly(Tuple model) + public void AddComponent(Tuple model) { try { - _order.AddAssembly(model.Item1, model.Item2, model.Item3); + _order.AddComponent(model.Item1, model.Item2, model.Item3); } catch (Exception ex) { @@ -156,5 +177,32 @@ namespace ComputerShopRestApi.Controllers throw; } } + + [HttpPost] + public void EditOrder(OrderBindingModel model) + { + try + { + _order.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления заказа."); + throw; + } + } + [HttpGet] + public ComponentViewModel? GetComponentsByOrder(int orderId) + { + try + { + return _orderStorage.GetComponentsByOrder(new OrderSearchModel(){ Id = orderId }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения компонента по orderid={Id}", orderId); + throw; + } + } } } diff --git a/ComputerShopProvider/OrdererClientApp/Controllers/HomeController.cs b/ComputerShopProvider/OrdererClientApp/Controllers/HomeController.cs index be81364..842600e 100644 --- a/ComputerShopProvider/OrdererClientApp/Controllers/HomeController.cs +++ b/ComputerShopProvider/OrdererClientApp/Controllers/HomeController.cs @@ -1,11 +1,14 @@ using ComputerShopContracts.BindingModels; using ComputerShopContracts.SearchModels; using ComputerShopContracts.ViewModels; +using DocumentFormat.OpenXml.Drawing.Charts; using DocumentFormat.OpenXml.Office2010.Excel; +using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Mvc; using OrdererClientApp.Models; using System.ComponentModel; using System.Diagnostics; +using System.Reflection; namespace OrdererClientApp.Controllers { @@ -18,7 +21,16 @@ namespace OrdererClientApp.Controllers _logger = logger; } - public IActionResult Index() + public IActionResult Index() + { + if (APIClient.Client == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/equipmentreceiving/getreceivings?clientId={APIClient.Client.Id}")); + } + + public IActionResult Receivings() { if (APIClient.Client == null) { @@ -33,7 +45,7 @@ namespace OrdererClientApp.Controllers { return Redirect("~/Home/Enter"); } - return View(APIClient.GetRequest>($"api/order/GetOrderList?clientId={APIClient.Client.Id}")); + return View(APIClient.GetRequest>($"api/order/getorderlist?clientId={APIClient.Client.Id}")); } public IActionResult Supply() { @@ -76,7 +88,7 @@ namespace OrdererClientApp.Controllers APIClient.Client.ClientFIO = fio; APIClient.Client.Email = login; APIClient.Client.Password = password; - Response.Redirect("Index"); + Response.Redirect("Receivings"); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] @@ -103,7 +115,7 @@ namespace OrdererClientApp.Controllers { throw new Exception("Неверный логин/пароль"); } - Response.Redirect("Index"); + Response.Redirect("Receivings"); } [HttpGet] @@ -142,7 +154,7 @@ namespace OrdererClientApp.Controllers { ClientId = APIClient.Client.Id }); - Response.Redirect("Index"); + Response.Redirect("Receivings"); } [HttpPost] @@ -153,82 +165,91 @@ namespace OrdererClientApp.Controllers throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } APIClient.PostRequest($"api/equipmentreceiving/setfinish?id={id}", id); - Response.Redirect("Index"); + Response.Redirect("Receivings"); } [HttpPost] - public void DeleteReceiving(int receiving) + public void DeleteReceiving(int id) { if (APIClient.Client == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } - APIClient.PostRequest($"api/equipmentreceiving/deletereceiving?id={receiving}", receiving); - Response.Redirect("Index"); + APIClient.PostRequest($"api/equipmentreceiving/deletereceiving?id={id}", id); + Response.Redirect("Receivings"); } [HttpGet] public IActionResult CreateOrder() { - return View(); + ViewBag.Components = APIClient.GetRequest>($"api/component/getcomponentlist?clientId={APIClient.Client.Id}"); + return View(); } [HttpPost] - public void CreateOrder(int sum) + public void CreateOrder(int sum, int component_id, int amount) { if (APIClient.Client == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } - APIClient.PostRequest("api/order/createorder", new OrderBindingModel + OrderBindingModel order = new OrderBindingModel { ClientId = APIClient.Client.Id, Sum = sum - }); - Response.Redirect("Order"); + }; + + APIClient.PostRequest("api/order/createorder", order); + APIClient.PostRequest("api/order/addcomponent", Tuple.Create( + new OrderSearchModel() { Id = order.Id }, + new ComponentSearchModel() { Id = component_id }, + amount + )); + + Response.Redirect("Order"); } [HttpGet] public IActionResult DeleteOrder() { - ViewBag.Components = APIClient.GetRequest>("api/main/getorderlist"); + ViewBag.Orders = APIClient.GetRequest>($"api/main/getorderlist/?clientId={APIClient.Client.Id}"); return View(); } - [HttpDelete] - public void DeleteOrder(int order) + [HttpPost] + public void DeleteOrder(int id) { if (APIClient.Client == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } - APIClient.PostRequest("api/order/deleteorder", new ComponentBindingModel - { - Id = order - }); - Response.Redirect("Index"); + APIClient.PostRequest($"api/order/deleteorder", new ComponentBindingModel + { + Id = id + }); + Response.Redirect("Order"); } - public IActionResult AddAssembly() + public IActionResult AddComponent() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } - ViewBag.Assemblies = APIClient.GetRequest>($"api/assembly/getassemblylist?clientId={APIClient.Client.Id}"); + ViewBag.Components = APIClient.GetRequest>($"api/component/getcomponentlist?clientId={APIClient.Client.Id}"); ViewBag.Orders = APIClient.GetRequest>($"api/order/getorderlist?clientId={APIClient.Client.Id}"); return View(); } [HttpPost] - public void AddAssembly(int order, int assembly, int amount) + public void AddComponent(int order, int component, int amount) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } - APIClient.PostRequest("api/order/AddAssembly", Tuple.Create( + APIClient.PostRequest("api/order/AddComponent", Tuple.Create( new OrderSearchModel() { Id = order }, - new AssemblySearchModel() { Id = assembly }, + new ComponentSearchModel() { Id = component }, amount )); Response.Redirect("Order"); @@ -242,8 +263,58 @@ namespace OrdererClientApp.Controllers throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } APIClient.PostRequest($"api/order/finishorder?id={id}", id); - Response.Redirect("order"); + Response.Redirect("Order"); } + + [HttpGet] + public IActionResult EditOrder(int id) + { + if (APIClient.Client == null) + { + return Redirect("~/Home/Enter"); + } + var orderViewModel = APIClient.GetRequest>($"api/order/getorder?id={id}"); + var componentViewModels = APIClient.GetRequest>($"api/order/getcomponentsbyorder?orderid={id}"); + ViewBag.Order = orderViewModel; + ViewBag.Components = componentViewModels; + + var list = new List + { + orderViewModel, + componentViewModels + }; + + return View(list); + } + + [HttpPost] + public void EditOrder(int order, double cost, int component = -1, int amount = -1) + { + if (APIClient.Client == null) + { + throw new Exception("Необходима авторизация"); + } + if (cost < 0) + { + throw new Exception("Стоимость не может быть меньше нуля"); + } + + if (component >= 0 & amount > 1) + { + APIClient.PostRequest("api/order/AddComponent", Tuple.Create( + new OrderSearchModel() { Id = order }, + new ComponentSearchModel() { Id = component }, + amount + )); + } + APIClient.PostRequest($"api/order/editorder", new OrderBindingModel + { + Id = component, + Sum = cost, + ClientId = APIClient.Client.Id + }); + } + [HttpPost] public void DeliveryOrder(int id) { @@ -252,7 +323,7 @@ namespace OrdererClientApp.Controllers throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } APIClient.PostRequest($"api/order/deliveryorder?id={id}", id); - Response.Redirect("order"); + Response.Redirect("Order"); } [HttpPost] public void TakeOrderInWork(int id) @@ -262,7 +333,7 @@ namespace OrdererClientApp.Controllers throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } APIClient.PostRequest($"api/order/takeorderinwork?id={id}", id); - Response.Redirect("order"); + Response.Redirect("Order"); } [HttpPost] diff --git a/ComputerShopProvider/OrdererClientApp/Views/Home/AddAssembly.cshtml b/ComputerShopProvider/OrdererClientApp/Views/Home/AddAssembly.cshtml deleted file mode 100644 index 61f14eb..0000000 --- a/ComputerShopProvider/OrdererClientApp/Views/Home/AddAssembly.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@using ComputerShopContracts.ViewModels; -@using ComputerShopDataModels.Models; - -@{ - ViewData["Title"] = "Add Assembly To Order"; -} - -@model Dictionary - -
- -
- -
- -
-
-
- -
- -
-
-
-
Количество:
-
-
-
-
-
-
-
\ No newline at end of file diff --git a/ComputerShopProvider/OrdererClientApp/Views/Home/CreateOrder.cshtml b/ComputerShopProvider/OrdererClientApp/Views/Home/CreateOrder.cshtml index f3a7b87..419d0b9 100644 --- a/ComputerShopProvider/OrdererClientApp/Views/Home/CreateOrder.cshtml +++ b/ComputerShopProvider/OrdererClientApp/Views/Home/CreateOrder.cshtml @@ -1,17 +1,53 @@ - +@using ComputerShopContracts.ViewModels; +@using ComputerShopDataModels.Models; @{ ViewData["Title"] = "CreateOrder"; } + +@model Dictionary + + +

Создание заказа

+
+ +
+ +
+
-
Цена без учета сборок:
-
+
Количество:
+
+ + \ No newline at end of file diff --git a/ComputerShopProvider/OrdererClientApp/Views/Home/EditOrder.cshtml b/ComputerShopProvider/OrdererClientApp/Views/Home/EditOrder.cshtml new file mode 100644 index 0000000..554058f --- /dev/null +++ b/ComputerShopProvider/OrdererClientApp/Views/Home/EditOrder.cshtml @@ -0,0 +1,66 @@ +@using ComputerShopContracts.ViewModels; +@using ComputerShopDataModels.Models; + +@{ + ViewData["Title"] = "OrderEditing"; +} + +@model IEnumerable + +
+ +
+ +
+ asp-items="@(new SelectList(@ViewBag.Order, "Id", "DateCreate")) +
+
+ + + Номер заказа: + + + @foreach (var order in ViewBag.Order) + { + + @order.Id + + } + +
+
Комплектующие в заказе:
+
+ + @if (ViewBag.Components != null) + @foreach (var components in ViewBag.Components) + { + + @foreach (var component in components) + { + + if (component != null) + { + + @component.ComponentName + + } + } + + } + +
+ +
+ +
+
+ +
+
Количество:
+
+
+
+
+
+
+
diff --git a/ComputerShopProvider/OrdererClientApp/Views/Home/Order.cshtml b/ComputerShopProvider/OrdererClientApp/Views/Home/Order.cshtml index 8207fc2..0ea2332 100644 --- a/ComputerShopProvider/OrdererClientApp/Views/Home/Order.cshtml +++ b/ComputerShopProvider/OrdererClientApp/Views/Home/Order.cshtml @@ -23,7 +23,7 @@ Создать заказ

- Добавить сборки к заказу + Добавить компоненты к заказу

@@ -66,21 +66,25 @@ @Html.DisplayFor(modelItem => item.DateImplement) + + + + diff --git a/ComputerShopProvider/OrdererClientApp/Views/Home/Index.cshtml b/ComputerShopProvider/OrdererClientApp/Views/Home/Receivings.cshtml similarity index 89% rename from ComputerShopProvider/OrdererClientApp/Views/Home/Index.cshtml rename to ComputerShopProvider/OrdererClientApp/Views/Home/Receivings.cshtml index 24f36ab..cd0adb9 100644 --- a/ComputerShopProvider/OrdererClientApp/Views/Home/Index.cshtml +++ b/ComputerShopProvider/OrdererClientApp/Views/Home/Receivings.cshtml @@ -21,7 +21,7 @@

- +

-
- - -
-
-
- - -
+
+ + +
-
+ + + +
+
+
- +
@@ -64,7 +64,7 @@
- +
diff --git a/ComputerShopProvider/OrdererClientApp/Views/Shared/_Layout.cshtml b/ComputerShopProvider/OrdererClientApp/Views/Shared/_Layout.cshtml index 2936350..07a8735 100644 --- a/ComputerShopProvider/OrdererClientApp/Views/Shared/_Layout.cshtml +++ b/ComputerShopProvider/OrdererClientApp/Views/Shared/_Layout.cshtml @@ -44,7 +44,7 @@