diff --git a/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/ComponentStorage.cs b/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/ComponentStorage.cs
index c138f79..2f58171 100644
--- a/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/ComponentStorage.cs
+++ b/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/ComponentStorage.cs
@@ -85,7 +85,7 @@ namespace HardwareShopDatabaseImplement.Implements.Storekeeper
public ComponentViewModel? Insert(ComponentBindingModel model)
{
using var context = new HardwareShopDatabase();
- var newComponent = Component.Create(context, model);
+ var newComponent = Component.Create(model);
if (newComponent == null)
{
return null;
diff --git a/HardwareShop/HardwareShopDatabaseImplement/Migrations/20230402135808_init.Designer.cs b/HardwareShop/HardwareShopDatabaseImplement/Migrations/20230402135808_init.Designer.cs
new file mode 100644
index 0000000..a3d0a51
--- /dev/null
+++ b/HardwareShop/HardwareShopDatabaseImplement/Migrations/20230402135808_init.Designer.cs
@@ -0,0 +1,508 @@
+//
+using System;
+using HardwareShopDatabaseImplement;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace HardwareShopDatabaseImplement.Migrations
+{
+ [DbContext(typeof(HardwareShopDatabase))]
+ [Migration("20230402135808_init")]
+ partial class init
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.ComponentBuild", b =>
+ {
+ b.Property("ComponentId")
+ .HasColumnType("integer");
+
+ b.Property("BuildId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("ComponentId", "BuildId");
+
+ b.HasIndex("BuildId");
+
+ b.ToTable("ComponentsBuilds");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.GoodComponent", b =>
+ {
+ b.Property("GoodId")
+ .HasColumnType("integer");
+
+ b.Property("ComponentId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("GoodId", "ComponentId");
+
+ b.HasIndex("ComponentId");
+
+ b.ToTable("GoodsComponents");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
+ {
+ b.Property("PurchaseId")
+ .HasColumnType("integer");
+
+ b.Property("BuildId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("PurchaseId", "BuildId");
+
+ b.HasIndex("BuildId");
+
+ b.ToTable("PurchasesBuilds");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
+ {
+ b.Property("PurchaseId")
+ .HasColumnType("integer");
+
+ b.Property("GoodId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("PurchaseId", "GoodId");
+
+ b.HasIndex("GoodId");
+
+ b.ToTable("PurchasesGoods");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ComponentName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Cost")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Components");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("GoodName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Goods");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.Property("DateCreate")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateImplement")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("GoodId")
+ .HasColumnType("integer");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.Property("Sum")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GoodId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Login")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Role")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Email")
+ .IsUnique();
+
+ b.HasIndex("Login")
+ .IsUnique();
+
+ b.ToTable("Users");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BuildName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Builds");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BuildId")
+ .HasColumnType("integer");
+
+ b.Property("Text")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BuildId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Comments");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DatePurchase")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("PurchaseStatus")
+ .HasColumnType("integer");
+
+ b.Property("Sum")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.ComponentBuild", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
+ .WithMany("Components")
+ .HasForeignKey("BuildId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Component", "Component")
+ .WithMany("Builds")
+ .HasForeignKey("ComponentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Build");
+
+ b.Navigation("Component");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.GoodComponent", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Component", "Component")
+ .WithMany("Goods")
+ .HasForeignKey("ComponentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
+ .WithMany("Components")
+ .HasForeignKey("GoodId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Component");
+
+ b.Navigation("Good");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
+ .WithMany("Purchases")
+ .HasForeignKey("BuildId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
+ .WithMany("Builds")
+ .HasForeignKey("PurchaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Build");
+
+ b.Navigation("Purchase");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
+ .WithMany("Purchases")
+ .HasForeignKey("GoodId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
+ .WithMany("Goods")
+ .HasForeignKey("PurchaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Good");
+
+ b.Navigation("Purchase");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Components")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Goods")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
+ .WithMany("Orders")
+ .HasForeignKey("GoodId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Orders")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Good");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Builds")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
+ .WithMany("Comments")
+ .HasForeignKey("BuildId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Comments")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Build");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Purchases")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
+ {
+ b.Navigation("Builds");
+
+ b.Navigation("Goods");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
+ {
+ b.Navigation("Components");
+
+ b.Navigation("Orders");
+
+ b.Navigation("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b =>
+ {
+ b.Navigation("Builds");
+
+ b.Navigation("Comments");
+
+ b.Navigation("Components");
+
+ b.Navigation("Goods");
+
+ b.Navigation("Orders");
+
+ b.Navigation("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
+ {
+ b.Navigation("Comments");
+
+ b.Navigation("Components");
+
+ b.Navigation("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
+ {
+ b.Navigation("Builds");
+
+ b.Navigation("Goods");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/HardwareShop/HardwareShopDatabaseImplement/Migrations/20230402135808_init.cs b/HardwareShop/HardwareShopDatabaseImplement/Migrations/20230402135808_init.cs
new file mode 100644
index 0000000..e24fd62
--- /dev/null
+++ b/HardwareShop/HardwareShopDatabaseImplement/Migrations/20230402135808_init.cs
@@ -0,0 +1,384 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace HardwareShopDatabaseImplement.Migrations
+{
+ ///
+ public partial class init : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Users",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Login = table.Column(type: "text", nullable: false),
+ Email = table.Column(type: "text", nullable: false),
+ Password = table.Column(type: "text", nullable: false),
+ Role = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Users", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Builds",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Price = table.Column(type: "double precision", nullable: false),
+ BuildName = table.Column(type: "text", nullable: false),
+ UserId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Builds", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Builds_Users_UserId",
+ column: x => x.UserId,
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Components",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ ComponentName = table.Column(type: "text", nullable: false),
+ Cost = table.Column(type: "double precision", nullable: false),
+ UserId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Components", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Components_Users_UserId",
+ column: x => x.UserId,
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Goods",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ GoodName = table.Column(type: "text", nullable: false),
+ Price = table.Column(type: "double precision", nullable: false),
+ UserId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Goods", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Goods_Users_UserId",
+ column: x => x.UserId,
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Purchases",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Sum = table.Column(type: "double precision", nullable: false),
+ PurchaseStatus = table.Column(type: "integer", nullable: false),
+ DatePurchase = table.Column(type: "timestamp with time zone", nullable: true),
+ UserId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Purchases", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Purchases_Users_UserId",
+ column: x => x.UserId,
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Comments",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Text = table.Column(type: "text", nullable: false),
+ BuildId = table.Column(type: "integer", nullable: false),
+ UserId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Comments", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Comments_Builds_BuildId",
+ column: x => x.BuildId,
+ principalTable: "Builds",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Comments_Users_UserId",
+ column: x => x.UserId,
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "ComponentsBuilds",
+ columns: table => new
+ {
+ BuildId = table.Column(type: "integer", nullable: false),
+ ComponentId = table.Column(type: "integer", nullable: false),
+ Count = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ComponentsBuilds", x => new { x.ComponentId, x.BuildId });
+ table.ForeignKey(
+ name: "FK_ComponentsBuilds_Builds_BuildId",
+ column: x => x.BuildId,
+ principalTable: "Builds",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_ComponentsBuilds_Components_ComponentId",
+ column: x => x.ComponentId,
+ principalTable: "Components",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "GoodsComponents",
+ columns: table => new
+ {
+ GoodId = table.Column(type: "integer", nullable: false),
+ ComponentId = table.Column(type: "integer", nullable: false),
+ Count = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_GoodsComponents", x => new { x.GoodId, x.ComponentId });
+ table.ForeignKey(
+ name: "FK_GoodsComponents_Components_ComponentId",
+ column: x => x.ComponentId,
+ principalTable: "Components",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_GoodsComponents_Goods_GoodId",
+ column: x => x.GoodId,
+ principalTable: "Goods",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Orders",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ GoodId = table.Column(type: "integer", nullable: false),
+ UserId = table.Column(type: "integer", nullable: false),
+ Count = table.Column(type: "integer", nullable: false),
+ Sum = table.Column(type: "double precision", nullable: false),
+ Status = table.Column(type: "integer", nullable: false),
+ DateCreate = table.Column(type: "timestamp with time zone", nullable: false),
+ DateImplement = table.Column(type: "timestamp with time zone", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Orders", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Orders_Goods_GoodId",
+ column: x => x.GoodId,
+ principalTable: "Goods",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Orders_Users_UserId",
+ column: x => x.UserId,
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "PurchasesBuilds",
+ columns: table => new
+ {
+ BuildId = table.Column(type: "integer", nullable: false),
+ PurchaseId = table.Column(type: "integer", nullable: false),
+ Count = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_PurchasesBuilds", x => new { x.PurchaseId, x.BuildId });
+ table.ForeignKey(
+ name: "FK_PurchasesBuilds_Builds_BuildId",
+ column: x => x.BuildId,
+ principalTable: "Builds",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_PurchasesBuilds_Purchases_PurchaseId",
+ column: x => x.PurchaseId,
+ principalTable: "Purchases",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "PurchasesGoods",
+ columns: table => new
+ {
+ PurchaseId = table.Column(type: "integer", nullable: false),
+ GoodId = table.Column(type: "integer", nullable: false),
+ Count = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_PurchasesGoods", x => new { x.PurchaseId, x.GoodId });
+ table.ForeignKey(
+ name: "FK_PurchasesGoods_Goods_GoodId",
+ column: x => x.GoodId,
+ principalTable: "Goods",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_PurchasesGoods_Purchases_PurchaseId",
+ column: x => x.PurchaseId,
+ principalTable: "Purchases",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Builds_UserId",
+ table: "Builds",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Comments_BuildId",
+ table: "Comments",
+ column: "BuildId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Comments_UserId",
+ table: "Comments",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Components_UserId",
+ table: "Components",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_ComponentsBuilds_BuildId",
+ table: "ComponentsBuilds",
+ column: "BuildId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Goods_UserId",
+ table: "Goods",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_GoodsComponents_ComponentId",
+ table: "GoodsComponents",
+ column: "ComponentId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Orders_GoodId",
+ table: "Orders",
+ column: "GoodId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Orders_UserId",
+ table: "Orders",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Purchases_UserId",
+ table: "Purchases",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_PurchasesBuilds_BuildId",
+ table: "PurchasesBuilds",
+ column: "BuildId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_PurchasesGoods_GoodId",
+ table: "PurchasesGoods",
+ column: "GoodId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Users_Email",
+ table: "Users",
+ column: "Email",
+ unique: true);
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Users_Login",
+ table: "Users",
+ column: "Login",
+ unique: true);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Comments");
+
+ migrationBuilder.DropTable(
+ name: "ComponentsBuilds");
+
+ migrationBuilder.DropTable(
+ name: "GoodsComponents");
+
+ migrationBuilder.DropTable(
+ name: "Orders");
+
+ migrationBuilder.DropTable(
+ name: "PurchasesBuilds");
+
+ migrationBuilder.DropTable(
+ name: "PurchasesGoods");
+
+ migrationBuilder.DropTable(
+ name: "Components");
+
+ migrationBuilder.DropTable(
+ name: "Builds");
+
+ migrationBuilder.DropTable(
+ name: "Goods");
+
+ migrationBuilder.DropTable(
+ name: "Purchases");
+
+ migrationBuilder.DropTable(
+ name: "Users");
+ }
+ }
+}
diff --git a/HardwareShop/HardwareShopDatabaseImplement/Migrations/HardwareShopDatabaseModelSnapshot.cs b/HardwareShop/HardwareShopDatabaseImplement/Migrations/HardwareShopDatabaseModelSnapshot.cs
new file mode 100644
index 0000000..def5cac
--- /dev/null
+++ b/HardwareShop/HardwareShopDatabaseImplement/Migrations/HardwareShopDatabaseModelSnapshot.cs
@@ -0,0 +1,505 @@
+//
+using System;
+using HardwareShopDatabaseImplement;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace HardwareShopDatabaseImplement.Migrations
+{
+ [DbContext(typeof(HardwareShopDatabase))]
+ partial class HardwareShopDatabaseModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.ComponentBuild", b =>
+ {
+ b.Property("ComponentId")
+ .HasColumnType("integer");
+
+ b.Property("BuildId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("ComponentId", "BuildId");
+
+ b.HasIndex("BuildId");
+
+ b.ToTable("ComponentsBuilds");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.GoodComponent", b =>
+ {
+ b.Property("GoodId")
+ .HasColumnType("integer");
+
+ b.Property("ComponentId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("GoodId", "ComponentId");
+
+ b.HasIndex("ComponentId");
+
+ b.ToTable("GoodsComponents");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
+ {
+ b.Property("PurchaseId")
+ .HasColumnType("integer");
+
+ b.Property("BuildId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("PurchaseId", "BuildId");
+
+ b.HasIndex("BuildId");
+
+ b.ToTable("PurchasesBuilds");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
+ {
+ b.Property("PurchaseId")
+ .HasColumnType("integer");
+
+ b.Property("GoodId")
+ .HasColumnType("integer");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.HasKey("PurchaseId", "GoodId");
+
+ b.HasIndex("GoodId");
+
+ b.ToTable("PurchasesGoods");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ComponentName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Cost")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Components");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("GoodName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Goods");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.Property("DateCreate")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateImplement")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("GoodId")
+ .HasColumnType("integer");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.Property("Sum")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GoodId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Login")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Role")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Email")
+ .IsUnique();
+
+ b.HasIndex("Login")
+ .IsUnique();
+
+ b.ToTable("Users");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BuildName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Builds");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BuildId")
+ .HasColumnType("integer");
+
+ b.Property("Text")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BuildId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Comments");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DatePurchase")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("PurchaseStatus")
+ .HasColumnType("integer");
+
+ b.Property("Sum")
+ .HasColumnType("double precision");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.ComponentBuild", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
+ .WithMany("Components")
+ .HasForeignKey("BuildId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Component", "Component")
+ .WithMany("Builds")
+ .HasForeignKey("ComponentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Build");
+
+ b.Navigation("Component");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.GoodComponent", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Component", "Component")
+ .WithMany("Goods")
+ .HasForeignKey("ComponentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
+ .WithMany("Components")
+ .HasForeignKey("GoodId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Component");
+
+ b.Navigation("Good");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
+ .WithMany("Purchases")
+ .HasForeignKey("BuildId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
+ .WithMany("Builds")
+ .HasForeignKey("PurchaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Build");
+
+ b.Navigation("Purchase");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
+ .WithMany("Purchases")
+ .HasForeignKey("GoodId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
+ .WithMany("Goods")
+ .HasForeignKey("PurchaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Good");
+
+ b.Navigation("Purchase");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Components")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Goods")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
+ .WithMany("Orders")
+ .HasForeignKey("GoodId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Orders")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Good");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Builds")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
+ .WithMany("Comments")
+ .HasForeignKey("BuildId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Comments")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Build");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
+ {
+ b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
+ .WithMany("Purchases")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
+ {
+ b.Navigation("Builds");
+
+ b.Navigation("Goods");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
+ {
+ b.Navigation("Components");
+
+ b.Navigation("Orders");
+
+ b.Navigation("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b =>
+ {
+ b.Navigation("Builds");
+
+ b.Navigation("Comments");
+
+ b.Navigation("Components");
+
+ b.Navigation("Goods");
+
+ b.Navigation("Orders");
+
+ b.Navigation("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
+ {
+ b.Navigation("Comments");
+
+ b.Navigation("Components");
+
+ b.Navigation("Purchases");
+ });
+
+ modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
+ {
+ b.Navigation("Builds");
+
+ b.Navigation("Goods");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/HardwareShop/HardwareShopDatabaseImplement/Models/Storekeeper/Component.cs b/HardwareShop/HardwareShopDatabaseImplement/Models/Storekeeper/Component.cs
index b856592..c5cf4f0 100644
--- a/HardwareShop/HardwareShopDatabaseImplement/Models/Storekeeper/Component.cs
+++ b/HardwareShop/HardwareShopDatabaseImplement/Models/Storekeeper/Component.cs
@@ -1,6 +1,7 @@
using HardwareShopContracts.BindingModels;
using HardwareShopContracts.ViewModels;
using HardwareShopDatabaseImplement.Models.ManyToMany;
+using HardwareShopDatabaseImplement.Models.Worker;
using HardwareShopDataModels.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -103,6 +104,12 @@ namespace HardwareShopDatabaseImplement.Models.Storekeeper
Build = context.Builds.First(x => x.Id == cb.Key),
Count = cb.Value.Item2
});
+
+ var build = context.Builds.First(x => x.Id == cb.Key);
+ if (build != null)
+ {
+ build.Price += cb.Value.Item2 * component.Cost;
+ }
context.SaveChanges();
}
_componentsBuilds = null;
diff --git a/HardwareShop/HardwareShopDatabaseImplement/Models/User.cs b/HardwareShop/HardwareShopDatabaseImplement/Models/User.cs
index a13627a..8057cfb 100644
--- a/HardwareShop/HardwareShopDatabaseImplement/Models/User.cs
+++ b/HardwareShop/HardwareShopDatabaseImplement/Models/User.cs
@@ -25,22 +25,22 @@ namespace HardwareShopDatabaseImplement.Models
[Required]
public UserRole Role { get; set; } = UserRole.Неизвестен;
- [ForeignKey("ClientId")]
+ [ForeignKey("UserId")]
public virtual List Orders { get; set; } = new();
- [ForeignKey("ClientId")]
+ [ForeignKey("UserId")]
public virtual List Builds { get; set; } = new();
- [ForeignKey("ClientId")]
+ [ForeignKey("UserId")]
public virtual List Comments { get; set; } = new();
- [ForeignKey("ClientId")]
+ [ForeignKey("UserId")]
public virtual List Purchases { get; set; } = new();
- [ForeignKey("ClientId")]
+ [ForeignKey("UserId")]
public virtual List Components { get; set; } = new();
- [ForeignKey("ClientId")]
+ [ForeignKey("UserId")]
public virtual List Goods { get; set; } = new();
diff --git a/HardwareShop/HardwareShopDatabaseImplement/Models/Worker/Build.cs b/HardwareShop/HardwareShopDatabaseImplement/Models/Worker/Build.cs
index ea70d0b..a319b23 100644
--- a/HardwareShop/HardwareShopDatabaseImplement/Models/Worker/Build.cs
+++ b/HardwareShop/HardwareShopDatabaseImplement/Models/Worker/Build.cs
@@ -55,6 +55,7 @@ namespace HardwareShopDatabaseImplement.Models.Worker
Id = model.Id,
BuildName = model.BuildName,
UserId = model.UserId,
+ Price = model.Price
};
}
@@ -90,7 +91,7 @@ namespace HardwareShopDatabaseImplement.Models.Worker
context.SaveChanges();
}
var build = context.Builds.First(x => x.Id == Id);
- //добавляем в бд блюда которые есть в моделе, но ещё нет в бд
+ //добавляем в бд элементы которые есть в модели, но ещё нет в бд
foreach (var bp in model.BuildPurchases)
{
context.PurchasesBuilds.Add(new PurchaseBuild
@@ -102,7 +103,7 @@ namespace HardwareShopDatabaseImplement.Models.Worker
var purchase = context.Purchases.First(x => x.Id == bp.Key);
if (purchase != null)
{
- purchase.Sum += bp.Value.Item2* build.Price;
+ purchase.Sum += bp.Value.Item2 * build.Price;
}
context.SaveChanges();
diff --git a/HardwareShop/HardwareShopRestApi/Controllers/MainController.cs b/HardwareShop/HardwareShopRestApi/Controllers/MainController.cs
new file mode 100644
index 0000000..136cfc3
--- /dev/null
+++ b/HardwareShop/HardwareShopRestApi/Controllers/MainController.cs
@@ -0,0 +1,66 @@
+using HardwareShopContracts.BindingModels;
+using HardwareShopContracts.BusinessLogicsContracts;
+using Microsoft.AspNetCore.Mvc;
+
+namespace HardwareShopRestApi.Controllers
+{
+ [Route("api/[controller]/[action]")]
+ [ApiController]
+ public class MainController : Controller
+ {
+ private readonly ILogger _logger;
+
+ private readonly IPurchaseLogic _purchase;
+
+ private readonly IBuildLogic _build;
+
+ public MainController(ILogger logger, IPurchaseLogic pur, IBuildLogic build)
+ {
+ _logger = logger;
+ _purchase = pur;
+ _build = build;
+ }
+
+ [HttpPost]
+ public void CreateBuild(BuildBindingModel model)
+ {
+ try
+ {
+ _build.Create(model);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка создания");
+ throw;
+ }
+ }
+
+ [HttpPost]
+ public void CreatePurchase(PurchaseBindingModel model)
+ {
+ try
+ {
+ _purchase.Create(model);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка создания");
+ throw;
+ }
+ }
+
+ [HttpPut]
+ public void UpdateBuild(BuildBindingModel model)
+ {
+ try
+ {
+ _build.Update(model);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка обновления");
+ throw;
+ }
+ }
+ }
+}