diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/AbstractSoftwareInstallationDatabase.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/AbstractSoftwareInstallationDatabase.cs deleted file mode 100644 index d13a7e6..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/AbstractSoftwareInstallationDatabase.cs +++ /dev/null @@ -1,28 +0,0 @@ -using AbstractPackageInstallationDatabaseImplement.Models; -using AbstractSoftwareInstallationDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement -{ - public class AbstractSoftwareInstallationDatabase : DbContext - { - protected override void OnConfiguring(DbContextOptionsBuilder -optionsBuilder) - { - if (optionsBuilder.IsConfigured == false) - { - optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-QA8P9OJ;Initial Catalog=SogtwareInstallation;Integrated Security=True;MultipleActiveResultSets=True;TrustServerCertificate=True"); - } - base.OnConfiguring(optionsBuilder); - } - public virtual DbSet Softwares { set; get; } - public virtual DbSet Packages { set; get; } - public virtual DbSet PackageSoftwares { set; get; } - public virtual DbSet Orders { set; get; } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/AbstractSoftwareInstallationDatabaseImplement.csproj b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/AbstractSoftwareInstallationDatabaseImplement.csproj deleted file mode 100644 index 1f9db50..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/AbstractSoftwareInstallationDatabaseImplement.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - net6.0 - enable - enable - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/OrderStorage.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/OrderStorage.cs deleted file mode 100644 index 97c0da9..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/OrderStorage.cs +++ /dev/null @@ -1,91 +0,0 @@ -using AbstractPackageInstallationDatabaseImplement.Models; -using AbstractSoftwareInstallationContracts.BindingModels; -using AbstractSoftwareInstallationContracts.SearchModels; -using AbstractSoftwareInstallationContracts.StoragesContracts; -using AbstractSoftwareInstallationContracts.ViewModels; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement.Implements -{ - public class OrderStorage : IOrderStorage - { - public OrderViewModel? Delete(OrderBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - var element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Orders.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - - public OrderViewModel? GetElement(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return null; - } - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Orders.Include(x => x.Package).FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - - public List GetFilteredList(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return new(); - } - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Orders - .Where(x => x.Id == model.Id) - .Include(x => x.Package) - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFullList() - { - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Orders - .Include(x => x.Package) - .Select(x => x.GetViewModel) - .ToList(); - } - - public OrderViewModel? Insert(OrderBindingModel model) - { - var newOrder = Order.Create(model); - - if (newOrder == null) - { - return null; - } - using var context = new AbstractSoftwareInstallationDatabase(); - context.Orders.Add(newOrder); - context.SaveChanges(); - return context.Orders.Include(x => x.Package).FirstOrDefault(x => x.Id == newOrder.Id)?.GetViewModel; - - } - - public OrderViewModel? Update(OrderBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - 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.Package).FirstOrDefault(x => x.Id == order.Id)?.GetViewModel; - } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/PackageStorage.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/PackageStorage.cs deleted file mode 100644 index f692d22..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/PackageStorage.cs +++ /dev/null @@ -1,113 +0,0 @@ -using AbstractSoftwareInstallationContracts.BindingModels; -using AbstractSoftwareInstallationContracts.SearchModels; -using AbstractSoftwareInstallationContracts.StoragesContracts; -using AbstractSoftwareInstallationContracts.ViewModels; -using AbstractSoftwareInstallationDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement.Implements -{ - public class PackageStorage : IPackageStorage - { - public List GetFullList() - { - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Packages - .Include(x => x.Softwares) - .ThenInclude(x => x.Software) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(PackageSearchModel model) - { - if (string.IsNullOrEmpty(model.PackageName)) - { - return new(); - } - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Packages - .Include(x => x.Softwares) - .ThenInclude(x => x.Software) - .Where(x => x.PackageName.Contains(model.PackageName)) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public PackageViewModel? GetElement(PackageSearchModel model) - { - if (string.IsNullOrEmpty(model.PackageName) && - !model.Id.HasValue) - { - return null; - } - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Packages - .Include(x => x.Softwares) - .ThenInclude(x => x.Software) - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.PackageName) - && x.PackageName == model.PackageName) - || (model.Id.HasValue && x.Id == model.Id)) - ?.GetViewModel; - } - - public PackageViewModel? Insert(PackageBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - var newPackage = Package.Create(context, model); - if (newPackage == null) - { - return null; - } - context.Packages.Add(newPackage); - context.SaveChanges(); - return newPackage.GetViewModel; - } - - public PackageViewModel? Update(PackageBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - using var transaction = context.Database.BeginTransaction(); - try - { - var Package = context.Packages.FirstOrDefault(rec => rec.Id == model.Id); - if (Package == null) - { - return null; - } - Package.Update(model); - context.SaveChanges(); - Package.UpdateSoftwares(context, model); - transaction.Commit(); - return Package.GetViewModel; - } - catch - { - transaction.Rollback(); - throw; - } - } - - public PackageViewModel? Delete(PackageBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - var element = context.Packages - .Include(x => x.Softwares) - .FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Packages.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/SoftwareStorage.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/SoftwareStorage.cs deleted file mode 100644 index 80d382f..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Implements/SoftwareStorage.cs +++ /dev/null @@ -1,90 +0,0 @@ -using AbstractSoftwareInstallationContracts.BindingModels; -using AbstractSoftwareInstallationContracts.SearchModels; -using AbstractSoftwareInstallationContracts.StoragesContracts; -using AbstractSoftwareInstallationContracts.ViewModels; -using AbstractSoftwareInstallationDatabaseImplement.Models; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement.Implements -{ - public class SoftwareStorage : ISoftwareStorage - { - public List GetFullList() - { - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Softwares - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(SoftwareSearchModel model) - { - if (string.IsNullOrEmpty(model.SoftwareName)) - { - return new(); - } - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Softwares - .Where(x => x.SoftwareName.Contains(model.SoftwareName)) - .Select(x => x.GetViewModel) - .ToList(); - } - - public SoftwareViewModel? GetElement(SoftwareSearchModel model) - { - if (string.IsNullOrEmpty(model.SoftwareName) && !model.Id.HasValue) - { - return null; - } - using var context = new AbstractSoftwareInstallationDatabase(); - return context.Softwares - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.SoftwareName) - && x.SoftwareName == model.SoftwareName) - || (model.Id.HasValue && x.Id == model.Id)) - ?.GetViewModel; - } - - public SoftwareViewModel? Insert(SoftwareBindingModel model) - { - var newSoftware = Software.Create(model); - if (newSoftware == null) - { - return null; - } - using var context = new AbstractSoftwareInstallationDatabase(); - context.Softwares.Add(newSoftware); - context.SaveChanges(); - return newSoftware.GetViewModel; - } - - public SoftwareViewModel? Update(SoftwareBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - var Software = context.Softwares.FirstOrDefault(x => x.Id == model.Id); - if (Software == null) - { - return null; - } - Software.Update(model); - context.SaveChanges(); - return Software.GetViewModel; - } - - public SoftwareViewModel? Delete(SoftwareBindingModel model) - { - using var context = new AbstractSoftwareInstallationDatabase(); - var element = context.Softwares.FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Softwares.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/20230419141439_Init.Designer.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/20230419141439_Init.Designer.cs deleted file mode 100644 index ba3d063..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/20230419141439_Init.Designer.cs +++ /dev/null @@ -1,171 +0,0 @@ -// -using System; -using AbstractSoftwareInstallationDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace AbstractSoftwareInstallationDatabaseImplement.Migrations -{ - [DbContext(typeof(AbstractSoftwareInstallationDatabase))] - [Migration("20230419141439_Init")] - partial class Init - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("AbstractPackageInstallationDatabaseImplement.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("PackageId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("PackageId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Package", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("PackageName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Packages"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.PackageSoftware", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("PackageId") - .HasColumnType("int"); - - b.Property("SoftwareId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("PackageId"); - - b.HasIndex("SoftwareId"); - - b.ToTable("PackageSoftwares"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Software", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Cost") - .HasColumnType("float"); - - b.Property("SoftwareName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Softwares"); - }); - - modelBuilder.Entity("AbstractPackageInstallationDatabaseImplement.Models.Order", b => - { - b.HasOne("AbstractSoftwareInstallationDatabaseImplement.Models.Package", "Package") - .WithMany("Orders") - .HasForeignKey("PackageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Package"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.PackageSoftware", b => - { - b.HasOne("AbstractSoftwareInstallationDatabaseImplement.Models.Package", "Package") - .WithMany("Softwares") - .HasForeignKey("PackageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("AbstractSoftwareInstallationDatabaseImplement.Models.Software", "Software") - .WithMany("PackageSoftwares") - .HasForeignKey("SoftwareId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Package"); - - b.Navigation("Software"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Package", b => - { - b.Navigation("Orders"); - - b.Navigation("Softwares"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Software", b => - { - b.Navigation("PackageSoftwares"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/20230419141439_Init.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/20230419141439_Init.cs deleted file mode 100644 index 28f3761..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/20230419141439_Init.cs +++ /dev/null @@ -1,125 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace AbstractSoftwareInstallationDatabaseImplement.Migrations -{ - /// - public partial class Init : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Packages", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - PackageName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Packages", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Softwares", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - SoftwareName = table.Column(type: "nvarchar(max)", nullable: false), - Cost = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Softwares", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Orders", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - PackageId = 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_Packages_PackageId", - column: x => x.PackageId, - principalTable: "Packages", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "PackageSoftwares", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - PackageId = table.Column(type: "int", nullable: false), - SoftwareId = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_PackageSoftwares", x => x.Id); - table.ForeignKey( - name: "FK_PackageSoftwares_Packages_PackageId", - column: x => x.PackageId, - principalTable: "Packages", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_PackageSoftwares_Softwares_SoftwareId", - column: x => x.SoftwareId, - principalTable: "Softwares", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Orders_PackageId", - table: "Orders", - column: "PackageId"); - - migrationBuilder.CreateIndex( - name: "IX_PackageSoftwares_PackageId", - table: "PackageSoftwares", - column: "PackageId"); - - migrationBuilder.CreateIndex( - name: "IX_PackageSoftwares_SoftwareId", - table: "PackageSoftwares", - column: "SoftwareId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Orders"); - - migrationBuilder.DropTable( - name: "PackageSoftwares"); - - migrationBuilder.DropTable( - name: "Packages"); - - migrationBuilder.DropTable( - name: "Softwares"); - } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/AbstractSoftwareInstallationDatabaseModelSnapshot.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/AbstractSoftwareInstallationDatabaseModelSnapshot.cs deleted file mode 100644 index 211c487..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Migrations/AbstractSoftwareInstallationDatabaseModelSnapshot.cs +++ /dev/null @@ -1,168 +0,0 @@ -// -using System; -using AbstractSoftwareInstallationDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace AbstractSoftwareInstallationDatabaseImplement.Migrations -{ - [DbContext(typeof(AbstractSoftwareInstallationDatabase))] - partial class AbstractSoftwareInstallationDatabaseModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("AbstractPackageInstallationDatabaseImplement.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("PackageId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("PackageId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Package", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("PackageName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Packages"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.PackageSoftware", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("PackageId") - .HasColumnType("int"); - - b.Property("SoftwareId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("PackageId"); - - b.HasIndex("SoftwareId"); - - b.ToTable("PackageSoftwares"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Software", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Cost") - .HasColumnType("float"); - - b.Property("SoftwareName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Softwares"); - }); - - modelBuilder.Entity("AbstractPackageInstallationDatabaseImplement.Models.Order", b => - { - b.HasOne("AbstractSoftwareInstallationDatabaseImplement.Models.Package", "Package") - .WithMany("Orders") - .HasForeignKey("PackageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Package"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.PackageSoftware", b => - { - b.HasOne("AbstractSoftwareInstallationDatabaseImplement.Models.Package", "Package") - .WithMany("Softwares") - .HasForeignKey("PackageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("AbstractSoftwareInstallationDatabaseImplement.Models.Software", "Software") - .WithMany("PackageSoftwares") - .HasForeignKey("SoftwareId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Package"); - - b.Navigation("Software"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Package", b => - { - b.Navigation("Orders"); - - b.Navigation("Softwares"); - }); - - modelBuilder.Entity("AbstractSoftwareInstallationDatabaseImplement.Models.Software", b => - { - b.Navigation("PackageSoftwares"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Order.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Order.cs deleted file mode 100644 index 86f0e7f..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Order.cs +++ /dev/null @@ -1,73 +0,0 @@ -using AbstractSoftwareInstallationContracts.BindingModels; -using AbstractSoftwareInstallationContracts.ViewModels; -using AbstractSoftwareInstallationDatabaseImplement; -using AbstractSoftwareInstallationDatabaseImplement.Models; -using AbstractSoftwareInstallationDataModels; -using AbstractSoftwareInstallationDataModels.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractPackageInstallationDatabaseImplement.Models -{ - public class Order : IOrderModel - { - public int Id { get; private set; } - [Required] - public int PackageId { get; private set; } - [Required] - public int Count { get; private set; } - [Required] - public double Sum { get; private set; } - [Required] - public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; - [Required] - public DateTime DateCreate { get; private set; } = DateTime.Now; - - public DateTime? DateImplement { get; private set; } - public virtual Package Package { get; set; } - - public static Order? Create(OrderBindingModel? model) - { - if (model == null) - { - return null; - } - return new Order - { - PackageId = model.PackageId, - Count = model.Count, - Sum = model.Sum, - Status = model.Status, - DateCreate = model.DateCreate, - DateImplement = model.DateImplement, - Id = model.Id - }; - } - - public void Update(OrderBindingModel? model) - { - if (model == null) - { - return; - } - Status = model.Status; - DateImplement = model.DateImplement; - } - - public OrderViewModel GetViewModel => new() - { - Id = Id, - PackageId = PackageId, - Count = Count, - Sum = Sum, - Status = Status, - DateCreate = DateCreate, - DateImplement = DateImplement, - PackageName = Package.PackageName - }; - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Package.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Package.cs deleted file mode 100644 index e2578bb..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Package.cs +++ /dev/null @@ -1,107 +0,0 @@ -using AbstractPackageInstallationDatabaseImplement.Models; -using AbstractSoftwareInstallationContracts.BindingModels; -using AbstractSoftwareInstallationContracts.ViewModels; -using AbstractSoftwareInstallationDatabaseImplement.Models; -using AbstractSoftwareInstallationDataModels; -using AbstractSoftwareInstallationDataModels.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement.Models -{ - public class Package : IPackageModel - { - public int Id { get; private set; } - [Required] - public string PackageName { get; private set; } = string.Empty; - [Required] - public double Price { get; private set; } - - private Dictionary? _packageSoftwares = null; - - [NotMapped] - public Dictionary PackageSoftware - { - get - { - if (_packageSoftwares == null) - { - _packageSoftwares = Softwares.ToDictionary(recPC => recPC.SoftwareId, recPC => (recPC.Software as ISoftwareModel, recPC.Count)); - } - return _packageSoftwares; - } - } - - [ForeignKey("PackageId")] - public virtual List Softwares { get; set; } = new(); - [ForeignKey("PackageId")] - public virtual List Orders { get; set; } = new(); - - - public static Package? Create(AbstractSoftwareInstallationDatabase context, PackageBindingModel model) - { - var Softwares = context.Softwares; - - return new Package() - { - Id = model.Id, - PackageName = model.PackageName, - Price = model.Price, - Softwares = model.PackageSoftware.Select(x => new PackageSoftware - { - Software = context.Softwares.First(y => y.Id == x.Key), - Count = x.Value.Item2 - }).ToList() - }; - } - - public void Update(PackageBindingModel model) - { - PackageName = model.PackageName; - Price = model.Price; - } - public PackageViewModel GetViewModel => new() - { - Id = Id, - PackageName = PackageName, - Price = Price, - PackageSoftware = PackageSoftware - }; - - public void UpdateSoftwares(AbstractSoftwareInstallationDatabase context, PackageBindingModel model) - { - var packageSoftwares = context.PackageSoftwares - .Where(rec => rec.PackageId == model.Id).ToList(); - if (packageSoftwares != null && packageSoftwares.Count > 0) - { // удалили те, которых нет в модели - context.PackageSoftwares.RemoveRange(packageSoftwares.Where(rec => !model.PackageSoftware.ContainsKey(rec.SoftwareId))); - context.SaveChanges(); - // обновили количество у существующих записей - foreach (var updateSoftware in packageSoftwares) - { - updateSoftware.Count = model.PackageSoftware[updateSoftware.SoftwareId].Item2; - model.PackageSoftware.Remove(updateSoftware.SoftwareId); - } - context.SaveChanges(); - } - var package = context.Packages.First(x => x.Id == Id); - foreach (var pc in model.PackageSoftware) - { - context.PackageSoftwares.Add(new PackageSoftware - { - Package = package, - Software = context.Softwares.First(x => x.Id == pc.Key), - Count = pc.Value.Item2 - }); - context.SaveChanges(); - } - _packageSoftwares = null; - } - - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/PackageSoftware.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/PackageSoftware.cs deleted file mode 100644 index eeca146..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/PackageSoftware.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement.Models -{ - public class PackageSoftware - { - public int Id { get; set; } - [Required] - public int PackageId { get; set; } - [Required] - public int SoftwareId { get; set; } - [Required] - public int Count { get; set; } - public virtual Software Software { get; set; } = new(); - public virtual Package Package { get; set; } = new(); - } -} diff --git a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Software.cs b/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Software.cs deleted file mode 100644 index d7e9151..0000000 --- a/SoftwareInstallation/AbstractSoftwareInstallationDatabaseImplement/Models/Software.cs +++ /dev/null @@ -1,53 +0,0 @@ -using AbstractSoftwareInstallationContracts.BindingModels; -using AbstractSoftwareInstallationContracts.ViewModels; -using AbstractSoftwareInstallationDataModels.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AbstractSoftwareInstallationDatabaseImplement.Models -{ - public class Software : ISoftwareModel - { - public int Id { get; private set; } - [Required] - public string SoftwareName { get; private set; } = String.Empty; - [Required] - public double Cost { get; set; } - [ForeignKey("SoftwareId")] - public virtual List PackageSoftwares { get; set; } = new(); - public static Software? Create(SoftwareBindingModel? model) - { - if (model == null) - { - return null; - } - return new Software() - { - Id = model.Id, - SoftwareName = model.SoftwareName, - Cost = model.Cost - }; - } - public void Update(SoftwareBindingModel? model) - { - if (model == null) - { - return; - } - SoftwareName = model.SoftwareName; - Cost = model.Cost; - } - public SoftwareViewModel GetViewModel => new() - { - Id = Id, - SoftwareName = SoftwareName, - Cost = Cost - }; - - } -}