From 7f6ae000bbb1dda240ea1c47314cba05d9b348aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= <Илья@WIN-RANNDDD> Date: Sun, 7 Apr 2024 21:10:13 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D1=81=D0=BB=D0=B8?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IceCreamShop/IceCreamShop.sln | 8 +- .../IceCreamShopDatabase.cs | 25 --- .../IceCreamShopDatabaseImplement.csproj | 23 --- .../Implements/ComponentStorage.cs | 84 --------- .../Implements/IceCreamStorage.cs | 106 ----------- .../Implements/OrderStorage.cs | 97 ---------- .../20240309192813_InitialCreate.Designer.cs | 171 ------------------ .../20240309192813_InitialCreate.cs | 125 ------------- .../IceCreamShopDatabaseModelSnapshot.cs | 168 ----------------- .../Models/Component.cs | 63 ------- .../Models/IceCream.cs | 99 ---------- .../Models/IceCreamComponent.cs | 22 --- .../Models/Order.cs | 72 -------- .../IceCreamShopView/IceCreamShopView.csproj | 5 - IceCreamShop/IceCreamShopView/Program.cs | 2 +- 15 files changed, 2 insertions(+), 1068 deletions(-) delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabase.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabaseImplement.csproj delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Implements/ComponentStorage.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Implements/IceCreamStorage.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Implements/OrderStorage.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.Designer.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Migrations/IceCreamShopDatabaseModelSnapshot.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Models/Component.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCream.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCreamComponent.cs delete mode 100644 IceCreamShop/IceCreamShopDatabaseImplement/Models/Order.cs diff --git a/IceCreamShop/IceCreamShop.sln b/IceCreamShop/IceCreamShop.sln index 84842a0..5a64334 100644 --- a/IceCreamShop/IceCreamShop.sln +++ b/IceCreamShop/IceCreamShop.sln @@ -13,9 +13,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IceCreamShopListImplement", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IceCreamShopBusinessLogic", "IceCreamShopBusinessLogic\IceCreamShopBusinessLogic.csproj", "{392488A9-9B1E-4DDA-95CE-C2FDC954DEE6}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IceCreamShopFileImplement", "IceCreamShopFileImplement\IceCreamShopFileImplement.csproj", "{5CA64E22-1AB5-4D9C-9C1E-8E336857456B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IceCreamShopDatabaseImplement", "IceCreamShopDatabaseImplement\IceCreamShopDatabaseImplement.csproj", "{095BA089-0060-4A1E-A658-9E9061A6BB39}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IceCreamShopFileImplement", "IceCreamShopFileImplement\IceCreamShopFileImplement.csproj", "{5CA64E22-1AB5-4D9C-9C1E-8E336857456B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -47,10 +45,6 @@ Global {5CA64E22-1AB5-4D9C-9C1E-8E336857456B}.Debug|Any CPU.Build.0 = Debug|Any CPU {5CA64E22-1AB5-4D9C-9C1E-8E336857456B}.Release|Any CPU.ActiveCfg = Release|Any CPU {5CA64E22-1AB5-4D9C-9C1E-8E336857456B}.Release|Any CPU.Build.0 = Release|Any CPU - {095BA089-0060-4A1E-A658-9E9061A6BB39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {095BA089-0060-4A1E-A658-9E9061A6BB39}.Debug|Any CPU.Build.0 = Debug|Any CPU - {095BA089-0060-4A1E-A658-9E9061A6BB39}.Release|Any CPU.ActiveCfg = Release|Any CPU - {095BA089-0060-4A1E-A658-9E9061A6BB39}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabase.cs b/IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabase.cs deleted file mode 100644 index 8aa8ad9..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabase.cs +++ /dev/null @@ -1,25 +0,0 @@ -using IceCreamShopDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; - -namespace IceCreamShopDatabaseImplement -{ - public class IceCreamShopDatabase : DbContext - { - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - if (optionsBuilder.IsConfigured == false) - { - optionsBuilder.UseSqlServer(@"Data Source=.\SQLEXPRESS;Initial Catalog=IceCreamShopDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); - } - base.OnConfiguring(optionsBuilder); - } - - public virtual DbSet Components { set; get; } - - public virtual DbSet IceCreams { set; get; } - - public virtual DbSet IceCreamComponents { set; get; } - - public virtual DbSet Orders { set; get; } - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabaseImplement.csproj b/IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabaseImplement.csproj deleted file mode 100644 index 8643ac1..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/IceCreamShopDatabaseImplement.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net6.0 - enable - enable - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/ComponentStorage.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Implements/ComponentStorage.cs deleted file mode 100644 index 3f4c63e..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/ComponentStorage.cs +++ /dev/null @@ -1,84 +0,0 @@ -using IceCreamShopContracts.BindingModels; -using IceCreamShopContracts.SearchModels; -using IceCreamShopContracts.StoragesContracts; -using IceCreamShopContracts.ViewModels; -using IceCreamShopDatabaseImplement.Models; - -namespace IceCreamShopDatabaseImplement.Implements -{ - public class ComponentStorage : IComponentStorage - { - public List GetFullList() - { - using var context = new IceCreamShopDatabase(); - return context.Components - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(ComponentSearchModel model) - { - if (string.IsNullOrEmpty(model.ComponentName)) - { - return new(); - } - using var context = new IceCreamShopDatabase(); - return context.Components - .Where(x => x.ComponentName.Contains(model.ComponentName)) - .Select(x => x.GetViewModel) - .ToList(); - } - - public ComponentViewModel? GetElement(ComponentSearchModel model) - { - if (string.IsNullOrEmpty(model.ComponentName) && !model.Id.HasValue) - { - return null; - } - using var context = new IceCreamShopDatabase(); - return context.Components - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.ComponentName) && x.ComponentName == model.ComponentName) || - (model.Id.HasValue && x.Id == model.Id)) - ?.GetViewModel; - } - - public ComponentViewModel? Insert(ComponentBindingModel model) - { - var newComponent = Component.Create(model); - if (newComponent == null) - { - return null; - } - using var context = new IceCreamShopDatabase(); - context.Components.Add(newComponent); - context.SaveChanges(); - return newComponent.GetViewModel; - } - - public ComponentViewModel? Update(ComponentBindingModel model) - { - using var context = new IceCreamShopDatabase(); - var component = context.Components.FirstOrDefault(x => x.Id == model.Id); - if (component == null) - { - return null; - } - component.Update(model); - context.SaveChanges(); - return component.GetViewModel; - } - - public ComponentViewModel? Delete(ComponentBindingModel model) - { - using var context = new IceCreamShopDatabase(); - var element = context.Components.FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Components.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/IceCreamStorage.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Implements/IceCreamStorage.cs deleted file mode 100644 index 1a0a5e0..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/IceCreamStorage.cs +++ /dev/null @@ -1,106 +0,0 @@ -using IceCreamShopContracts.BindingModels; -using IceCreamShopContracts.SearchModels; -using IceCreamShopContracts.StoragesContracts; -using IceCreamShopContracts.ViewModels; -using IceCreamShopDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; - -namespace IceCreamShopDatabaseImplement.Implements -{ - public class IceCreamStorage : IIceCreamStorage - { - public List GetFullList() - { - using var context = new IceCreamShopDatabase(); - return context.IceCreams - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(IceCreamSearchModel model) - { - if (string.IsNullOrEmpty(model.IceCreamName)) - { - return new(); - } - using var context = new IceCreamShopDatabase(); - return context.IceCreams - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .Where(x => x.IceCreamName.Contains(model.IceCreamName)) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public IceCreamViewModel? GetElement(IceCreamSearchModel model) - { - if (string.IsNullOrEmpty(model.IceCreamName) && !model.Id.HasValue) - { - return null; - } - using var context = new IceCreamShopDatabase(); - return context.IceCreams - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.IceCreamName) && x.IceCreamName == model.IceCreamName) || - (model.Id.HasValue && x.Id == model.Id)) - ?.GetViewModel; - } - - public IceCreamViewModel? Insert(IceCreamBindingModel model) - { - using var context = new IceCreamShopDatabase(); - var newIceCream = IceCream.Create(context, model); - if (newIceCream == null) - { - return null; - } - context.IceCreams.Add(newIceCream); - context.SaveChanges(); - return newIceCream.GetViewModel; - } - - public IceCreamViewModel? Update(IceCreamBindingModel model) - { - using var context = new IceCreamShopDatabase(); - using var transaction = context.Database.BeginTransaction(); - try - { - var iceCream = context.IceCreams.FirstOrDefault(rec => rec.Id == model.Id); - if (iceCream == null) - { - return null; - } - iceCream.Update(model); - context.SaveChanges(); - iceCream.UpdateComponents(context, model); - transaction.Commit(); - return iceCream.GetViewModel; - } - catch - { - transaction.Rollback(); - throw; - } - } - - public IceCreamViewModel? Delete(IceCreamBindingModel model) - { - using var context = new IceCreamShopDatabase(); - var element = context.IceCreams - .Include(x => x.Components) - .FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.IceCreams.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/OrderStorage.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Implements/OrderStorage.cs deleted file mode 100644 index c701c00..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/OrderStorage.cs +++ /dev/null @@ -1,97 +0,0 @@ -using IceCreamShopContracts.BindingModels; -using IceCreamShopContracts.SearchModels; -using IceCreamShopContracts.StoragesContracts; -using IceCreamShopContracts.ViewModels; -using IceCreamShopDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; - -namespace IceCreamShopDatabaseImplement.Implements -{ - public class OrderStorage : IOrderStorage - { - public List GetFullList() - { - using var context = new IceCreamShopDatabase(); - return context.Orders - .Include(x => x.IceCream) - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return new(); - } - using var context = new IceCreamShopDatabase(); - return context.Orders - .Include(x => x.IceCream) - .Where(x => x.Id == model.Id) - .Select(x => x.GetViewModel) - .ToList(); - } - - public OrderViewModel? GetElement(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return null; - } - using var context = new IceCreamShopDatabase(); - return context.Orders - .Include(x => x.IceCream) - .FirstOrDefault(x => x.Id == model.Id) - ?.GetViewModel; - } - - public OrderViewModel? Insert(OrderBindingModel model) - { - var newOrder = Order.Create(model); - if (newOrder == null) - { - return null; - } - using var context = new IceCreamShopDatabase(); - context.Orders.Add(newOrder); - context.SaveChanges(); - return context.Orders - .Include(x => x.IceCream) - .FirstOrDefault(x => x.Id == newOrder.Id) - ?.GetViewModel; - } - - public OrderViewModel? Update(OrderBindingModel model) - { - using var context = new IceCreamShopDatabase(); - var order = context.Orders.FirstOrDefault(x => x.Id == model.Id); - if (order == null) - { - return null; - } - order.Update(model); - context.SaveChanges(); - return context.Orders - .Include(x => x.IceCream) - .FirstOrDefault(x => x.Id == model.Id) - ?.GetViewModel; - } - - public OrderViewModel? Delete(OrderBindingModel model) - { - using var context = new IceCreamShopDatabase(); - var element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - var deletedElement = context.Orders - .Include(x => x.IceCream) - .FirstOrDefault(x => x.Id == model.Id) - ?.GetViewModel; - context.Orders.Remove(element); - context.SaveChanges(); - return deletedElement; - } - return null; - } - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.Designer.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.Designer.cs deleted file mode 100644 index adc6c10..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.Designer.cs +++ /dev/null @@ -1,171 +0,0 @@ -// -using System; -using IceCreamShopDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IceCreamShopDatabaseImplement.Migrations -{ - [DbContext(typeof(IceCreamShopDatabase))] - [Migration("20240309192813_InitialCreate")] - partial class InitialCreate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.16") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("IceCreamName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("IceCreams"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCreamComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("IceCreamId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("IceCreamId"); - - b.ToTable("IceCreamComponents"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("IceCreamId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("IceCreamId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCreamComponent", b => - { - b.HasOne("IceCreamShopDatabaseImplement.Models.Component", "Component") - .WithMany("IceCreamComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("IceCreamShopDatabaseImplement.Models.IceCream", "IceCream") - .WithMany("Components") - .HasForeignKey("IceCreamId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("IceCream"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Order", b => - { - b.HasOne("IceCreamShopDatabaseImplement.Models.IceCream", "IceCream") - .WithMany("Orders") - .HasForeignKey("IceCreamId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("IceCream"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Component", b => - { - b.Navigation("IceCreamComponents"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCream", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.cs deleted file mode 100644 index 562bd62..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/20240309192813_InitialCreate.cs +++ /dev/null @@ -1,125 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IceCreamShopDatabaseImplement.Migrations -{ - /// - public partial class InitialCreate : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Components", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ComponentName = table.Column(type: "nvarchar(max)", nullable: false), - Cost = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Components", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IceCreams", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - IceCreamName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IceCreams", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IceCreamComponents", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - IceCreamId = table.Column(type: "int", nullable: false), - ComponentId = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IceCreamComponents", x => x.Id); - table.ForeignKey( - name: "FK_IceCreamComponents_Components_ComponentId", - column: x => x.ComponentId, - principalTable: "Components", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_IceCreamComponents_IceCreams_IceCreamId", - column: x => x.IceCreamId, - principalTable: "IceCreams", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Orders", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - IceCreamId = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false), - Sum = table.Column(type: "float", nullable: false), - Status = table.Column(type: "int", nullable: false), - DateCreate = table.Column(type: "datetime2", nullable: false), - DateImplement = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Orders", x => x.Id); - table.ForeignKey( - name: "FK_Orders_IceCreams_IceCreamId", - column: x => x.IceCreamId, - principalTable: "IceCreams", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_IceCreamComponents_ComponentId", - table: "IceCreamComponents", - column: "ComponentId"); - - migrationBuilder.CreateIndex( - name: "IX_IceCreamComponents_IceCreamId", - table: "IceCreamComponents", - column: "IceCreamId"); - - migrationBuilder.CreateIndex( - name: "IX_Orders_IceCreamId", - table: "Orders", - column: "IceCreamId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "IceCreamComponents"); - - migrationBuilder.DropTable( - name: "Orders"); - - migrationBuilder.DropTable( - name: "Components"); - - migrationBuilder.DropTable( - name: "IceCreams"); - } - } -} diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/IceCreamShopDatabaseModelSnapshot.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/IceCreamShopDatabaseModelSnapshot.cs deleted file mode 100644 index 3563fed..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Migrations/IceCreamShopDatabaseModelSnapshot.cs +++ /dev/null @@ -1,168 +0,0 @@ -// -using System; -using IceCreamShopDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IceCreamShopDatabaseImplement.Migrations -{ - [DbContext(typeof(IceCreamShopDatabase))] - partial class IceCreamShopDatabaseModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.16") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("IceCreamName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("IceCreams"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCreamComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("IceCreamId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("IceCreamId"); - - b.ToTable("IceCreamComponents"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("IceCreamId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("IceCreamId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCreamComponent", b => - { - b.HasOne("IceCreamShopDatabaseImplement.Models.Component", "Component") - .WithMany("IceCreamComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("IceCreamShopDatabaseImplement.Models.IceCream", "IceCream") - .WithMany("Components") - .HasForeignKey("IceCreamId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("IceCream"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Order", b => - { - b.HasOne("IceCreamShopDatabaseImplement.Models.IceCream", "IceCream") - .WithMany("Orders") - .HasForeignKey("IceCreamId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("IceCream"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.Component", b => - { - b.Navigation("IceCreamComponents"); - }); - - modelBuilder.Entity("IceCreamShopDatabaseImplement.Models.IceCream", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Models/Component.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Models/Component.cs deleted file mode 100644 index c295a25..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Models/Component.cs +++ /dev/null @@ -1,63 +0,0 @@ -using IceCreamShopContracts.BindingModels; -using IceCreamShopContracts.ViewModels; -using IceCreamShopDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IceCreamShopDatabaseImplement.Models -{ - public class Component : IComponentModel - { - public int Id { get; private set; } - - [Required] - public string ComponentName { get; private set; } = string.Empty; - - [Required] - public double Cost { get; set; } - - [ForeignKey("ComponentId")] - public virtual List IceCreamComponents { get; set; } = new(); - - public static Component? Create(ComponentBindingModel model) - { - if (model == null) - { - return null; - } - return new Component() - { - Id = model.Id, - ComponentName = model.ComponentName, - Cost = model.Cost - }; - } - - public static Component Create(ComponentViewModel model) - { - return new Component - { - Id = model.Id, - ComponentName = model.ComponentName, - Cost = model.Cost - }; - } - - public void Update(ComponentBindingModel model) - { - if (model == null) - { - return; - } - ComponentName = model.ComponentName; - Cost = model.Cost; - } - - public ComponentViewModel GetViewModel => new() - { - Id = Id, - ComponentName = ComponentName, - Cost = Cost - }; - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCream.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCream.cs deleted file mode 100644 index 4105f97..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCream.cs +++ /dev/null @@ -1,99 +0,0 @@ -using IceCreamShopContracts.BindingModels; -using IceCreamShopContracts.ViewModels; -using IceCreamShopDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IceCreamShopDatabaseImplement.Models -{ - public class IceCream : IIceCreamModel - { - public int Id { get; set; } - - [Required] - public string IceCreamName { get; set; } = string.Empty; - - [Required] - public double Price { get; set; } - - private Dictionary? _iceCreamComponents = null; - - [NotMapped] - public Dictionary IceCreamComponents - { - get - { - if (_iceCreamComponents == null) - { - _iceCreamComponents = Components - .ToDictionary(recPC => recPC.ComponentId, recPC => (recPC.Component as IComponentModel, recPC.Count)); - } - return _iceCreamComponents; - } - } - - [ForeignKey("IceCreamId")] - public virtual List Components { get; set; } = new(); - - [ForeignKey("IceCreamId")] - public virtual List Orders { get; set; } = new(); - - public static IceCream Create(IceCreamShopDatabase context, IceCreamBindingModel model) - { - return new IceCream() - { - Id = model.Id, - IceCreamName = model.IceCreamName, - Price = model.Price, - Components = model.IceCreamComponents.Select(x => new IceCreamComponent - { - Component = context.Components.First(y => y.Id == x.Key), - Count = x.Value.Item2 - }).ToList() - }; - } - - public void Update(IceCreamBindingModel model) - { - IceCreamName = model.IceCreamName; - Price = model.Price; - } - - public IceCreamViewModel GetViewModel => new() - { - Id = Id, - IceCreamName = IceCreamName, - Price = Price, - IceCreamComponents = IceCreamComponents - }; - - public void UpdateComponents(IceCreamShopDatabase context, IceCreamBindingModel model) - { - var iceCreamComponents = context.IceCreamComponents.Where(rec => rec.IceCreamId == model.Id).ToList(); - if (iceCreamComponents != null && iceCreamComponents.Count > 0) - { // удалили те, которых нет в модели - context.IceCreamComponents.RemoveRange(iceCreamComponents.Where(rec => !model.IceCreamComponents.ContainsKey(rec.ComponentId))); - context.SaveChanges(); - // обновили количество у существующих записей - foreach (var updateComponent in iceCreamComponents) - { - updateComponent.Count = model.IceCreamComponents[updateComponent.ComponentId].Item2; - model.IceCreamComponents.Remove(updateComponent.ComponentId); - } - context.SaveChanges(); - } - var iceCream = context.IceCreams.First(x => x.Id == Id); - foreach (var ic in model.IceCreamComponents) - { - context.IceCreamComponents.Add(new IceCreamComponent - { - IceCream = iceCream, - Component = context.Components.First(x => x.Id == ic.Key), - Count = ic.Value.Item2 - }); - context.SaveChanges(); - } - _iceCreamComponents = null; - } - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCreamComponent.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCreamComponent.cs deleted file mode 100644 index 50ba298..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Models/IceCreamComponent.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace IceCreamShopDatabaseImplement.Models -{ - public class IceCreamComponent - { - public int Id { get; set; } - - [Required] - public int IceCreamId { get; set; } - - [Required] - public int ComponentId { get; set; } - - [Required] - public int Count { get; set; } - - public virtual Component Component { get; set; } = new(); - - public virtual IceCream IceCream { get; set; } = new(); - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Models/Order.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Models/Order.cs deleted file mode 100644 index 76edee3..0000000 --- a/IceCreamShop/IceCreamShopDatabaseImplement/Models/Order.cs +++ /dev/null @@ -1,72 +0,0 @@ -using IceCreamShopContracts.BindingModels; -using IceCreamShopContracts.ViewModels; -using IceCreamShopDataModels.Enums; -using IceCreamShopDataModels.Models; -using System.ComponentModel.DataAnnotations; - -namespace IceCreamShopDatabaseImplement.Models -{ - public class Order : IOrderModel - { - public int Id { get; set; } - - [Required] - public int IceCreamId { get; set; } - - [Required] - public int Count { get; set; } - - [Required] - public double Sum { get; set; } - - [Required] - public OrderStatus Status { get; set; } - - [Required] - public DateTime DateCreate { get; set; } - - public DateTime? DateImplement { get; set; } - - public virtual IceCream IceCream { get; set; } - - public static Order? Create(OrderBindingModel? model) - { - if (model == null) - { - return null; - } - return new Order() - { - Id = model.Id, - IceCreamId = model.IceCreamId, - Count = model.Count, - Sum = model.Sum, - Status = model.Status, - DateCreate = model.DateCreate, - DateImplement = model.DateImplement - }; - } - - public void Update(OrderBindingModel? model) - { - if (model == null) - { - return; - } - Status = model.Status; - DateImplement = model.DateImplement; - } - - public OrderViewModel GetViewModel => new() - { - Id = Id, - IceCreamId = IceCreamId, - Count = Count, - Sum = Sum, - Status = Status, - DateCreate = DateCreate, - DateImplement = DateImplement, - IceCreamName = IceCream.IceCreamName - }; - } -} \ No newline at end of file diff --git a/IceCreamShop/IceCreamShopView/IceCreamShopView.csproj b/IceCreamShop/IceCreamShopView/IceCreamShopView.csproj index a816493..1456ac2 100644 --- a/IceCreamShop/IceCreamShopView/IceCreamShopView.csproj +++ b/IceCreamShop/IceCreamShopView/IceCreamShopView.csproj @@ -19,10 +19,6 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - @@ -31,7 +27,6 @@ - diff --git a/IceCreamShop/IceCreamShopView/Program.cs b/IceCreamShop/IceCreamShopView/Program.cs index 50eb3ce..b5b86d8 100644 --- a/IceCreamShop/IceCreamShopView/Program.cs +++ b/IceCreamShop/IceCreamShopView/Program.cs @@ -1,7 +1,7 @@ using IceCreamShopBusinessLogic.BusinessLogics; using IceCreamShopContracts.BusinessLogicsContracts; using IceCreamShopContracts.StoragesContracts; -using IceCreamShopDatabaseImplement.Implements; +using IceCreamShopFileImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging;