From a45a4cc0be90e45072621eb7006441d6bcbf9fa9 Mon Sep 17 00:00:00 2001 From: Ilfedotov Date: Sat, 3 Aug 2024 23:12:04 +0400 Subject: [PATCH] bug fix --- .../BusinessLogic/ClientLogic.cs | 3 +- .../BusinessLogic/EmployeeLogic.cs | 4 +- .../AbstractSaveToExcelClient.cs | 2 +- .../AbstractSaveToExcelEmployee.cs | 2 +- .../OfficePackage/AbstractSaveToWordClient.cs | 16 +- .../AbstractSaveToWordEmployee.cs | 4 +- .../SearchModels/EmployeeSearchModel.cs | 2 +- .../Implements/EmployeeStorage.cs | 8 +- .../Implements/ProductStorage.cs | 4 +- .../20240726071024_InitMigration.Designer.cs | 288 ------------------ .../20240727090854_Init.Designer.cs | 288 ------------------ .../Migrations/20240727090854_Init.cs | 215 ------------- .../Migrations/20240727100624_Migration01.cs | 48 --- ... 20240803184800_InitMigration.Designer.cs} | 8 +- ...ion.cs => 20240803184800_InitMigration.cs} | 55 ++-- .../Migrations/DatabaseModelSnapshot.cs | 4 +- .../Controllers/EmployeeController.cs | 2 +- ElectronicsShop/ElectronicsShopRestAPI/Report | Bin 34158 -> 34813 bytes .../Controllers/HomeController.cs | 5 +- 19 files changed, 51 insertions(+), 907 deletions(-) delete mode 100644 ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.Designer.cs delete mode 100644 ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.Designer.cs delete mode 100644 ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.cs delete mode 100644 ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.cs rename ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/{20240727100624_Migration01.Designer.cs => 20240803184800_InitMigration.Designer.cs} (99%) rename ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/{20240726071024_InitMigration.cs => 20240803184800_InitMigration.cs} (93%) diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ClientLogic.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ClientLogic.cs index e594268..9bb23a6 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ClientLogic.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ClientLogic.cs @@ -111,7 +111,8 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic var element = _storage.GetElement(new ClientSearchModel { - Email = model.Email + Email = model.Email, + Passwrod = model.Password, }); if (element != null && element.ID != model.ID) { diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/EmployeeLogic.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/EmployeeLogic.cs index 79d7840..aaeb2e4 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/EmployeeLogic.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/EmployeeLogic.cs @@ -43,7 +43,7 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic { if (model == null) { throw new ArgumentNullException(nameof(model)); } - _logger.LogInformation($"ReadElement.Email:{model.Login}.ID:{model.ID}"); + _logger.LogInformation($"ReadElement.Email:{model.Email}.ID:{model.ID}"); var element = _storage.GetElement(model); if (element == null) { _logger.LogWarning("ReadElement. element not fount"); @@ -91,7 +91,7 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic { _logger.LogInformation($"Client. ID:{model.ID}.ClientFIO:{model.EmployeeFIO}.Password:{model.Password}.Email:{model.Email}."); var element = _storage.GetElement(new EmployeeSearchModel { - Login = model.Email + Email = model.Email }); if (element != null && element.ID != model.ID) { throw new InvalidOperationException("Сотрудник с таким логином уже есть"); diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelClient.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelClient.cs index 17c65c4..87fd802 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelClient.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelClient.cs @@ -31,7 +31,7 @@ namespace ElectronicsShopBusinessLogic.OfficePackage MergeCells(new ExcelMergeParameters { CellFromName = "A2", - CellToName = "H2" + CellToName = "F2" }); uint rowIndex = 3; diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelEmployee.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelEmployee.cs index 4e104d3..ce3dc86 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelEmployee.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToExcelEmployee.cs @@ -32,7 +32,7 @@ namespace ElectronicsShopBusinessLogic.OfficePackage MergeCells(new ExcelMergeParameters { CellFromName = "A2", - CellToName = "H2" + CellToName = "K2" }); uint rowIndex = 3; diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs index f111e34..c861fce 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs @@ -54,16 +54,6 @@ namespace ElectronicsShopBusinessLogic.OfficePackage } }); - CreateParagraph(new WordParagraph - { - Texts = new List<(string, WordTextProperties)> { ("Номер товара Товар Цена Количество Статья затрат", new WordTextProperties { Bold = false, Size = "24", }) }, - TextProperties = new WordTextProperties - { - Size = "24", - JustificationType = WordJustificationType.Both - } - }); - double sum = 0; foreach (var products in info.Products) { @@ -72,9 +62,9 @@ namespace ElectronicsShopBusinessLogic.OfficePackage sum += products.Price * products.count; CreateParagraph(new WordParagraph { - Texts = new List<(string, WordTextProperties)> { ($"{products.ID.ToString()} {products.ProductName.ToString()} " + - $"{ (products.Price * products.count).ToString()} {products.count.ToString()} " + - $"{products.CostItemName.ToString()}", new WordTextProperties { Bold = false, Size = "24", }) }, + Texts = new List<(string, WordTextProperties)> { ($"ID товара:{products.ID.ToString()}/Название:{products.ProductName.ToString()}/" + + $"Стоимость:{(products.Price * products.count).ToString()}/Количество:{products.count.ToString()}/" + + $"Статья_затрат:{products.CostItemName.ToString()}", new WordTextProperties { Bold = false, Size = "24", }) }, TextProperties = new WordTextProperties { Size = "24", diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordEmployee.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordEmployee.cs index 0718557..3e87bb0 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordEmployee.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToWordEmployee.cs @@ -38,13 +38,13 @@ namespace ElectronicsShopBusinessLogic.OfficePackage Texts = new List<(string, WordTextProperties)> { (data.ProductName, new WordTextProperties { Bold = true, Size = "24", }) }, TextProperties = new WordTextProperties { Size = "24", - JustificationType = WordJustificationType.Both + JustificationType = WordJustificationType.Center } }); foreach (var paymeant in data.Values) { CreateParagraph(new WordParagraph { Texts = new List<(string, WordTextProperties)> { ($"Оплата №:{paymeant.PaymeantID} статус:{paymeant.PaymeantStatus}", - new WordTextProperties { Bold = true, Size = "24", }) }, + new WordTextProperties { Bold = false, Size = "24", }) }, TextProperties = new WordTextProperties { Size = "24", JustificationType = WordJustificationType.Both diff --git a/ElectronicsShop/ElectronicsShopContracts/SearchModels/EmployeeSearchModel.cs b/ElectronicsShop/ElectronicsShopContracts/SearchModels/EmployeeSearchModel.cs index 1387df1..aaf915f 100644 --- a/ElectronicsShop/ElectronicsShopContracts/SearchModels/EmployeeSearchModel.cs +++ b/ElectronicsShop/ElectronicsShopContracts/SearchModels/EmployeeSearchModel.cs @@ -11,7 +11,7 @@ namespace ElectronicsShopContracts.SearchModels { public int? ID { get; set; } public string? EmployeFIO { get; set; } - public string? Login { get; set; } + public string? Email { get; set; } public string? Password { get; set; } } } diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/EmployeeStorage.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/EmployeeStorage.cs index 0003bce..39ffdcf 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/EmployeeStorage.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/EmployeeStorage.cs @@ -52,13 +52,13 @@ namespace ElectronicsShopDataBaseImplement.Implements return context.Employees .FirstOrDefault(x => model.ID.HasValue && x.ID == model.ID)?.GetViewModel; } - else if (!string.IsNullOrEmpty(model.Login) && !string.IsNullOrEmpty(model.Password)) { + else if (!string.IsNullOrEmpty(model.Email) && !string.IsNullOrEmpty(model.Password)) { return context.Employees - .FirstOrDefault(x => (x.Email == model.Login && x.Password == model.Password)) + .FirstOrDefault(x => (x.Email == model.Email && x.Password == model.Password)) ?.GetViewModel; } return context.Employees - .FirstOrDefault(x => (x.Email == model.Login)) + .FirstOrDefault(x => (x.Email == model.Email)) ?.GetViewModel; } @@ -66,7 +66,7 @@ namespace ElectronicsShopDataBaseImplement.Implements { using var context = new Database(); return context.Employees.Where(x => x.Email - .Contains(model.Login)) + .Contains(model.Email)) .Select(x => x.GetViewModel).ToList(); } diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/ProductStorage.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/ProductStorage.cs index 124eba0..3fbd4ac 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/ProductStorage.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/ProductStorage.cs @@ -71,7 +71,9 @@ namespace ElectronicsShopDataBaseImplement.Implements .FirstOrDefault(x => model.CostItemID == x.CostItemID)?.GetViewModel; } - return null; + return context.Products + .Include(x => x.CostItem) + .FirstOrDefault(x => model.ProductName == x.ProductName)?.GetViewModel; } public List? GetFilteredList(ProductSearchModel model) diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.Designer.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.Designer.cs deleted file mode 100644 index 199ce9a..0000000 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.Designer.cs +++ /dev/null @@ -1,288 +0,0 @@ -// -using System; -using ElectronicsShopDataBaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace ElectronicsShopDataBaseImplement.Migrations -{ - [DbContext(typeof(Database))] - [Migration("20240726071024_InitMigration")] - partial class InitMigration - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.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("ElectronicsShopDataBaseImplement.Models.CostItem", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("CostNum") - .HasColumnType("int"); - - b.Property("EmployeeID") - .HasColumnType("int"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("ID"); - - b.HasIndex("EmployeeID"); - - b.ToTable("CostItems"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Employee", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("EmployeeFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("ID"); - - b.ToTable("Employees"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.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("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("ID"); - - b.HasIndex("ClientID"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("OrderID") - .HasColumnType("int"); - - b.Property("ProductID") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("OrderID"); - - b.HasIndex("ProductID"); - - b.ToTable("OrderProducts"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("ClientID") - .HasColumnType("int"); - - b.Property("DatePaymeant") - .HasColumnType("datetime2"); - - b.Property("OrderID") - .HasColumnType("int"); - - b.Property("PayOption") - .HasColumnType("int"); - - b.Property("PaymentID") - .HasColumnType("int"); - - b.Property("SumPayment") - .HasColumnType("float"); - - b.HasKey("ID"); - - b.HasIndex("PaymentID"); - - b.ToTable("Paymeants"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("CostItemID") - .HasColumnType("int"); - - b.Property("Price") - .HasColumnType("float"); - - b.Property("ProductName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("ID"); - - b.HasIndex("CostItemID"); - - b.ToTable("Products"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.CostItem", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Employee", "Employee") - .WithMany() - .HasForeignKey("EmployeeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Employee"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Client", null) - .WithMany("Orders") - .HasForeignKey("ClientID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", "_order") - .WithMany("Products") - .HasForeignKey("OrderID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("ElectronicsShopDataBaseImplement.Models.Product", "_product") - .WithMany() - .HasForeignKey("ProductID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("_order"); - - b.Navigation("_product"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", null) - .WithMany("Payments") - .HasForeignKey("PaymentID"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.CostItem", "CostItem") - .WithMany() - .HasForeignKey("CostItemID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("CostItem"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => - { - b.Navigation("Payments"); - - b.Navigation("Products"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.Designer.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.Designer.cs deleted file mode 100644 index e04ab93..0000000 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.Designer.cs +++ /dev/null @@ -1,288 +0,0 @@ -// -using System; -using ElectronicsShopDataBaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace ElectronicsShopDataBaseImplement.Migrations -{ - [DbContext(typeof(Database))] - [Migration("20240727090854_Init")] - partial class Init - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.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("ElectronicsShopDataBaseImplement.Models.CostItem", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("CostNum") - .HasColumnType("int"); - - b.Property("EmployeeID") - .HasColumnType("int"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("ID"); - - b.HasIndex("EmployeeID"); - - b.ToTable("CostItems"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Employee", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("EmployeeFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("ID"); - - b.ToTable("Employees"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.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("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("ID"); - - b.HasIndex("ClientID"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("OrderID") - .HasColumnType("int"); - - b.Property("ProductID") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("OrderID"); - - b.HasIndex("ProductID"); - - b.ToTable("OrderProducts"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("ClientID") - .HasColumnType("int"); - - b.Property("DatePaymeant") - .HasColumnType("datetime2"); - - b.Property("OrderID") - .HasColumnType("int"); - - b.Property("PayOption") - .HasColumnType("int"); - - b.Property("PaymentID") - .HasColumnType("int"); - - b.Property("SumPayment") - .HasColumnType("float"); - - b.HasKey("ID"); - - b.HasIndex("PaymentID"); - - b.ToTable("Paymeants"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - - b.Property("CostItemID") - .HasColumnType("int"); - - b.Property("Price") - .HasColumnType("float"); - - b.Property("ProductName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("ID"); - - b.HasIndex("CostItemID"); - - b.ToTable("Products"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.CostItem", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Employee", "Employee") - .WithMany() - .HasForeignKey("EmployeeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Employee"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Client", null) - .WithMany("Orders") - .HasForeignKey("ClientID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", "_order") - .WithMany("Products") - .HasForeignKey("OrderID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("ElectronicsShopDataBaseImplement.Models.Product", "_product") - .WithMany() - .HasForeignKey("ProductID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("_order"); - - b.Navigation("_product"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", null) - .WithMany("Payments") - .HasForeignKey("PaymentID"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => - { - b.HasOne("ElectronicsShopDataBaseImplement.Models.CostItem", "CostItem") - .WithMany() - .HasForeignKey("CostItemID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("CostItem"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => - { - b.Navigation("Payments"); - - b.Navigation("Products"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.cs deleted file mode 100644 index a527552..0000000 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727090854_Init.cs +++ /dev/null @@ -1,215 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace ElectronicsShopDataBaseImplement.Migrations -{ - /// - public partial class Init : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Clients", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ClientFIO = table.Column(type: "nvarchar(max)", nullable: false), - Password = table.Column(type: "nvarchar(max)", nullable: false), - Email = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Clients", x => x.ID); - }); - - migrationBuilder.CreateTable( - name: "Employees", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - EmployeeFIO = table.Column(type: "nvarchar(max)", nullable: false), - Login = table.Column(type: "nvarchar(max)", nullable: false), - Password = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Employees", x => x.ID); - }); - - migrationBuilder.CreateTable( - name: "Orders", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Sum = table.Column(type: "float", nullable: false), - ClientID = table.Column(type: "int", nullable: false), - DateCreate = table.Column(type: "datetime2", nullable: false), - Status = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Orders", x => x.ID); - table.ForeignKey( - name: "FK_Orders_Clients_ClientID", - column: x => x.ClientID, - principalTable: "Clients", - principalColumn: "ID", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CostItems", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - EmployeeID = table.Column(type: "int", nullable: false), - Name = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false), - CostNum = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CostItems", x => x.ID); - table.ForeignKey( - name: "FK_CostItems_Employees_EmployeeID", - column: x => x.EmployeeID, - principalTable: "Employees", - principalColumn: "ID", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Paymeants", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - OrderID = table.Column(type: "int", nullable: false), - ClientID = table.Column(type: "int", nullable: false), - SumPayment = table.Column(type: "float", nullable: false), - PayOption = table.Column(type: "int", nullable: false), - DatePaymeant = table.Column(type: "datetime2", nullable: false), - PaymentID = table.Column(type: "int", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Paymeants", x => x.ID); - table.ForeignKey( - name: "FK_Paymeants_Orders_PaymentID", - column: x => x.PaymentID, - principalTable: "Orders", - principalColumn: "ID"); - }); - - migrationBuilder.CreateTable( - name: "Products", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ProductName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false), - CostItemID = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Products", x => x.ID); - table.ForeignKey( - name: "FK_Products_CostItems_CostItemID", - column: x => x.CostItemID, - principalTable: "CostItems", - principalColumn: "ID", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "OrderProducts", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - OrderID = table.Column(type: "int", nullable: false), - ProductID = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_OrderProducts", x => x.Id); - table.ForeignKey( - name: "FK_OrderProducts_Orders_OrderID", - column: x => x.OrderID, - principalTable: "Orders", - principalColumn: "ID", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_OrderProducts_Products_ProductID", - column: x => x.ProductID, - principalTable: "Products", - principalColumn: "ID", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_CostItems_EmployeeID", - table: "CostItems", - column: "EmployeeID"); - - migrationBuilder.CreateIndex( - name: "IX_OrderProducts_OrderID", - table: "OrderProducts", - column: "OrderID"); - - migrationBuilder.CreateIndex( - name: "IX_OrderProducts_ProductID", - table: "OrderProducts", - column: "ProductID"); - - migrationBuilder.CreateIndex( - name: "IX_Orders_ClientID", - table: "Orders", - column: "ClientID"); - - migrationBuilder.CreateIndex( - name: "IX_Paymeants_PaymentID", - table: "Paymeants", - column: "PaymentID"); - - migrationBuilder.CreateIndex( - name: "IX_Products_CostItemID", - table: "Products", - column: "CostItemID"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "OrderProducts"); - - migrationBuilder.DropTable( - name: "Paymeants"); - - migrationBuilder.DropTable( - name: "Products"); - - migrationBuilder.DropTable( - name: "Orders"); - - migrationBuilder.DropTable( - name: "CostItems"); - - migrationBuilder.DropTable( - name: "Clients"); - - migrationBuilder.DropTable( - name: "Employees"); - } - } -} diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.cs deleted file mode 100644 index c6d155e..0000000 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace ElectronicsShopDataBaseImplement.Migrations -{ - /// - public partial class Migration01 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Paymeants_Orders_PaymentID", - table: "Paymeants"); - - migrationBuilder.DropIndex( - name: "IX_Paymeants_PaymentID", - table: "Paymeants"); - - migrationBuilder.DropColumn( - name: "PaymentID", - table: "Paymeants"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "PaymentID", - table: "Paymeants", - type: "int", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_Paymeants_PaymentID", - table: "Paymeants", - column: "PaymentID"); - - migrationBuilder.AddForeignKey( - name: "FK_Paymeants_Orders_PaymentID", - table: "Paymeants", - column: "PaymentID", - principalTable: "Orders", - principalColumn: "ID"); - } - } -} diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.Designer.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240803184800_InitMigration.Designer.cs similarity index 99% rename from ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.Designer.cs rename to ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240803184800_InitMigration.Designer.cs index b30636b..7626fbc 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240727100624_Migration01.Designer.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240803184800_InitMigration.Designer.cs @@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace ElectronicsShopDataBaseImplement.Migrations { [DbContext(typeof(Database))] - [Migration("20240727100624_Migration01")] - partial class Migration01 + [Migration("20240803184800_InitMigration")] + partial class InitMigration { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -86,11 +86,11 @@ namespace ElectronicsShopDataBaseImplement.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - b.Property("EmployeeFIO") + b.Property("Email") .IsRequired() .HasColumnType("nvarchar(max)"); - b.Property("Email") + b.Property("EmployeeFIO") .IsRequired() .HasColumnType("nvarchar(max)"); diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240803184800_InitMigration.cs similarity index 93% rename from ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.cs rename to ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240803184800_InitMigration.cs index af81095..9e13702 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240726071024_InitMigration.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240803184800_InitMigration.cs @@ -33,7 +33,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations ID = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), EmployeeFIO = table.Column(type: "nvarchar(max)", nullable: false), - Login = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), Password = table.Column(type: "nvarchar(max)", nullable: false) }, constraints: table => @@ -41,6 +41,23 @@ namespace ElectronicsShopDataBaseImplement.Migrations table.PrimaryKey("PK_Employees", x => x.ID); }); + migrationBuilder.CreateTable( + name: "Paymeants", + columns: table => new + { + ID = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + OrderID = table.Column(type: "int", nullable: false), + ClientID = table.Column(type: "int", nullable: false), + SumPayment = table.Column(type: "float", nullable: false), + PayOption = table.Column(type: "int", nullable: false), + DatePaymeant = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Paymeants", x => x.ID); + }); + migrationBuilder.CreateTable( name: "Orders", columns: table => new @@ -85,29 +102,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "Paymeants", - columns: table => new - { - ID = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - OrderID = table.Column(type: "int", nullable: false), - ClientID = table.Column(type: "int", nullable: false), - SumPayment = table.Column(type: "float", nullable: false), - PayOption = table.Column(type: "int", nullable: false), - DatePaymeant = table.Column(type: "datetime2", nullable: false), - PaymentID = table.Column(type: "int", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Paymeants", x => x.ID); - table.ForeignKey( - name: "FK_Paymeants_Orders_PaymentID", - column: x => x.PaymentID, - principalTable: "Orders", - principalColumn: "ID"); - }); - migrationBuilder.CreateTable( name: "Products", columns: table => new @@ -176,11 +170,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations table: "Orders", column: "ClientID"); - migrationBuilder.CreateIndex( - name: "IX_Paymeants_PaymentID", - table: "Paymeants", - column: "PaymentID"); - migrationBuilder.CreateIndex( name: "IX_Products_CostItemID", table: "Products", @@ -196,18 +185,18 @@ namespace ElectronicsShopDataBaseImplement.Migrations migrationBuilder.DropTable( name: "Paymeants"); - migrationBuilder.DropTable( - name: "Products"); - migrationBuilder.DropTable( name: "Orders"); migrationBuilder.DropTable( - name: "CostItems"); + name: "Products"); migrationBuilder.DropTable( name: "Clients"); + migrationBuilder.DropTable( + name: "CostItems"); + migrationBuilder.DropTable( name: "Employees"); } diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs index d79aa8d..83facd9 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs @@ -83,11 +83,11 @@ namespace ElectronicsShopDataBaseImplement.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); - b.Property("EmployeeFIO") + b.Property("Email") .IsRequired() .HasColumnType("nvarchar(max)"); - b.Property("Email") + b.Property("EmployeeFIO") .IsRequired() .HasColumnType("nvarchar(max)"); diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/EmployeeController.cs b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/EmployeeController.cs index d473994..9d5fbb8 100644 --- a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/EmployeeController.cs +++ b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/EmployeeController.cs @@ -34,7 +34,7 @@ namespace ElectronicsShopRestAPI.Controllers { public EmployeeViewModel? Login(string login, string password) { try { return _logic.ReadElement(new EmployeeSearchModel { - Login = login, + Email = login, Password = password }); } diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Report b/ElectronicsShop/ElectronicsShopRestAPI/Report index 45a2ab858913d9cb79e43900aea4855ba27a86da..3d80497dbc739468bd56944de76b972770fb5cb3 100644 GIT binary patch delta 31924 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 OW;Qr7GBE{lxc>pMwUze( diff --git a/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs b/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs index 24124fd..ec144c0 100644 --- a/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs +++ b/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs @@ -1,4 +1,5 @@ using DocumentFormat.OpenXml.Bibliography; +using DocumentFormat.OpenXml.Spreadsheet; using ElectronicsShopContracts.BindingModels; using ElectronicsShopContracts.BusinessLogicContracts; using ElectronicsShopContracts.SearchModels; @@ -78,8 +79,8 @@ namespace ElectronicsShopUserApp.Controllers { public void Enter(string email, string password) { if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) { throw new Exception(" "); - } - APIClient.Client = APIClient.GetRequset($"api/Client/Email?email={email}&password={password}"); + } + APIClient.Client = APIClient.GetRequset($"api/Client/Login?email={email}&password={password}"); if (APIClient.Client == null) { throw new Exception(" /"); }