diff --git a/PlumbingRepair/PlumbingRepair.sln b/PlumbingRepair/PlumbingRepair.sln index aed8dde..3c80525 100644 --- a/PlumbingRepair/PlumbingRepair.sln +++ b/PlumbingRepair/PlumbingRepair.sln @@ -13,9 +13,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairListImplement EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairView", "PlumbingRepairView\PlumbingRepairView.csproj", "{A67F7409-283B-47B5-A6ED-E9550F9C7185}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairDatabaseImplements", "PlumbingRepairDatabaseImplements\PlumbingRepairDatabaseImplements.csproj", "{6FE59A4C-DC53-4FD5-B011-597BE45360C2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -47,10 +45,6 @@ Global {F114881C-8CBB-4747-BF61-993E764752A3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.Build.0 = Release|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs deleted file mode 100644 index 942cf3c..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs +++ /dev/null @@ -1,92 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.SearchModels; -using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDatabaseImplements.Models; - -namespace PlumbingRepairDatabaseImplements.Implements -{ - public class ComponentStorage : IComponentStorage - { - public List GetFullList() - { - using var context = new PlumbingRepairDatabase(); - - return context.Components.Select(x => x.GetViewModel).ToList(); - } - - public List GetFilteredList(ComponentSearchModel model) - { - if (string.IsNullOrEmpty(model.ComponentName)) - { - return new(); - } - - using var context = new PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - context.Components.Add(newComponent); - context.SaveChanges(); - - return newComponent.GetViewModel; - } - - public ComponentViewModel? Update(ComponentBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - var element = context.Components.FirstOrDefault(rec => rec.Id == model.Id); - - if (element != null) - { - context.Components.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - - return null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs deleted file mode 100644 index 303a870..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs +++ /dev/null @@ -1,93 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.SearchModels; -using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDatabaseImplements.Models; - -namespace PlumbingRepairDatabaseImplements.Implements -{ - public class OrderStorage : IOrderStorage - { - public List GetFullList() - { - using var context = new PlumbingRepairDatabase(); - - return context.Orders.Select(x => x.GetViewModel).ToList(); - } - - public List GetFilteredList(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return new(); - } - - using var context = new PlumbingRepairDatabase(); - - return context.Orders.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 PlumbingRepairDatabase(); - - return context.Orders.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - - public OrderViewModel? Insert(OrderBindingModel model) - { - var newOrder = Order.Create(model); - - if (newOrder == null) - { - return null; - } - - using var context = new PlumbingRepairDatabase(); - - context.Orders.Add(newOrder); - context.SaveChanges(); - - return newOrder.GetViewModel; - } - - public OrderViewModel? Update(OrderBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - var order = context.Orders.FirstOrDefault(x => x.Id == model.Id); - - if (order == null) - { - return null; - } - - order.Update(model); - context.SaveChanges(); - - return order.GetViewModel; - } - - public OrderViewModel? Delete(OrderBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - var element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); - - if (element != null) - { - context.Orders.Remove(element); - context.SaveChanges(); - - return element.GetViewModel; - } - - return null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs deleted file mode 100644 index f48fe99..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs +++ /dev/null @@ -1,120 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.SearchModels; -using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDatabaseImplements.Models; -using Microsoft.EntityFrameworkCore; - -namespace PlumbingRepairDatabaseImplements.Implements -{ - public class WorkStorage : IWorkStorage - { - public List GetFullList() - { - using var context = new PlumbingRepairDatabase(); - - return context.Works - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(WorkSearchModel model) - { - if (string.IsNullOrEmpty(model.WorkName)) - { - return new(); - } - - using var context = new PlumbingRepairDatabase(); - - return context.Works - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .Where(x => x.WorkName.Contains(model.WorkName)) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public WorkViewModel? GetElement(WorkSearchModel model) - { - if (string.IsNullOrEmpty(model.WorkName) && !model.Id.HasValue) - { - return null; - } - - using var context = new PlumbingRepairDatabase(); - - return context.Works - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.WorkName) && x.WorkName == model.WorkName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - - public WorkViewModel? Insert(WorkBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - var newWork = Work.Create(context, model); - - if (newWork == null) - { - return null; - } - - context.Works.Add(newWork); - context.SaveChanges(); - - return newWork.GetViewModel; - } - - public WorkViewModel? Update(WorkBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - using var transaction = context.Database.BeginTransaction(); - - try - { - var package = context.Works.FirstOrDefault(rec => rec.Id == model.Id); - - if (package == null) - { - return null; - } - - package.Update(model); - context.SaveChanges(); - package.UpdateComponents(context, model); - transaction.Commit(); - - return package.GetViewModel; - } - catch - { - transaction.Rollback(); - - throw; - } - } - - public WorkViewModel? Delete(WorkBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - var element = context.Works.Include(x => x.Components).FirstOrDefault(rec => rec.Id == model.Id); - - if (element != null) - { - context.Works.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - - return null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs deleted file mode 100644 index 7e99443..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs +++ /dev/null @@ -1,175 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using PlumbingRepairDatabaseImplements; - -#nullable disable - -namespace PlumbingRepairDatabaseImplements.Migrations -{ - [DbContext(typeof(PlumbingRepairDatabase))] - [Migration("20230406094555_InitCreate")] - partial class InitCreate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0-preview.2.23128.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.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("PlumbingRepairDatabaseImplements.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("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("WorkId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Price") - .HasColumnType("float"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Works"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("WorkId"); - - b.ToTable("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Orders") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Component", "Component") - .WithMany("WorkComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Components") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => - { - b.Navigation("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs deleted file mode 100644 index 4aa37ec..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace PlumbingRepairDatabaseImplements.Migrations -{ - /// - public partial class InitCreate : 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: "Works", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - WorkName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Works", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Orders", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - WorkId = table.Column(type: "int", nullable: false), - WorkName = table.Column(type: "nvarchar(max)", 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_Works_WorkId", - column: x => x.WorkId, - principalTable: "Works", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "WorkComponents", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - WorkId = 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_WorkComponents", x => x.Id); - table.ForeignKey( - name: "FK_WorkComponents_Components_ComponentId", - column: x => x.ComponentId, - principalTable: "Components", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_WorkComponents_Works_WorkId", - column: x => x.WorkId, - principalTable: "Works", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Orders_WorkId", - table: "Orders", - column: "WorkId"); - - migrationBuilder.CreateIndex( - name: "IX_WorkComponents_ComponentId", - table: "WorkComponents", - column: "ComponentId"); - - migrationBuilder.CreateIndex( - name: "IX_WorkComponents_WorkId", - table: "WorkComponents", - column: "WorkId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Orders"); - - migrationBuilder.DropTable( - name: "WorkComponents"); - - migrationBuilder.DropTable( - name: "Components"); - - migrationBuilder.DropTable( - name: "Works"); - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs deleted file mode 100644 index 3179448..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs +++ /dev/null @@ -1,172 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using PlumbingRepairDatabaseImplements; - -#nullable disable - -namespace PlumbingRepairDatabaseImplements.Migrations -{ - [DbContext(typeof(PlumbingRepairDatabase))] - partial class PlumbingRepairDatabaseModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0-preview.2.23128.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.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("PlumbingRepairDatabaseImplements.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("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("WorkId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Price") - .HasColumnType("float"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Works"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("WorkId"); - - b.ToTable("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Orders") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Component", "Component") - .WithMany("WorkComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Components") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => - { - b.Navigation("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs deleted file mode 100644 index 36aa382..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs +++ /dev/null @@ -1,60 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.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 WorkComponents { 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 - }; - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs deleted file mode 100644 index c91d491..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs +++ /dev/null @@ -1,77 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Enums; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.Models -{ - public class Order : IOrderModel - { - public int Id { get; private set; } - - public int WorkId { get; private set; } - - public string WorkName { get; private set; } = string.Empty; - - [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 Work Work { get; set; } - - public static Order? Create(OrderBindingModel? model) - { - if (model == null) - { - return null; - } - - return new Order() - { - Id = model.Id, - WorkId = model.WorkId, - WorkName = model.WorkName, - 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, - WorkId = WorkId, - WorkName = WorkName, - Count = Count, - Sum = Sum, - Status = Status, - DateCreate = DateCreate, - DateImplement = DateImplement - }; - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs deleted file mode 100644 index 8a8302b..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs +++ /dev/null @@ -1,90 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.Models -{ - public class Work : IWorkModel - { - public int Id { get; set; } - [Required] - public string WorkName { get; set; } = string.Empty; - [Required] - public double Price { get; set; } - private Dictionary? _workComponents = null; - [NotMapped] - public Dictionary WorkComponents - { - get - { - if (_workComponents == null) - { - _workComponents = Components - .ToDictionary(recWC => recWC.ComponentId, recWC => - (recWC.Component as IComponentModel, recWC.Count)); - } - return _workComponents; - } - } - [ForeignKey("WorkId")] - public virtual List Components { get; set; } = new(); - [ForeignKey("WorkId")] - public virtual List Orders { get; set; } = new(); - public static Work Create(PlumbingRepairDatabase context, WorkBindingModel model) - { - return new Work() - { - Id = model.Id, - WorkName = model.WorkName, - Price = model.Price, - Components = model.WorkComponents.Select(x => new WorkComponent - { - Component = context.Components.First(y => y.Id == x.Key), - Count = x.Value.Item2 - }).ToList() - }; - } - public void Update(WorkBindingModel model) - { - WorkName = model.WorkName; - Price = model.Price; - } - public WorkViewModel GetViewModel => new() - { - Id = Id, - WorkName = WorkName, - Price = Price, - WorkComponents = WorkComponents - }; - public void UpdateComponents(PlumbingRepairDatabase context, WorkBindingModel model) - { - var workComponents = context.WorkComponents.Where(rec => rec.WorkId == model.Id).ToList(); - if (workComponents != null && workComponents.Count > 0) - { // удалили те, которых нет в модели - context.WorkComponents.RemoveRange(workComponents.Where(rec => !model.WorkComponents.ContainsKey(rec.ComponentId))); - context.SaveChanges(); - // обновили количество у существующих записей - foreach (var updateComponent in workComponents) - { - updateComponent.Count = model.WorkComponents[updateComponent.ComponentId].Item2; - model.WorkComponents.Remove(updateComponent.ComponentId); - } - context.SaveChanges(); - } - var work = context.Works.First(x => x.Id == Id); - foreach (var pc in model.WorkComponents) - { - context.WorkComponents.Add(new WorkComponent - { - Work = work, - Component = context.Components.First(x => x.Id == pc.Key), - Count = pc.Value.Item2 - }); - context.SaveChanges(); - } - _workComponents = null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs deleted file mode 100644 index eb61ebf..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.Models -{ - public class WorkComponent - { - public int Id { get; set; } - [Required] - public int WorkId { get; set; } - [Required] - public int ComponentId { get; set; } - [Required] - public int Count { get; set; } - public virtual Component Component { get; set; } = new(); - public virtual Work Work { get; set; } = new(); - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs deleted file mode 100644 index 07329eb..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs +++ /dev/null @@ -1,22 +0,0 @@ -using PlumbingRepairDatabaseImplements.Models; -using Microsoft.EntityFrameworkCore; - -namespace PlumbingRepairDatabaseImplements -{ - public class PlumbingRepairDatabase : DbContext - { - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - if (optionsBuilder.IsConfigured == false) - { - optionsBuilder.UseSqlServer(@"Data Source=PREMIX\SQLEXPRESS;Initial Catalog=PlumbingRepairDatabaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); - } - base.OnConfiguring(optionsBuilder); - } - public virtual DbSet Components { set; get; } - public virtual DbSet Works { set; get; } - public virtual DbSet WorkComponents { set; get; } - public virtual DbSet Orders { set; get; } - - } -} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj deleted file mode 100644 index b026146..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net6.0 - enable - enable - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - diff --git a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj index 482614a..ebe3048 100644 --- a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj +++ b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj @@ -9,18 +9,15 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + - + + \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairView/Program.cs b/PlumbingRepair/PlumbingRepairView/Program.cs index f72f77d..b4f54db 100644 --- a/PlumbingRepair/PlumbingRepairView/Program.cs +++ b/PlumbingRepair/PlumbingRepairView/Program.cs @@ -1,6 +1,6 @@ using PlumbingRepairContracts.BusinesLogicsContracts; using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairDatabaseImplements.Implements; +using PlumbingRepairFileImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging;