From d231a45dd7f3cda8cd44b003e4fd193d15d5374a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?10=D0=93=20=D0=95=D0=B3=D0=BE=D1=80=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 16 May 2023 17:10:51 +0400 Subject: [PATCH] final 8 --- .../SecuritySystemContracts.dll | Bin 0 -> 31744 bytes .../SecuritySystemDataModels.dll | Bin 0 -> 6144 bytes .../SecuritySystemDatabaseImplement.dll | Bin 0 -> 75776 bytes SecuritySystem/SecuritySystem.sln | 1 - .../20230516093706_lab8.Designer.cs | 298 ++++++++++++++++++ .../Migrations/20230516093706_lab8.cs | 215 +++++++++++++ .../SecuritySystemDatabaseModelSnapshot.cs | 295 +++++++++++++++++ .../Models/Implementer.cs | 4 +- .../SecuritySystemDatabaseImplement.csproj | 4 + .../Implements/ClientStorage.cs | 2 +- .../Implements/ComponentStorage.cs | 2 +- .../Implements/OrderStorage.cs | 2 +- .../Implements/SecureStorage.cs | 2 +- .../ListImplementationExtension.cs | 1 - .../Models/MessageInfo.cs | 2 +- 15 files changed, 819 insertions(+), 9 deletions(-) create mode 100644 SecuritySystem/ImplementationExtensions/SecuritySystemContracts.dll create mode 100644 SecuritySystem/ImplementationExtensions/SecuritySystemDataModels.dll create mode 100644 SecuritySystem/ImplementationExtensions/SecuritySystemDatabaseImplement.dll create mode 100644 SecuritySystemDatabaseImplement/Migrations/20230516093706_lab8.Designer.cs create mode 100644 SecuritySystemDatabaseImplement/Migrations/20230516093706_lab8.cs create mode 100644 SecuritySystemDatabaseImplement/Migrations/SecuritySystemDatabaseModelSnapshot.cs diff --git a/SecuritySystem/ImplementationExtensions/SecuritySystemContracts.dll b/SecuritySystem/ImplementationExtensions/SecuritySystemContracts.dll new file mode 100644 index 0000000000000000000000000000000000000000..226224f1282d691427296fa598274e715ce850c7 GIT binary patch literal 31744 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 cX}Ev>$*)_Ce=~UAhNsHr`>J9Y+UcUCjA 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 literal 0 HcmV?d00001 diff --git a/SecuritySystem/ImplementationExtensions/SecuritySystemDatabaseImplement.dll b/SecuritySystem/ImplementationExtensions/SecuritySystemDatabaseImplement.dll new file mode 100644 index 0000000000000000000000000000000000000000..821cd2acfeed14ff85e768a94aadea4f122e412b GIT binary patch literal 75776 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 +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using SecuritySystemDatabaseImplement; + +#nullable disable + +namespace SecuritySystemDatabaseImplement.Migrations +{ + [DbContext(typeof(SecuritySystemDatabase))] + [Migration("20230516093706_lab8")] + partial class lab8 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.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.HasKey("Id"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Implementer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ImplementerFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Qualification") + .HasColumnType("integer"); + + b.Property("WorkExperience") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Implementers"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.MessageInfo", b => + { + b.Property("MessageId") + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("DateDelivery") + .HasColumnType("timestamp with time zone"); + + b.Property("SenderName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("MessageId"); + + b.HasIndex("ClientId"); + + b.ToTable("MessageInfos"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("DateCreate") + .HasColumnType("timestamp with time zone"); + + b.Property("DateImplement") + .HasColumnType("timestamp with time zone"); + + b.Property("ImplementerId") + .HasColumnType("integer"); + + b.Property("SecureId") + .HasColumnType("integer"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("Sum") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ImplementerId"); + + b.HasIndex("SecureId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Secure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("double precision"); + + b.Property("SecureName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Secures"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.SecureComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("integer"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("SecureId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("SecureId"); + + b.ToTable("SecureComponents"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.MessageInfo", b => + { + b.HasOne("SecuritySystemDatabaseImplement.Models.Client", "Client") + .WithMany("MessageInfos") + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Order", b => + { + b.HasOne("SecuritySystemDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SecuritySystemDatabaseImplement.Models.Implementer", "Implementer") + .WithMany("Orders") + .HasForeignKey("ImplementerId"); + + b.HasOne("SecuritySystemDatabaseImplement.Models.Secure", "Secure") + .WithMany("Orders") + .HasForeignKey("SecureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Implementer"); + + b.Navigation("Secure"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.SecureComponent", b => + { + b.HasOne("SecuritySystemDatabaseImplement.Models.Component", "Component") + .WithMany("SecureComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SecuritySystemDatabaseImplement.Models.Secure", "Secure") + .WithMany("Components") + .HasForeignKey("SecureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Secure"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Client", b => + { + b.Navigation("MessageInfos"); + + b.Navigation("Orders"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Component", b => + { + b.Navigation("SecureComponents"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Implementer", b => + { + b.Navigation("Orders"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Secure", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/SecuritySystemDatabaseImplement/Migrations/20230516093706_lab8.cs b/SecuritySystemDatabaseImplement/Migrations/20230516093706_lab8.cs new file mode 100644 index 0000000..d45659d --- /dev/null +++ b/SecuritySystemDatabaseImplement/Migrations/20230516093706_lab8.cs @@ -0,0 +1,215 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace SecuritySystemDatabaseImplement.Migrations +{ + /// + public partial class lab8 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Clients", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ClientFIO = table.Column(type: "text", nullable: false), + Email = table.Column(type: "text", nullable: false), + Password = table.Column(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Clients", x => x.Id); + }); + + 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) + }, + constraints: table => + { + table.PrimaryKey("PK_Components", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Implementers", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ImplementerFIO = table.Column(type: "text", nullable: false), + Password = table.Column(type: "text", nullable: false), + WorkExperience = table.Column(type: "integer", nullable: false), + Qualification = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Implementers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Secures", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + SecureName = table.Column(type: "text", nullable: false), + Price = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Secures", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "MessageInfos", + columns: table => new + { + MessageId = table.Column(type: "text", nullable: false), + ClientId = table.Column(type: "integer", nullable: true), + SenderName = table.Column(type: "text", nullable: false), + DateDelivery = table.Column(type: "timestamp with time zone", nullable: false), + Subject = table.Column(type: "text", nullable: false), + Body = table.Column(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MessageInfos", x => x.MessageId); + table.ForeignKey( + name: "FK_MessageInfos_Clients_ClientId", + column: x => x.ClientId, + principalTable: "Clients", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "Orders", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + SecureId = table.Column(type: "integer", nullable: false), + ClientId = table.Column(type: "integer", nullable: false), + ImplementerId = table.Column(type: "integer", nullable: true), + 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_Clients_ClientId", + column: x => x.ClientId, + principalTable: "Clients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Orders_Implementers_ImplementerId", + column: x => x.ImplementerId, + principalTable: "Implementers", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_Orders_Secures_SecureId", + column: x => x.SecureId, + principalTable: "Secures", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "SecureComponents", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + SecureId = 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_SecureComponents", x => x.Id); + table.ForeignKey( + name: "FK_SecureComponents_Components_ComponentId", + column: x => x.ComponentId, + principalTable: "Components", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_SecureComponents_Secures_SecureId", + column: x => x.SecureId, + principalTable: "Secures", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_MessageInfos_ClientId", + table: "MessageInfos", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_Orders_ClientId", + table: "Orders", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_Orders_ImplementerId", + table: "Orders", + column: "ImplementerId"); + + migrationBuilder.CreateIndex( + name: "IX_Orders_SecureId", + table: "Orders", + column: "SecureId"); + + migrationBuilder.CreateIndex( + name: "IX_SecureComponents_ComponentId", + table: "SecureComponents", + column: "ComponentId"); + + migrationBuilder.CreateIndex( + name: "IX_SecureComponents_SecureId", + table: "SecureComponents", + column: "SecureId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "MessageInfos"); + + migrationBuilder.DropTable( + name: "Orders"); + + migrationBuilder.DropTable( + name: "SecureComponents"); + + migrationBuilder.DropTable( + name: "Clients"); + + migrationBuilder.DropTable( + name: "Implementers"); + + migrationBuilder.DropTable( + name: "Components"); + + migrationBuilder.DropTable( + name: "Secures"); + } + } +} diff --git a/SecuritySystemDatabaseImplement/Migrations/SecuritySystemDatabaseModelSnapshot.cs b/SecuritySystemDatabaseImplement/Migrations/SecuritySystemDatabaseModelSnapshot.cs new file mode 100644 index 0000000..33bc8a4 --- /dev/null +++ b/SecuritySystemDatabaseImplement/Migrations/SecuritySystemDatabaseModelSnapshot.cs @@ -0,0 +1,295 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using SecuritySystemDatabaseImplement; + +#nullable disable + +namespace SecuritySystemDatabaseImplement.Migrations +{ + [DbContext(typeof(SecuritySystemDatabase))] + partial class SecuritySystemDatabaseModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.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.HasKey("Id"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Implementer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ImplementerFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Qualification") + .HasColumnType("integer"); + + b.Property("WorkExperience") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Implementers"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.MessageInfo", b => + { + b.Property("MessageId") + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("DateDelivery") + .HasColumnType("timestamp with time zone"); + + b.Property("SenderName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("MessageId"); + + b.HasIndex("ClientId"); + + b.ToTable("MessageInfos"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("DateCreate") + .HasColumnType("timestamp with time zone"); + + b.Property("DateImplement") + .HasColumnType("timestamp with time zone"); + + b.Property("ImplementerId") + .HasColumnType("integer"); + + b.Property("SecureId") + .HasColumnType("integer"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("Sum") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ImplementerId"); + + b.HasIndex("SecureId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Secure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("double precision"); + + b.Property("SecureName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Secures"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.SecureComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("integer"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("SecureId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("SecureId"); + + b.ToTable("SecureComponents"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.MessageInfo", b => + { + b.HasOne("SecuritySystemDatabaseImplement.Models.Client", "Client") + .WithMany("MessageInfos") + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Order", b => + { + b.HasOne("SecuritySystemDatabaseImplement.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SecuritySystemDatabaseImplement.Models.Implementer", "Implementer") + .WithMany("Orders") + .HasForeignKey("ImplementerId"); + + b.HasOne("SecuritySystemDatabaseImplement.Models.Secure", "Secure") + .WithMany("Orders") + .HasForeignKey("SecureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Implementer"); + + b.Navigation("Secure"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.SecureComponent", b => + { + b.HasOne("SecuritySystemDatabaseImplement.Models.Component", "Component") + .WithMany("SecureComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SecuritySystemDatabaseImplement.Models.Secure", "Secure") + .WithMany("Components") + .HasForeignKey("SecureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Secure"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Client", b => + { + b.Navigation("MessageInfos"); + + b.Navigation("Orders"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Component", b => + { + b.Navigation("SecureComponents"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Implementer", b => + { + b.Navigation("Orders"); + }); + + modelBuilder.Entity("SecuritySystemDatabaseImplement.Models.Secure", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/SecuritySystemDatabaseImplement/Models/Implementer.cs b/SecuritySystemDatabaseImplement/Models/Implementer.cs index ff6f42e..f69b07a 100644 --- a/SecuritySystemDatabaseImplement/Models/Implementer.cs +++ b/SecuritySystemDatabaseImplement/Models/Implementer.cs @@ -8,11 +8,11 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.Serialization; - +using SecuritySystemDataModels.Models; namespace SecuritySystemDatabaseImplement.Models { [DataContract] - public class Implementer + public class Implementer:IImplementerModel { [DataMember] public int Id { get; private set; } diff --git a/SecuritySystemDatabaseImplement/SecuritySystemDatabaseImplement.csproj b/SecuritySystemDatabaseImplement/SecuritySystemDatabaseImplement.csproj index afdadd6..3393369 100644 --- a/SecuritySystemDatabaseImplement/SecuritySystemDatabaseImplement.csproj +++ b/SecuritySystemDatabaseImplement/SecuritySystemDatabaseImplement.csproj @@ -19,4 +19,8 @@ + + + + diff --git a/SecuritySystemListImplement/Implements/ClientStorage.cs b/SecuritySystemListImplement/Implements/ClientStorage.cs index 48b1227..da94d79 100644 --- a/SecuritySystemListImplement/Implements/ClientStorage.cs +++ b/SecuritySystemListImplement/Implements/ClientStorage.cs @@ -1,6 +1,6 @@ using SecuritySystemContracts.BindingModels; using SecuritySystemContracts.SearchModels; -using SecuritySystemContracts.StoragesContracts; +using SecuritySystemContracts.StorageContracts; using SecuritySystemContracts.ViewModels; using SecuritySystemListImplement.Models; diff --git a/SecuritySystemListImplement/Implements/ComponentStorage.cs b/SecuritySystemListImplement/Implements/ComponentStorage.cs index 4d9bff8..eb35850 100644 --- a/SecuritySystemListImplement/Implements/ComponentStorage.cs +++ b/SecuritySystemListImplement/Implements/ComponentStorage.cs @@ -1,7 +1,7 @@  using SecuritySystemContracts.BindingModels; using SecuritySystemContracts.SearchModels; -using SecuritySystemContracts.StoragesContracts; +using SecuritySystemContracts.StorageContracts; using SecuritySystemContracts.ViewModels; using SecuritySystemListImplement.Models; diff --git a/SecuritySystemListImplement/Implements/OrderStorage.cs b/SecuritySystemListImplement/Implements/OrderStorage.cs index 2c723f6..86bee2e 100644 --- a/SecuritySystemListImplement/Implements/OrderStorage.cs +++ b/SecuritySystemListImplement/Implements/OrderStorage.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using SecuritySystemContracts.BindingModels; using SecuritySystemContracts.SearchModels; -using SecuritySystemContracts.StoragesContracts; +using SecuritySystemContracts.StorageContracts; using SecuritySystemContracts.ViewModels; using SecuritySystemListImplement.Models; diff --git a/SecuritySystemListImplement/Implements/SecureStorage.cs b/SecuritySystemListImplement/Implements/SecureStorage.cs index f918105..dc4d192 100644 --- a/SecuritySystemListImplement/Implements/SecureStorage.cs +++ b/SecuritySystemListImplement/Implements/SecureStorage.cs @@ -1,7 +1,7 @@ using SecuritySystemListImplement.Models; using SecuritySystemContracts.BindingModels; using SecuritySystemContracts.SearchModels; -using SecuritySystemContracts.StoragesContracts; +using SecuritySystemContracts.StorageContracts; using SecuritySystemContracts.ViewModels; diff --git a/SecuritySystemListImplement/ListImplementationExtension.cs b/SecuritySystemListImplement/ListImplementationExtension.cs index 1b47920..1170d0e 100644 --- a/SecuritySystemListImplement/ListImplementationExtension.cs +++ b/SecuritySystemListImplement/ListImplementationExtension.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using SecuritySystemContracts.DI; using SecuritySystemContracts.StorageContracts; using SecuritySystemListImplement.Implements; - namespace SecuritySystemListImplement { public class ListImplementationExtension : IImplementationExtension diff --git a/SecuritySystemListImplement/Models/MessageInfo.cs b/SecuritySystemListImplement/Models/MessageInfo.cs index 6cdb4b4..13e707d 100644 --- a/SecuritySystemListImplement/Models/MessageInfo.cs +++ b/SecuritySystemListImplement/Models/MessageInfo.cs @@ -9,7 +9,7 @@ using SecuritySystemDataModels.Models; namespace SecuritySystemListImplement.Models { - public class MessageInfo : IMessageInfoModel + public class MessageInfo { public string MessageId { get; private set; } = string.Empty;