diff --git a/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj b/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj
index 132c02c..85b0783 100644
--- a/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj
+++ b/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj
@@ -6,4 +6,11 @@
enable
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs
new file mode 100644
index 0000000..31c6b46
--- /dev/null
+++ b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs
@@ -0,0 +1,501 @@
+//
+using System;
+using CarCenterDatabaseImplement;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace CarCenterDatabaseImplement.Migrations
+{
+ [DbContext(typeof(CarCenterDatabase))]
+ [Migration("20240428140324_InitialCreate")]
+ partial class InitialCreate
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.29")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("EquipmentPackage")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("TirePackage")
+ .HasColumnType("integer");
+
+ b.Property("ToolKit")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.ToTable("Bundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CarBrand")
+ .HasColumnType("integer");
+
+ b.Property("CarClass")
+ .HasColumnType("integer");
+
+ b.Property("FeatureID")
+ .HasColumnType("integer");
+
+ b.Property("FeatureId")
+ .HasColumnType("integer");
+
+ b.Property("Model")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OrderId")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("StorekeeperId")
+ .HasColumnType("integer");
+
+ b.Property("VINnumber")
+ .HasColumnType("bigint");
+
+ b.Property("Year")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FeatureId");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("StorekeeperId");
+
+ b.ToTable("Cars");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BundlingId")
+ .HasColumnType("integer");
+
+ b.Property("CarId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BundlingId");
+
+ b.HasIndex("CarId");
+
+ b.ToTable("CarBundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CabinColor")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DriveType")
+ .HasColumnType("integer");
+
+ b.Property("HelpDevice")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.HasKey("Id");
+
+ b.ToTable("Features");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BuyerFCS")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PaymentDate")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("PaymentStatus")
+ .HasColumnType("integer");
+
+ b.Property("PaymentType")
+ .HasColumnType("integer");
+
+ b.Property("Sum")
+ .HasColumnType("double precision");
+
+ b.Property("WorkerId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("WorkerId");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("OrderId")
+ .HasColumnType("integer");
+
+ b.Property("PresaleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("PresaleId");
+
+ b.ToTable("OrderPresales");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DueTill")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("PresaleStatus")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.HasKey("Id");
+
+ b.ToTable("Presales");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BundlingId")
+ .HasColumnType("integer");
+
+ b.Property("PresaleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BundlingId");
+
+ b.HasIndex("PresaleId");
+
+ b.ToTable("PresaleBundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PresaleId")
+ .HasColumnType("integer");
+
+ b.Property("RequestType")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PresaleId");
+
+ b.ToTable("Requests");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Patronymic")
+ .HasColumnType("text");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("bigint");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Storekeepers");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Patronymic")
+ .HasColumnType("text");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("bigint");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Workers");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Feature", "Feature")
+ .WithMany("Cars")
+ .HasForeignKey("FeatureId");
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order")
+ .WithMany("Cars")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Storekeeper", "Storekeeper")
+ .WithMany("Cars")
+ .HasForeignKey("StorekeeperId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Feature");
+
+ b.Navigation("Order");
+
+ b.Navigation("Storekeeper");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling")
+ .WithMany("CarBundling")
+ .HasForeignKey("BundlingId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Car", "Car")
+ .WithMany("Bundlings")
+ .HasForeignKey("CarId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Bundling");
+
+ b.Navigation("Car");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Worker", "Worker")
+ .WithMany("Orders")
+ .HasForeignKey("WorkerId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Worker");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order")
+ .WithMany("Presales")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale")
+ .WithMany("OrderPresales")
+ .HasForeignKey("PresaleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Order");
+
+ b.Navigation("Presale");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling")
+ .WithMany("PresaleBundling")
+ .HasForeignKey("BundlingId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale")
+ .WithMany("Bundlings")
+ .HasForeignKey("PresaleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Bundling");
+
+ b.Navigation("Presale");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale")
+ .WithMany("Requests")
+ .HasForeignKey("PresaleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Presale");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b =>
+ {
+ b.Navigation("CarBundling");
+
+ b.Navigation("PresaleBundling");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b =>
+ {
+ b.Navigation("Bundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b =>
+ {
+ b.Navigation("Cars");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b =>
+ {
+ b.Navigation("Cars");
+
+ b.Navigation("Presales");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b =>
+ {
+ b.Navigation("Bundlings");
+
+ b.Navigation("OrderPresales");
+
+ b.Navigation("Requests");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b =>
+ {
+ b.Navigation("Cars");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b =>
+ {
+ b.Navigation("Orders");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs
new file mode 100644
index 0000000..00e7294
--- /dev/null
+++ b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs
@@ -0,0 +1,351 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace CarCenterDatabaseImplement.Migrations
+{
+ public partial class InitialCreate : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Bundlings",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ EquipmentPackage = table.Column(type: "integer", nullable: false),
+ TirePackage = table.Column(type: "integer", nullable: false),
+ ToolKit = table.Column(type: "integer", nullable: false),
+ Price = table.Column(type: "double precision", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Bundlings", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Features",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ HelpDevice = table.Column(type: "integer", nullable: false),
+ CabinColor = table.Column(type: "text", nullable: false),
+ DriveType = table.Column(type: "integer", nullable: false),
+ Price = table.Column(type: "double precision", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Features", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Presales",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ PresaleStatus = table.Column(type: "integer", nullable: false),
+ Description = table.Column(type: "text", nullable: false),
+ DueTill = table.Column(type: "timestamp without time zone", nullable: false),
+ Price = table.Column(type: "double precision", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Presales", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Storekeepers",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Name = table.Column(type: "text", nullable: false),
+ Surname = table.Column(type: "text", nullable: false),
+ Patronymic = table.Column(type: "text", nullable: true),
+ Password = table.Column(type: "text", nullable: false),
+ Email = table.Column(type: "text", nullable: false),
+ PhoneNumber = table.Column(type: "bigint", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Storekeepers", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Workers",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Name = table.Column(type: "text", nullable: false),
+ Surname = table.Column(type: "text", nullable: false),
+ Patronymic = table.Column(type: "text", nullable: true),
+ Password = table.Column(type: "text", nullable: false),
+ Email = table.Column(type: "text", nullable: false),
+ PhoneNumber = table.Column(type: "bigint", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Workers", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "PresaleBundlings",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ PresaleId = table.Column(type: "integer", nullable: false),
+ BundlingId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_PresaleBundlings", x => x.Id);
+ table.ForeignKey(
+ name: "FK_PresaleBundlings_Bundlings_BundlingId",
+ column: x => x.BundlingId,
+ principalTable: "Bundlings",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_PresaleBundlings_Presales_PresaleId",
+ column: x => x.PresaleId,
+ principalTable: "Presales",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Requests",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ PresaleId = table.Column(type: "integer", nullable: false),
+ Description = table.Column(type: "text", nullable: false),
+ RequestType = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Requests", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Requests_Presales_PresaleId",
+ column: x => x.PresaleId,
+ principalTable: "Presales",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Orders",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ WorkerId = table.Column(type: "integer", nullable: false),
+ PaymentType = table.Column(type: "integer", nullable: false),
+ PaymentStatus = table.Column(type: "integer", nullable: false),
+ BuyerFCS = table.Column(type: "text", nullable: false),
+ PaymentDate = table.Column(type: "timestamp without time zone", nullable: false),
+ Sum = table.Column(type: "double precision", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Orders", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Orders_Workers_WorkerId",
+ column: x => x.WorkerId,
+ principalTable: "Workers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Cars",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ StorekeeperId = table.Column(type: "integer", nullable: false),
+ OrderId = table.Column(type: "integer", nullable: false),
+ FeatureId = table.Column(type: "integer", nullable: true),
+ CarBrand = table.Column(type: "integer", nullable: false),
+ Model = table.Column(type: "text", nullable: false),
+ CarClass = table.Column(type: "integer", nullable: false),
+ Year = table.Column(type: "integer", nullable: false),
+ Price = table.Column(type: "double precision", nullable: false),
+ VINnumber = table.Column(type: "bigint", nullable: false),
+ FeatureID = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Cars", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Cars_Features_FeatureId",
+ column: x => x.FeatureId,
+ principalTable: "Features",
+ principalColumn: "Id");
+ table.ForeignKey(
+ name: "FK_Cars_Orders_OrderId",
+ column: x => x.OrderId,
+ principalTable: "Orders",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Cars_Storekeepers_StorekeeperId",
+ column: x => x.StorekeeperId,
+ principalTable: "Storekeepers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "OrderPresales",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ OrderId = table.Column(type: "integer", nullable: false),
+ PresaleId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_OrderPresales", x => x.Id);
+ table.ForeignKey(
+ name: "FK_OrderPresales_Orders_OrderId",
+ column: x => x.OrderId,
+ principalTable: "Orders",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_OrderPresales_Presales_PresaleId",
+ column: x => x.PresaleId,
+ principalTable: "Presales",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "CarBundlings",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ CarId = table.Column(type: "integer", nullable: false),
+ BundlingId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_CarBundlings", x => x.Id);
+ table.ForeignKey(
+ name: "FK_CarBundlings_Bundlings_BundlingId",
+ column: x => x.BundlingId,
+ principalTable: "Bundlings",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_CarBundlings_Cars_CarId",
+ column: x => x.CarId,
+ principalTable: "Cars",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_CarBundlings_BundlingId",
+ table: "CarBundlings",
+ column: "BundlingId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_CarBundlings_CarId",
+ table: "CarBundlings",
+ column: "CarId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Cars_FeatureId",
+ table: "Cars",
+ column: "FeatureId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Cars_OrderId",
+ table: "Cars",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Cars_StorekeeperId",
+ table: "Cars",
+ column: "StorekeeperId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_OrderPresales_OrderId",
+ table: "OrderPresales",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_OrderPresales_PresaleId",
+ table: "OrderPresales",
+ column: "PresaleId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Orders_WorkerId",
+ table: "Orders",
+ column: "WorkerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_PresaleBundlings_BundlingId",
+ table: "PresaleBundlings",
+ column: "BundlingId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_PresaleBundlings_PresaleId",
+ table: "PresaleBundlings",
+ column: "PresaleId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Requests_PresaleId",
+ table: "Requests",
+ column: "PresaleId");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "CarBundlings");
+
+ migrationBuilder.DropTable(
+ name: "OrderPresales");
+
+ migrationBuilder.DropTable(
+ name: "PresaleBundlings");
+
+ migrationBuilder.DropTable(
+ name: "Requests");
+
+ migrationBuilder.DropTable(
+ name: "Cars");
+
+ migrationBuilder.DropTable(
+ name: "Bundlings");
+
+ migrationBuilder.DropTable(
+ name: "Presales");
+
+ migrationBuilder.DropTable(
+ name: "Features");
+
+ migrationBuilder.DropTable(
+ name: "Orders");
+
+ migrationBuilder.DropTable(
+ name: "Storekeepers");
+
+ migrationBuilder.DropTable(
+ name: "Workers");
+ }
+ }
+}
diff --git a/CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs b/CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs
new file mode 100644
index 0000000..ec96439
--- /dev/null
+++ b/CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs
@@ -0,0 +1,499 @@
+//
+using System;
+using CarCenterDatabaseImplement;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace CarCenterDatabaseImplement.Migrations
+{
+ [DbContext(typeof(CarCenterDatabase))]
+ partial class CarCenterDatabaseModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.29")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("EquipmentPackage")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("TirePackage")
+ .HasColumnType("integer");
+
+ b.Property("ToolKit")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.ToTable("Bundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CarBrand")
+ .HasColumnType("integer");
+
+ b.Property("CarClass")
+ .HasColumnType("integer");
+
+ b.Property("FeatureID")
+ .HasColumnType("integer");
+
+ b.Property("FeatureId")
+ .HasColumnType("integer");
+
+ b.Property("Model")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OrderId")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.Property("StorekeeperId")
+ .HasColumnType("integer");
+
+ b.Property("VINnumber")
+ .HasColumnType("bigint");
+
+ b.Property("Year")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FeatureId");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("StorekeeperId");
+
+ b.ToTable("Cars");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BundlingId")
+ .HasColumnType("integer");
+
+ b.Property("CarId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BundlingId");
+
+ b.HasIndex("CarId");
+
+ b.ToTable("CarBundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CabinColor")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DriveType")
+ .HasColumnType("integer");
+
+ b.Property("HelpDevice")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.HasKey("Id");
+
+ b.ToTable("Features");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BuyerFCS")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PaymentDate")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("PaymentStatus")
+ .HasColumnType("integer");
+
+ b.Property("PaymentType")
+ .HasColumnType("integer");
+
+ b.Property("Sum")
+ .HasColumnType("double precision");
+
+ b.Property("WorkerId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("WorkerId");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("OrderId")
+ .HasColumnType("integer");
+
+ b.Property("PresaleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("PresaleId");
+
+ b.ToTable("OrderPresales");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DueTill")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("PresaleStatus")
+ .HasColumnType("integer");
+
+ b.Property("Price")
+ .HasColumnType("double precision");
+
+ b.HasKey("Id");
+
+ b.ToTable("Presales");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BundlingId")
+ .HasColumnType("integer");
+
+ b.Property("PresaleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BundlingId");
+
+ b.HasIndex("PresaleId");
+
+ b.ToTable("PresaleBundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PresaleId")
+ .HasColumnType("integer");
+
+ b.Property("RequestType")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PresaleId");
+
+ b.ToTable("Requests");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Patronymic")
+ .HasColumnType("text");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("bigint");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Storekeepers");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Patronymic")
+ .HasColumnType("text");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("bigint");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Workers");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Feature", "Feature")
+ .WithMany("Cars")
+ .HasForeignKey("FeatureId");
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order")
+ .WithMany("Cars")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Storekeeper", "Storekeeper")
+ .WithMany("Cars")
+ .HasForeignKey("StorekeeperId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Feature");
+
+ b.Navigation("Order");
+
+ b.Navigation("Storekeeper");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling")
+ .WithMany("CarBundling")
+ .HasForeignKey("BundlingId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Car", "Car")
+ .WithMany("Bundlings")
+ .HasForeignKey("CarId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Bundling");
+
+ b.Navigation("Car");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Worker", "Worker")
+ .WithMany("Orders")
+ .HasForeignKey("WorkerId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Worker");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order")
+ .WithMany("Presales")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale")
+ .WithMany("OrderPresales")
+ .HasForeignKey("PresaleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Order");
+
+ b.Navigation("Presale");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling")
+ .WithMany("PresaleBundling")
+ .HasForeignKey("BundlingId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale")
+ .WithMany("Bundlings")
+ .HasForeignKey("PresaleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Bundling");
+
+ b.Navigation("Presale");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b =>
+ {
+ b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale")
+ .WithMany("Requests")
+ .HasForeignKey("PresaleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Presale");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b =>
+ {
+ b.Navigation("CarBundling");
+
+ b.Navigation("PresaleBundling");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b =>
+ {
+ b.Navigation("Bundlings");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b =>
+ {
+ b.Navigation("Cars");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b =>
+ {
+ b.Navigation("Cars");
+
+ b.Navigation("Presales");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b =>
+ {
+ b.Navigation("Bundlings");
+
+ b.Navigation("OrderPresales");
+
+ b.Navigation("Requests");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b =>
+ {
+ b.Navigation("Cars");
+ });
+
+ modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b =>
+ {
+ b.Navigation("Orders");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}