From dec9ceaf347d712ec76c70ac1082d8fddbf699e9 Mon Sep 17 00:00:00 2001 From: DeerElk Date: Thu, 2 May 2024 04:54:09 +0400 Subject: [PATCH] =?UTF-8?q?=D1=8F=20=D0=BE=D1=88=D0=B8=D0=B1=D1=81=D1=8F!?= =?UTF-8?q?=20=D1=8F=20=D0=BC=D0=BE=D0=B3=D1=83=20=D0=BE=D0=B4=D0=B8=D0=BD?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B7=20=D0=BE=D1=88=D0=B8=D0=B1=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=D1=81=D1=8F=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchModels/ProgramSearchModel.cs | 2 +- Bank/BankDatabaseImplement/BankDatabase.cs | 5 + .../20240502003921_InitialCreate.Designer.cs | 491 ++++++++++++++++++ .../20240502003921_InitialCreate.cs | 365 +++++++++++++ .../Migrations/BankDatabaseModelSnapshot.cs | 488 +++++++++++++++++ Bank/BankDatabaseImplement/Models/Client.cs | 5 +- .../Models/ClientDeposit.cs | 3 +- .../Models/ClientProgram.cs | 2 +- Bank/BankDatabaseImplement/Models/Deposit.cs | 3 +- 9 files changed, 1357 insertions(+), 7 deletions(-) create mode 100644 Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.Designer.cs create mode 100644 Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.cs create mode 100644 Bank/BankDatabaseImplement/Migrations/BankDatabaseModelSnapshot.cs diff --git a/Bank/BankContracts/SearchModels/ProgramSearchModel.cs b/Bank/BankContracts/SearchModels/ProgramSearchModel.cs index 020707b..ce474ec 100644 --- a/Bank/BankContracts/SearchModels/ProgramSearchModel.cs +++ b/Bank/BankContracts/SearchModels/ProgramSearchModel.cs @@ -3,7 +3,7 @@ public class ProgramSearchModel { public int? Id { get; set; } - public int? ClientId { get; set; } + public string? ClientSnils { get; set; } public string? ProgramName { get; set; } public double? InterestRate { get; set; } } diff --git a/Bank/BankDatabaseImplement/BankDatabase.cs b/Bank/BankDatabaseImplement/BankDatabase.cs index 1235340..aaf1dfb 100644 --- a/Bank/BankDatabaseImplement/BankDatabase.cs +++ b/Bank/BankDatabaseImplement/BankDatabase.cs @@ -14,6 +14,11 @@ namespace BankDatabaseImplement } base.OnConfiguring(optionsBuilder); } + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasKey(c => c.Snils); + } public virtual DbSet Clients { set; get; } public virtual DbSet ClientPrograms { set; get; } public virtual DbSet ClientDeposits { set; get; } diff --git a/Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.Designer.cs b/Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.Designer.cs new file mode 100644 index 0000000..7d78d7d --- /dev/null +++ b/Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.Designer.cs @@ -0,0 +1,491 @@ +// +using System; +using BankDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BankDatabaseImplement.Migrations +{ + [DbContext(typeof(BankDatabase))] + [Migration("20240502003921_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("BankDatabaseImplement.Models.Client", b => + { + b.Property("Snils") + .HasColumnType("nvarchar(450)"); + + b.Property("ClientName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientPatronymic") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientSurname") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Snils"); + + b.HasIndex("WorkerId"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientDeposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientSnils") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("DepositId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientSnils"); + + b.HasIndex("DepositId"); + + b.ToTable("ClientDeposits"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientProgram", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientSnils") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ProgramId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientSnils"); + + b.HasIndex("ProgramId"); + + b.ToTable("ClientPrograms"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Course") + .HasColumnType("float"); + + b.Property("CurrencyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Currencies"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Deposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("OpeningDate") + .HasColumnType("date"); + + b.Property("Sum") + .HasColumnType("float"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Deposits"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.DepositCurrency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CurrencyId") + .HasColumnType("int"); + + b.Property("DepositId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CurrencyId"); + + b.HasIndex("DepositId"); + + b.ToTable("DepositCurrencies"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Program", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("InterestRate") + .HasColumnType("float"); + + b.Property("ProgramName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Programs"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ProgramCurrency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CurrencyId") + .HasColumnType("int"); + + b.Property("ProgramId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CurrencyId"); + + b.HasIndex("ProgramId"); + + b.ToTable("ProgramCurrencies"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Refill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DepositId") + .HasColumnType("int"); + + b.Property("RefillDate") + .HasColumnType("date"); + + b.Property("Sum") + .HasColumnType("float"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DepositId"); + + b.HasIndex("WorkerId"); + + b.ToTable("Refills"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Term", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Duration") + .HasColumnType("int"); + + b.Property("ProgramId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProgramId"); + + b.ToTable("Terms"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Worker", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.Property("WorkerName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerPatronymic") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerSurname") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Workers"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Client", b => + { + b.HasOne("BankDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientDeposit", b => + { + b.HasOne("BankDatabaseImplement.Models.Client", "Client") + .WithMany("Deposits") + .HasForeignKey("ClientSnils") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Deposit", "Deposit") + .WithMany("Clients") + .HasForeignKey("DepositId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientProgram", b => + { + b.HasOne("BankDatabaseImplement.Models.Client", "Client") + .WithMany("Programs") + .HasForeignKey("ClientSnils") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Program", "Program") + .WithMany("Clients") + .HasForeignKey("ProgramId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Program"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Deposit", b => + { + b.HasOne("BankDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.DepositCurrency", b => + { + b.HasOne("BankDatabaseImplement.Models.Currency", "Currency") + .WithMany("Deposits") + .HasForeignKey("CurrencyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Deposit", "Deposit") + .WithMany("Currencies") + .HasForeignKey("DepositId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Currency"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ProgramCurrency", b => + { + b.HasOne("BankDatabaseImplement.Models.Currency", "Currency") + .WithMany("Programs") + .HasForeignKey("CurrencyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Program", "Program") + .WithMany("Currencies") + .HasForeignKey("ProgramId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Currency"); + + b.Navigation("Program"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Refill", b => + { + b.HasOne("BankDatabaseImplement.Models.Deposit", "Deposit") + .WithMany("Refills") + .HasForeignKey("DepositId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Deposit"); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Term", b => + { + b.HasOne("BankDatabaseImplement.Models.Program", "Program") + .WithMany("Terms") + .HasForeignKey("ProgramId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Program"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Worker", b => + { + b.HasOne("BankDatabaseImplement.Models.Worker", null) + .WithMany("Workers") + .HasForeignKey("WorkerId"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Client", b => + { + b.Navigation("Deposits"); + + b.Navigation("Programs"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Currency", b => + { + b.Navigation("Deposits"); + + b.Navigation("Programs"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Deposit", b => + { + b.Navigation("Clients"); + + b.Navigation("Currencies"); + + b.Navigation("Refills"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Program", b => + { + b.Navigation("Clients"); + + b.Navigation("Currencies"); + + b.Navigation("Terms"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Worker", b => + { + b.Navigation("Workers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.cs b/Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.cs new file mode 100644 index 0000000..c59878f --- /dev/null +++ b/Bank/BankDatabaseImplement/Migrations/20240502003921_InitialCreate.cs @@ -0,0 +1,365 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BankDatabaseImplement.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Currencies", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + CurrencyName = table.Column(type: "nvarchar(max)", nullable: false), + Course = table.Column(type: "float", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Currencies", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Programs", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ProgramName = table.Column(type: "nvarchar(max)", nullable: false), + InterestRate = table.Column(type: "float", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Programs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Workers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + WorkerSurname = table.Column(type: "nvarchar(max)", nullable: false), + WorkerName = table.Column(type: "nvarchar(max)", nullable: false), + WorkerPatronymic = table.Column(type: "nvarchar(max)", nullable: false), + Phone = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + PasswordHash = table.Column(type: "nvarchar(max)", nullable: false), + WorkerId = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Workers", x => x.Id); + table.ForeignKey( + name: "FK_Workers_Workers_WorkerId", + column: x => x.WorkerId, + principalTable: "Workers", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "ProgramCurrencies", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ProgramId = table.Column(type: "int", nullable: false), + CurrencyId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProgramCurrencies", x => x.Id); + table.ForeignKey( + name: "FK_ProgramCurrencies_Currencies_CurrencyId", + column: x => x.CurrencyId, + principalTable: "Currencies", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_ProgramCurrencies_Programs_ProgramId", + column: x => x.ProgramId, + principalTable: "Programs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Terms", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Duration = table.Column(type: "int", nullable: false), + ProgramId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Terms", x => x.Id); + table.ForeignKey( + name: "FK_Terms_Programs_ProgramId", + column: x => x.ProgramId, + principalTable: "Programs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Clients", + columns: table => new + { + Snils = table.Column(type: "nvarchar(450)", nullable: false), + ClientSurname = table.Column(type: "nvarchar(max)", nullable: false), + ClientName = table.Column(type: "nvarchar(max)", nullable: false), + ClientPatronymic = table.Column(type: "nvarchar(max)", nullable: false), + Phone = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + PasswordHash = table.Column(type: "nvarchar(max)", nullable: false), + WorkerId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Clients", x => x.Snils); + table.ForeignKey( + name: "FK_Clients_Workers_WorkerId", + column: x => x.WorkerId, + principalTable: "Workers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Deposits", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + WorkerId = table.Column(type: "int", nullable: false), + Sum = table.Column(type: "float", nullable: false), + OpeningDate = table.Column(type: "date", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Deposits", x => x.Id); + table.ForeignKey( + name: "FK_Deposits_Workers_WorkerId", + column: x => x.WorkerId, + principalTable: "Workers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ClientPrograms", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ClientSnils = table.Column(type: "nvarchar(450)", nullable: false), + ProgramId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClientPrograms", x => x.Id); + table.ForeignKey( + name: "FK_ClientPrograms_Clients_ClientSnils", + column: x => x.ClientSnils, + principalTable: "Clients", + principalColumn: "Snils", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ClientPrograms_Programs_ProgramId", + column: x => x.ProgramId, + principalTable: "Programs", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "ClientDeposits", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ClientSnils = table.Column(type: "nvarchar(450)", nullable: false), + DepositId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClientDeposits", x => x.Id); + table.ForeignKey( + name: "FK_ClientDeposits_Clients_ClientSnils", + column: x => x.ClientSnils, + principalTable: "Clients", + principalColumn: "Snils", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ClientDeposits_Deposits_DepositId", + column: x => x.DepositId, + principalTable: "Deposits"); + }); + + migrationBuilder.CreateTable( + name: "DepositCurrencies", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + DepositId = table.Column(type: "int", nullable: false), + CurrencyId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_DepositCurrencies", x => x.Id); + table.ForeignKey( + name: "FK_DepositCurrencies_Currencies_CurrencyId", + column: x => x.CurrencyId, + principalTable: "Currencies", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_DepositCurrencies_Deposits_DepositId", + column: x => x.DepositId, + principalTable: "Deposits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Refills", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + DepositId = table.Column(type: "int", nullable: false), + WorkerId = table.Column(type: "int", nullable: false), + Sum = table.Column(type: "float", nullable: false), + RefillDate = table.Column(type: "date", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Refills", x => x.Id); + table.ForeignKey( + name: "FK_Refills_Deposits_DepositId", + column: x => x.DepositId, + principalTable: "Deposits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Refills_Workers_WorkerId", + column: x => x.WorkerId, + principalTable: "Workers", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_ClientDeposits_ClientSnils", + table: "ClientDeposits", + column: "ClientSnils"); + + migrationBuilder.CreateIndex( + name: "IX_ClientDeposits_DepositId", + table: "ClientDeposits", + column: "DepositId"); + + migrationBuilder.CreateIndex( + name: "IX_ClientPrograms_ClientSnils", + table: "ClientPrograms", + column: "ClientSnils"); + + migrationBuilder.CreateIndex( + name: "IX_ClientPrograms_ProgramId", + table: "ClientPrograms", + column: "ProgramId"); + + migrationBuilder.CreateIndex( + name: "IX_Clients_WorkerId", + table: "Clients", + column: "WorkerId"); + + migrationBuilder.CreateIndex( + name: "IX_DepositCurrencies_CurrencyId", + table: "DepositCurrencies", + column: "CurrencyId"); + + migrationBuilder.CreateIndex( + name: "IX_DepositCurrencies_DepositId", + table: "DepositCurrencies", + column: "DepositId"); + + migrationBuilder.CreateIndex( + name: "IX_Deposits_WorkerId", + table: "Deposits", + column: "WorkerId"); + + migrationBuilder.CreateIndex( + name: "IX_ProgramCurrencies_CurrencyId", + table: "ProgramCurrencies", + column: "CurrencyId"); + + migrationBuilder.CreateIndex( + name: "IX_ProgramCurrencies_ProgramId", + table: "ProgramCurrencies", + column: "ProgramId"); + + migrationBuilder.CreateIndex( + name: "IX_Refills_DepositId", + table: "Refills", + column: "DepositId"); + + migrationBuilder.CreateIndex( + name: "IX_Refills_WorkerId", + table: "Refills", + column: "WorkerId"); + + migrationBuilder.CreateIndex( + name: "IX_Terms_ProgramId", + table: "Terms", + column: "ProgramId"); + + migrationBuilder.CreateIndex( + name: "IX_Workers_WorkerId", + table: "Workers", + column: "WorkerId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ClientDeposits"); + + migrationBuilder.DropTable( + name: "ClientPrograms"); + + migrationBuilder.DropTable( + name: "DepositCurrencies"); + + migrationBuilder.DropTable( + name: "ProgramCurrencies"); + + migrationBuilder.DropTable( + name: "Refills"); + + migrationBuilder.DropTable( + name: "Terms"); + + migrationBuilder.DropTable( + name: "Clients"); + + migrationBuilder.DropTable( + name: "Currencies"); + + migrationBuilder.DropTable( + name: "Deposits"); + + migrationBuilder.DropTable( + name: "Programs"); + + migrationBuilder.DropTable( + name: "Workers"); + } + } +} diff --git a/Bank/BankDatabaseImplement/Migrations/BankDatabaseModelSnapshot.cs b/Bank/BankDatabaseImplement/Migrations/BankDatabaseModelSnapshot.cs new file mode 100644 index 0000000..18b3fee --- /dev/null +++ b/Bank/BankDatabaseImplement/Migrations/BankDatabaseModelSnapshot.cs @@ -0,0 +1,488 @@ +// +using System; +using BankDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BankDatabaseImplement.Migrations +{ + [DbContext(typeof(BankDatabase))] + partial class BankDatabaseModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("BankDatabaseImplement.Models.Client", b => + { + b.Property("Snils") + .HasColumnType("nvarchar(450)"); + + b.Property("ClientName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientPatronymic") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientSurname") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Snils"); + + b.HasIndex("WorkerId"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientDeposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientSnils") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("DepositId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientSnils"); + + b.HasIndex("DepositId"); + + b.ToTable("ClientDeposits"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientProgram", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClientSnils") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ProgramId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientSnils"); + + b.HasIndex("ProgramId"); + + b.ToTable("ClientPrograms"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Course") + .HasColumnType("float"); + + b.Property("CurrencyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Currencies"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Deposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("OpeningDate") + .HasColumnType("date"); + + b.Property("Sum") + .HasColumnType("float"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Deposits"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.DepositCurrency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CurrencyId") + .HasColumnType("int"); + + b.Property("DepositId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CurrencyId"); + + b.HasIndex("DepositId"); + + b.ToTable("DepositCurrencies"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Program", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("InterestRate") + .HasColumnType("float"); + + b.Property("ProgramName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Programs"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ProgramCurrency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CurrencyId") + .HasColumnType("int"); + + b.Property("ProgramId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CurrencyId"); + + b.HasIndex("ProgramId"); + + b.ToTable("ProgramCurrencies"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Refill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DepositId") + .HasColumnType("int"); + + b.Property("RefillDate") + .HasColumnType("date"); + + b.Property("Sum") + .HasColumnType("float"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DepositId"); + + b.HasIndex("WorkerId"); + + b.ToTable("Refills"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Term", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Duration") + .HasColumnType("int"); + + b.Property("ProgramId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProgramId"); + + b.ToTable("Terms"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Worker", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.Property("WorkerName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerPatronymic") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerSurname") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Workers"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Client", b => + { + b.HasOne("BankDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientDeposit", b => + { + b.HasOne("BankDatabaseImplement.Models.Client", "Client") + .WithMany("Deposits") + .HasForeignKey("ClientSnils") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Deposit", "Deposit") + .WithMany("Clients") + .HasForeignKey("DepositId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ClientProgram", b => + { + b.HasOne("BankDatabaseImplement.Models.Client", "Client") + .WithMany("Programs") + .HasForeignKey("ClientSnils") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Program", "Program") + .WithMany("Clients") + .HasForeignKey("ProgramId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Program"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Deposit", b => + { + b.HasOne("BankDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.DepositCurrency", b => + { + b.HasOne("BankDatabaseImplement.Models.Currency", "Currency") + .WithMany("Deposits") + .HasForeignKey("CurrencyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Deposit", "Deposit") + .WithMany("Currencies") + .HasForeignKey("DepositId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Currency"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.ProgramCurrency", b => + { + b.HasOne("BankDatabaseImplement.Models.Currency", "Currency") + .WithMany("Programs") + .HasForeignKey("CurrencyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Program", "Program") + .WithMany("Currencies") + .HasForeignKey("ProgramId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Currency"); + + b.Navigation("Program"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Refill", b => + { + b.HasOne("BankDatabaseImplement.Models.Deposit", "Deposit") + .WithMany("Refills") + .HasForeignKey("DepositId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BankDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Deposit"); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Term", b => + { + b.HasOne("BankDatabaseImplement.Models.Program", "Program") + .WithMany("Terms") + .HasForeignKey("ProgramId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Program"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Worker", b => + { + b.HasOne("BankDatabaseImplement.Models.Worker", null) + .WithMany("Workers") + .HasForeignKey("WorkerId"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Client", b => + { + b.Navigation("Deposits"); + + b.Navigation("Programs"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Currency", b => + { + b.Navigation("Deposits"); + + b.Navigation("Programs"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Deposit", b => + { + b.Navigation("Clients"); + + b.Navigation("Currencies"); + + b.Navigation("Refills"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Program", b => + { + b.Navigation("Clients"); + + b.Navigation("Currencies"); + + b.Navigation("Terms"); + }); + + modelBuilder.Entity("BankDatabaseImplement.Models.Worker", b => + { + b.Navigation("Workers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Bank/BankDatabaseImplement/Models/Client.cs b/Bank/BankDatabaseImplement/Models/Client.cs index 3cb731a..e6c93dd 100644 --- a/Bank/BankDatabaseImplement/Models/Client.cs +++ b/Bank/BankDatabaseImplement/Models/Client.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations; using BankContracts.BindingModels; using BankContracts.ViewModels; +using Microsoft.EntityFrameworkCore; namespace BankDatabaseImplement.Models { @@ -23,11 +24,11 @@ namespace BankDatabaseImplement.Models [Required] public int WorkerId { get; set; } public virtual Worker? Worker { get; set; } - [ForeignKey("ClientId")] + [ForeignKey("ClientSnils")] public virtual List Programs { get; set; } = new(); private Dictionary? _clientPrograms { get; set; } = null; - [ForeignKey("ClientId")] + [ForeignKey("ClientSnils")] public virtual List Deposits { get; set; } = new(); private Dictionary? _clientDeposits { get; set; } = null; diff --git a/Bank/BankDatabaseImplement/Models/ClientDeposit.cs b/Bank/BankDatabaseImplement/Models/ClientDeposit.cs index d3bcadd..2d764bd 100644 --- a/Bank/BankDatabaseImplement/Models/ClientDeposit.cs +++ b/Bank/BankDatabaseImplement/Models/ClientDeposit.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations; using BankContracts.BindingModels; using BankContracts.ViewModels; +using Microsoft.EntityFrameworkCore; namespace BankDatabaseImplement.Models { @@ -10,7 +11,7 @@ namespace BankDatabaseImplement.Models { public int Id { get; set; } [Required] - public int ClientId { get; set; } + public string ClientSnils { get; set; } = string.Empty; [Required] public int DepositId { get; set; } public virtual Client Client { get; set; } = new(); diff --git a/Bank/BankDatabaseImplement/Models/ClientProgram.cs b/Bank/BankDatabaseImplement/Models/ClientProgram.cs index e86bbb5..061a7d9 100644 --- a/Bank/BankDatabaseImplement/Models/ClientProgram.cs +++ b/Bank/BankDatabaseImplement/Models/ClientProgram.cs @@ -10,7 +10,7 @@ namespace BankDatabaseImplement.Models { public int Id { get; set; } [Required] - public int ClientId { get; set; } + public string ClientSnils { get; set; } = string.Empty; [Required] public int ProgramId { get; set; } public virtual Client Client { get; set; } = new(); diff --git a/Bank/BankDatabaseImplement/Models/Deposit.cs b/Bank/BankDatabaseImplement/Models/Deposit.cs index 5bdf4a9..283ca44 100644 --- a/Bank/BankDatabaseImplement/Models/Deposit.cs +++ b/Bank/BankDatabaseImplement/Models/Deposit.cs @@ -23,8 +23,7 @@ namespace BankDatabaseImplement.Models [ForeignKey("DepositId")] public virtual List Refills { get; set; } = new(); private Dictionary? - _depositCurrencies - { get; set; } = null; + _depositCurrencies { get; set; } = null; [NotMapped] public Dictionary DepositCurrencies {