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 ac7f203..0b7b6a8 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs @@ -7,8 +7,8 @@ using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { [DataContract] - public class EmailMessage : IMessageInfoModel - { + public class MessageInfo : IMessageInfoModel + { [Key] [DataMember] public string MessageId { get; private set; } = string.Empty; @@ -27,13 +27,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 0000000..d760458 Binary files /dev/null and b/FoodOrders/ImplementationExtensions/FoodOrdersContracts.dll differ diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersDataModels.dll b/FoodOrders/ImplementationExtensions/FoodOrdersDataModels.dll new file mode 100644 index 0000000..fa3d819 Binary files /dev/null and b/FoodOrders/ImplementationExtensions/FoodOrdersDataModels.dll differ diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersDatabaseImplement.dll b/FoodOrders/ImplementationExtensions/FoodOrdersDatabaseImplement.dll new file mode 100644 index 0000000..dc8ed7e Binary files /dev/null and b/FoodOrders/ImplementationExtensions/FoodOrdersDatabaseImplement.dll differ diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersFileImplement.dll b/FoodOrders/ImplementationExtensions/FoodOrdersFileImplement.dll new file mode 100644 index 0000000..96f49cc Binary files /dev/null and b/FoodOrders/ImplementationExtensions/FoodOrdersFileImplement.dll differ diff --git a/FoodOrders/ImplementationExtensions/FoodOrdersListImplement.dll b/FoodOrders/ImplementationExtensions/FoodOrdersListImplement.dll new file mode 100644 index 0000000..cc8dae8 Binary files /dev/null and b/FoodOrders/ImplementationExtensions/FoodOrdersListImplement.dll differ