From 43b1b104b9c621c04b29bbd60d92ba0f7407e258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9?= Date: Sat, 29 Apr 2023 15:10:19 +0400 Subject: [PATCH] fix --- .../FoodOrdersDatabase.cs | 2 +- .../Implements/MessageInfoStorage.cs | 12 +- .../Migrations/20230409213338_6b.Designer.cs | 257 --------------- .../Migrations/20230409213338_6b.cs | 185 ----------- .../20230421094549_Message.Designer.cs | 296 ------------------ .../Migrations/20230421094549_Message.cs | 48 --- .../FoodOrdersDatabaseModelSnapshot.cs | 293 ----------------- .../Models/EmailMessage.cs | 6 +- .../Models/MessageInfo.cs | 87 +++++ .../Models/MessageInfo.cs | 52 +++ .../FoodOrdersContracts.dll | Bin 0 -> 31744 bytes .../FoodOrdersDataModels.dll | Bin 0 -> 6144 bytes .../FoodOrdersDatabaseImplement.dll | Bin 0 -> 78336 bytes .../FoodOrdersFileImplement.dll | Bin 0 -> 36864 bytes .../FoodOrdersListImplement.dll | Bin 0 -> 23552 bytes 15 files changed, 149 insertions(+), 1089 deletions(-) delete mode 100644 FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.Designer.cs delete mode 100644 FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.cs delete mode 100644 FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.Designer.cs delete mode 100644 FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.cs delete mode 100644 FoodOrders/FoodOrdersDatabaseImplement/Migrations/FoodOrdersDatabaseModelSnapshot.cs create mode 100644 FoodOrders/FoodOrdersFileImplement/Models/MessageInfo.cs create mode 100644 FoodOrders/FoodOrdersListImplement/Models/MessageInfo.cs create mode 100644 FoodOrders/ImplementationExtensions/FoodOrdersContracts.dll create mode 100644 FoodOrders/ImplementationExtensions/FoodOrdersDataModels.dll create mode 100644 FoodOrders/ImplementationExtensions/FoodOrdersDatabaseImplement.dll create mode 100644 FoodOrders/ImplementationExtensions/FoodOrdersFileImplement.dll create mode 100644 FoodOrders/ImplementationExtensions/FoodOrdersListImplement.dll diff --git a/FoodOrders/FoodOrdersDatabaseImplement/FoodOrdersDatabase.cs b/FoodOrders/FoodOrdersDatabaseImplement/FoodOrdersDatabase.cs index 9788cfc..5678367 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/FoodOrdersDatabase.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/FoodOrdersDatabase.cs @@ -26,6 +26,6 @@ namespace FoodOrdersDatabaseImplement public virtual DbSet Implementers { set; get; } - public virtual DbSet EmailMessages { set; get; } + public virtual DbSet Messages { set; get; } } } \ No newline at end of file diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Implements/MessageInfoStorage.cs b/FoodOrders/FoodOrdersDatabaseImplement/Implements/MessageInfoStorage.cs index ba67035..5ee950a 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Implements/MessageInfoStorage.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Implements/MessageInfoStorage.cs @@ -13,7 +13,7 @@ namespace FoodOrdersDatabaseImplement.Implements using var context = new FoodOrdersDatabase(); if (!string.IsNullOrEmpty(model.MessageId)) { - return context.EmailMessages.FirstOrDefault(x => x.MessageId == model.MessageId)?.GetViewModel; + return context.Messages.FirstOrDefault(x => x.MessageId == model.MessageId)?.GetViewModel; } return null; } @@ -25,7 +25,7 @@ namespace FoodOrdersDatabaseImplement.Implements return new(); } using var context = new FoodOrdersDatabase(); - return context.EmailMessages + return context.Messages .Where(x => x.ClientId == model.ClientId) .Select(x => x.GetViewModel) .ToList(); @@ -34,22 +34,22 @@ namespace FoodOrdersDatabaseImplement.Implements public List GetFullList() { using var context = new FoodOrdersDatabase(); - return context.EmailMessages + return context.Messages .Select(x => x.GetViewModel) .ToList(); } public MessageInfoViewModel? Insert(MessageInfoBindingModel model) { - var newMessage = EmailMessage.Create(model); + var newMessage = MessageInfo.Create(model); if (newMessage == null) { return null; } using var context = new FoodOrdersDatabase(); - context.EmailMessages.Add(newMessage); + context.Messages.Add(newMessage); context.SaveChanges(); - return context.EmailMessages + return context.Messages .FirstOrDefault(x => x.MessageId == newMessage.MessageId)?.GetViewModel; } } diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.Designer.cs b/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.Designer.cs deleted file mode 100644 index be789c2..0000000 --- a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.Designer.cs +++ /dev/null @@ -1,257 +0,0 @@ -// -using System; -using FoodOrdersDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace FoodOrdersDatabaseImplement.Migrations -{ - [DbContext(typeof(FoodOrdersDatabase))] - [Migration("20230409213338_6b")] - partial class _6b - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Dish", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("DishName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Dishes"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.DishComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DishId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("DishId"); - - b.ToTable("DishComponents"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Implementer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ImplementerFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Qualification") - .HasColumnType("int"); - - b.Property("WorkExperience") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("Implementers"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ClientId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("DishId") - .HasColumnType("int"); - - b.Property("ImplementerId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.HasIndex("DishId"); - - b.HasIndex("ImplementerId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.DishComponent", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Component", "Component") - .WithMany("DishComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Dish", "Dish") - .WithMany("Components") - .HasForeignKey("DishId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Dish"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Order", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Client", "Client") - .WithMany("Orders") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Dish", "Dish") - .WithMany("Orders") - .HasForeignKey("DishId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Implementer", "Implementer") - .WithMany("Orders") - .HasForeignKey("ImplementerId"); - - b.Navigation("Client"); - - b.Navigation("Dish"); - - b.Navigation("Implementer"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Component", b => - { - b.Navigation("DishComponents"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Dish", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Implementer", b => - { - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.cs b/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.cs deleted file mode 100644 index fa28aff..0000000 --- a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230409213338_6b.cs +++ /dev/null @@ -1,185 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace FoodOrdersDatabaseImplement.Migrations -{ - /// - public partial class _6b : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Clients", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ClientFIO = table.Column(type: "nvarchar(max)", nullable: false), - Email = table.Column(type: "nvarchar(max)", nullable: false), - Password = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Clients", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Components", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ComponentName = table.Column(type: "nvarchar(max)", nullable: false), - Cost = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Components", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Dishes", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - DishName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Dishes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Implementers", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ImplementerFIO = table.Column(type: "nvarchar(max)", nullable: false), - Password = table.Column(type: "nvarchar(max)", nullable: false), - WorkExperience = table.Column(type: "int", nullable: false), - Qualification = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Implementers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "DishComponents", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - DishId = table.Column(type: "int", nullable: false), - ComponentId = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_DishComponents", x => x.Id); - table.ForeignKey( - name: "FK_DishComponents_Components_ComponentId", - column: x => x.ComponentId, - principalTable: "Components", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_DishComponents_Dishes_DishId", - column: x => x.DishId, - principalTable: "Dishes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Orders", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - DishId = table.Column(type: "int", nullable: false), - ClientId = table.Column(type: "int", nullable: false), - ImplementerId = table.Column(type: "int", nullable: true), - Count = table.Column(type: "int", nullable: false), - Sum = table.Column(type: "float", nullable: false), - Status = table.Column(type: "int", nullable: false), - DateCreate = table.Column(type: "datetime2", nullable: false), - DateImplement = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Orders", x => x.Id); - table.ForeignKey( - name: "FK_Orders_Clients_ClientId", - column: x => x.ClientId, - principalTable: "Clients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Orders_Dishes_DishId", - column: x => x.DishId, - principalTable: "Dishes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Orders_Implementers_ImplementerId", - column: x => x.ImplementerId, - principalTable: "Implementers", - principalColumn: "Id"); - }); - - migrationBuilder.CreateIndex( - name: "IX_DishComponents_ComponentId", - table: "DishComponents", - column: "ComponentId"); - - migrationBuilder.CreateIndex( - name: "IX_DishComponents_DishId", - table: "DishComponents", - column: "DishId"); - - migrationBuilder.CreateIndex( - name: "IX_Orders_ClientId", - table: "Orders", - column: "ClientId"); - - migrationBuilder.CreateIndex( - name: "IX_Orders_DishId", - table: "Orders", - column: "DishId"); - - migrationBuilder.CreateIndex( - name: "IX_Orders_ImplementerId", - table: "Orders", - column: "ImplementerId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "DishComponents"); - - migrationBuilder.DropTable( - name: "Orders"); - - migrationBuilder.DropTable( - name: "Components"); - - migrationBuilder.DropTable( - name: "Clients"); - - migrationBuilder.DropTable( - name: "Dishes"); - - migrationBuilder.DropTable( - name: "Implementers"); - } - } -} diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.Designer.cs b/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.Designer.cs deleted file mode 100644 index 45896a1..0000000 --- a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.Designer.cs +++ /dev/null @@ -1,296 +0,0 @@ -// -using System; -using FoodOrdersDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace FoodOrdersDatabaseImplement.Migrations -{ - [DbContext(typeof(FoodOrdersDatabase))] - [Migration("20230421094549_Message")] - partial class Message - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Dish", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("DishName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Dishes"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.DishComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DishId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("DishId"); - - b.ToTable("DishComponents"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.EmailMessage", b => - { - b.Property("MessageId") - .HasColumnType("nvarchar(450)"); - - b.Property("Body") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ClientId") - .HasColumnType("int"); - - b.Property("DateDelivery") - .HasColumnType("datetime2"); - - b.Property("SenderName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Subject") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("MessageId"); - - b.HasIndex("ClientId"); - - b.ToTable("EmailMessages"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Implementer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ImplementerFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Qualification") - .HasColumnType("int"); - - b.Property("WorkExperience") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("Implementers"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ClientId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("DishId") - .HasColumnType("int"); - - b.Property("ImplementerId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.HasIndex("DishId"); - - b.HasIndex("ImplementerId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.DishComponent", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Component", "Component") - .WithMany("DishComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Dish", "Dish") - .WithMany("Components") - .HasForeignKey("DishId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Dish"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.EmailMessage", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Client", "Client") - .WithMany() - .HasForeignKey("ClientId"); - - b.Navigation("Client"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Order", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Client", "Client") - .WithMany("Orders") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Dish", "Dish") - .WithMany("Orders") - .HasForeignKey("DishId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Implementer", "Implementer") - .WithMany("Orders") - .HasForeignKey("ImplementerId"); - - b.Navigation("Client"); - - b.Navigation("Dish"); - - b.Navigation("Implementer"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Component", b => - { - b.Navigation("DishComponents"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Dish", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Implementer", b => - { - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.cs b/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.cs deleted file mode 100644 index 56401ac..0000000 --- a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/20230421094549_Message.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace FoodOrdersDatabaseImplement.Migrations -{ - /// - public partial class Message : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "EmailMessages", - columns: table => new - { - MessageId = table.Column(type: "nvarchar(450)", nullable: false), - ClientId = table.Column(type: "int", nullable: true), - SenderName = table.Column(type: "nvarchar(max)", nullable: false), - DateDelivery = table.Column(type: "datetime2", nullable: false), - Subject = table.Column(type: "nvarchar(max)", nullable: false), - Body = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_EmailMessages", x => x.MessageId); - table.ForeignKey( - name: "FK_EmailMessages_Clients_ClientId", - column: x => x.ClientId, - principalTable: "Clients", - principalColumn: "Id"); - }); - - migrationBuilder.CreateIndex( - name: "IX_EmailMessages_ClientId", - table: "EmailMessages", - column: "ClientId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "EmailMessages"); - } - } -} diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/FoodOrdersDatabaseModelSnapshot.cs b/FoodOrders/FoodOrdersDatabaseImplement/Migrations/FoodOrdersDatabaseModelSnapshot.cs deleted file mode 100644 index 934c5e6..0000000 --- a/FoodOrders/FoodOrdersDatabaseImplement/Migrations/FoodOrdersDatabaseModelSnapshot.cs +++ /dev/null @@ -1,293 +0,0 @@ -// -using System; -using FoodOrdersDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace FoodOrdersDatabaseImplement.Migrations -{ - [DbContext(typeof(FoodOrdersDatabase))] - partial class FoodOrdersDatabaseModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Dish", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("DishName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Price") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Dishes"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.DishComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DishId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("DishId"); - - b.ToTable("DishComponents"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.EmailMessage", b => - { - b.Property("MessageId") - .HasColumnType("nvarchar(450)"); - - b.Property("Body") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ClientId") - .HasColumnType("int"); - - b.Property("DateDelivery") - .HasColumnType("datetime2"); - - b.Property("SenderName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Subject") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("MessageId"); - - b.HasIndex("ClientId"); - - b.ToTable("EmailMessages"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Implementer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ImplementerFIO") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Password") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Qualification") - .HasColumnType("int"); - - b.Property("WorkExperience") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("Implementers"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ClientId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("DishId") - .HasColumnType("int"); - - b.Property("ImplementerId") - .HasColumnType("int"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.HasIndex("DishId"); - - b.HasIndex("ImplementerId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.DishComponent", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Component", "Component") - .WithMany("DishComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Dish", "Dish") - .WithMany("Components") - .HasForeignKey("DishId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Dish"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.EmailMessage", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Client", "Client") - .WithMany() - .HasForeignKey("ClientId"); - - b.Navigation("Client"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Order", b => - { - b.HasOne("FoodOrdersDatabaseImplement.Models.Client", "Client") - .WithMany("Orders") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Dish", "Dish") - .WithMany("Orders") - .HasForeignKey("DishId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("FoodOrdersDatabaseImplement.Models.Implementer", "Implementer") - .WithMany("Orders") - .HasForeignKey("ImplementerId"); - - b.Navigation("Client"); - - b.Navigation("Dish"); - - b.Navigation("Implementer"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Component", b => - { - b.Navigation("DishComponents"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Dish", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); - - modelBuilder.Entity("FoodOrdersDatabaseImplement.Models.Implementer", b => - { - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs index 46ad30f..69448eb 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs @@ -5,7 +5,7 @@ using System.ComponentModel.DataAnnotations; namespace FoodOrdersDatabaseImplement.Models { - public class EmailMessage : IMessageInfoModel + public class MessageInfo : IMessageInfoModel { [Key] public string MessageId { get; private set; } = string.Empty; @@ -20,13 +20,13 @@ namespace FoodOrdersDatabaseImplement.Models [Required] public string Body { get; private set; } = string.Empty; public virtual Client? Client { get; set; } - public static EmailMessage? Create(MessageInfoBindingModel model) + public static MessageInfo? Create(MessageInfoBindingModel model) { if (model == null) { return null; } - return new EmailMessage() + return new MessageInfo() { MessageId = model.MessageId, ClientId = model.ClientId, diff --git a/FoodOrders/FoodOrdersFileImplement/Models/MessageInfo.cs b/FoodOrders/FoodOrdersFileImplement/Models/MessageInfo.cs new file mode 100644 index 0000000..311e0a1 --- /dev/null +++ b/FoodOrders/FoodOrdersFileImplement/Models/MessageInfo.cs @@ -0,0 +1,87 @@ +using FoodOrdersContracts.BindingModels; +using FoodOrdersContracts.ViewModels; +using FoodOrdersDataModels.Models; +using System.Runtime.Serialization; +using System.Xml.Linq; + +namespace FoodOrdersFileImplement.Models +{ + // Update в этой сущности не нужен, поскольку в логике мы не изменяем никакие поля после создания письма + [DataContract] + public class MessageInfo : IMessageInfoModel + { + [DataMember] + public string MessageId { get; private set; } = string.Empty; + + [DataMember] + public int? ClientId { get; private set; } + + [DataMember] + public string SenderName { get; private set; } = string.Empty; + + [DataMember] + public DateTime DateDelivery { get; private set; } = DateTime.Now; + + [DataMember] + public string Subject { get; private set; } = string.Empty; + + [DataMember] + public string Body { get; private set; } = string.Empty; + + public static MessageInfo? Create(MessageInfoBindingModel model) + { + if (model == null) + { + return null; + } + return new() + { + Body = model.Body, + Subject = model.Subject, + ClientId = model.ClientId, + MessageId = model.MessageId, + SenderName = model.SenderName, + DateDelivery = model.DateDelivery, + }; + } + + public static MessageInfo? Create(XElement element) + { + if (element == null) + { + return null; + } + return new() + { + Body = element.Attribute("Body")!.Value, + Subject = element.Attribute("Subject")!.Value, + ClientId = Convert.ToInt32(element.Attribute("ClientId")!.Value), + MessageId = element.Attribute("MessageId")!.Value, + SenderName = element.Attribute("SenderName")!.Value, + DateDelivery = Convert.ToDateTime(element.Attribute("DateDelivery")!.Value), + }; + } + + public MessageInfoViewModel GetViewModel => new() + { + Body = Body, + Subject = Subject, + ClientId = ClientId, + MessageId = MessageId, + SenderName = SenderName, + DateDelivery = DateDelivery, + }; + + public XElement GetXElement => new("MessageInfo", + new XAttribute("Body", Body), + new XAttribute("Subject", Subject), + new XAttribute("ClientId", ClientId), + new XAttribute("MessageId", MessageId), + new XAttribute("SenderName", SenderName), + new XAttribute("DateDelivery", DateDelivery) + ); + + public int Id => throw new NotImplementedException(); + } + +} diff --git a/FoodOrders/FoodOrdersListImplement/Models/MessageInfo.cs b/FoodOrders/FoodOrdersListImplement/Models/MessageInfo.cs new file mode 100644 index 0000000..7a1f8c6 --- /dev/null +++ b/FoodOrders/FoodOrdersListImplement/Models/MessageInfo.cs @@ -0,0 +1,52 @@ +using FoodOrdersContracts.BindingModels; +using FoodOrdersContracts.ViewModels; +using FoodOrdersDataModels.Models; + +namespace FoodOrdersListImplement.Models +{ + // Update в этой сущности не нужен, поскольку в логике мы не изменяем никакие поля после создания письма + public class MessageInfo : IMessageInfoModel + { + public string MessageId { get; private set; } = string.Empty; + + public int? ClientId { get; private set; } + + public string SenderName { get; private set; } = string.Empty; + + public DateTime DateDelivery { get; private set; } = DateTime.Now; + + public string Subject { get; private set; } = string.Empty; + + public string Body { get; private set; } = string.Empty; + + public static MessageInfo? Create(MessageInfoBindingModel model) + { + if (model == null) + { + return null; + } + return new() + { + Body = model.Body, + Subject = model.Subject, + ClientId = model.ClientId, + MessageId = model.MessageId, + SenderName = model.SenderName, + DateDelivery = model.DateDelivery, + }; + } + + public MessageInfoViewModel GetViewModel => new() + { + Body = Body, + Subject = Subject, + ClientId = ClientId, + MessageId = MessageId, + SenderName = SenderName, + DateDelivery = DateDelivery, + }; + + public int Id => throw new NotImplementedException(); + } + +} diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersContracts.dll b/FoodOrders/ImplementationExtensions/FoodOrdersContracts.dll new file mode 100644 index 0000000000000000000000000000000000000000..d760458034d32edefb01217c78e65dbb2df3df97 GIT binary patch literal 31744 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 literal 0 HcmV?d00001 diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersDataModels.dll b/FoodOrders/ImplementationExtensions/FoodOrdersDataModels.dll new file mode 100644 index 0000000000000000000000000000000000000000..fa3d8193ee6849145a02f565cdcb2d75e1ac00a9 GIT binary patch literal 6144 zcmeHLYiu0V6+W{wyV=;-iSr;&$c7Lwp)Age1SrLh*A5G@<9JPg)T%SPJ9dW5&a7r; zow!oLO+wX*QjkF{Ezr^*RE;QVN|S=1JQ~D9w5ir=tE#AKsmc#j2~qyF6p?=C%^c*!UP={o+jjg^-blF>J7wCb%+6e@N! zUFnTo8`odW4#mj=W>6Pv?jSmb_og`dIo~zy36C}2Y7Nq~=H?u|jXp2?n(a4dGkE_4 z^l#zEnr)VoXJs@@tK72cQDrU@?<*TQZyZ1TmVEL$uEN7SE=L3iFNiM0GY8L#@L@S@ zq4lWTXYCEK$JGQqBKSq+L3JMe5>=LGCm7^_TUl*$l;GNpEfIRtDEc8H(;45j(X|RyTG9ooS?5Posr0It5drW zi(995gE~~FSQfNb+78fYgxW@XBh(f(O8u-!_CXW%3#}L#_hysqC5p-%ZC^z5N@xaE zLi9=-&(NSw!LtTst5NEXCe5RCAfowBlk7Lzoe|l$wdf45H&I`2n(t^6^{u8Ep35516R^UV2ZXvvYcL1*5U}g36fTN4Y-hI zfh*|mz%}$w;N`SMNn^||;I%Xg>?IR;lkjuEUiv)rdJ#jK`ovm6I0fMps6f7A2>-C~ z4-5Y=_zx*}3I8#{m*^rosr*$?Rk*)K@G^z{?3I2T)ssLL=U_J`fpcN2h1w-|L_eh& z6m~y-6L_u4_>A;P;r`3ocYtpR=T+jqr+pW=Q82bAU<25W~|7Y{7XN zLvJ4NJXApp^g>`e&fgfgOMvrH7ct0I02j~&z=b%GW2l|gz{Oa#7!K{Vz$J7ka49M% zhB21|m(vx%6?7$VC2A^$@f(2`5}$UfXbWl6H~`^oqw(3tCw;B0pe3Tv%)5y{i@6O} zEKAQ@#@_X`Tem94NTm#717*yDZ#uT_PJ#IBfK#kk#^-3l@W-+xXp{`wH{Aa0PGR+0 zCTON6*~Zuy<)%E}D5ZNH%QD1}m)>sJhHDlmn=J-*g4clIdHRGAGBc*PuO@HI6LNxS zLSjhwyaSFK7#V_LL#*E7xcmDKmNAoIhb*=^sFwnH&ajJyTPJ&+QrWTLyl^tQZ;Y7G z4Ba2D*glgSHp_Zl14wIM zb?k9-qT-5P!$=USFoz9GKPWw~A+LEnDIAgWaVMO>!MOj{Z6t7`XwpM5eKIH6lQ3_!{Qq>_RsJ0qWtCN7{ zg6J#hrbYdZQxrQM3PcyFmo8dX=#-RBu2P~t8^FVMRdmZ7Hw%)ty6eVxxKAiu@Ey0t z&zSmz?RdUf@M^3uDcD*;$>j`p62b^jt;p6W{()TWQMJw=Nb^u&^jJNjY^Rwn0w?8qufEkzvz3|+XaF{fid z?Zl`~jOxUw&gM}dWmG4R0(2z-s zwS#aCQz$M+BweX$w70!gES3g^TjJRtRLMl zh7W+z;h`aZ#&+oW(NHoL>W>Ykv+1!$5=YP3Z5&RcPX6{$$?T|Y_*jF;fQDAOT+CDM zhMoleu{f%x7vL@kc^>XGL|)< zn>Lla0?NmbbCac~*TTk`sXNM$aV6e=YR^@G3`MZRp65kEff5Sb6E04rwefhf14=JIiMTy zjZ?vQe}_s`mN}*nkq*ib^Zk%GxB>2j?IL(Ce8`9oIt_@#fKT#M1@gkSYEfjM?ct8V zK9!q%{$Ff%;rMCT+#Pz*h<`oqEM4`7;KMTLa|V6Uwc)E3iRk0bokp}4{;N-%CQiA3RN4_Lv1x0V|YzIg@#4o-`M_G+i;(P M3;&<;)62lW0iRq@EC2ui literal 0 HcmV?d00001 diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersDatabaseImplement.dll b/FoodOrders/ImplementationExtensions/FoodOrdersDatabaseImplement.dll new file mode 100644 index 0000000000000000000000000000000000000000..dc8ed7e9c60d188b2b38d15436aa3163f7566c76 GIT binary patch literal 78336 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

WifX*~bwJ)Tl`2~%#sAMP?N?a$k(w& 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 literal 0 HcmV?d00001 diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersListImplement.dll b/FoodOrders/ImplementationExtensions/FoodOrdersListImplement.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc8dae8c7ba5be54566f18a9e752d5fb6ced8a9c GIT binary patch literal 23552 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 literal 0 HcmV?d00001