diff --git a/Diner/Diner/App.config b/Diner/Diner/App.config index 336f029..701ff1f 100644 --- a/Diner/Diner/App.config +++ b/Diner/Diner/App.config @@ -6,6 +6,6 @@ - + \ No newline at end of file diff --git a/Diner/DinerDataBaseImplement/Implements/MessageInfoStorage.cs b/Diner/DinerDataBaseImplement/Implements/MessageInfoStorage.cs index 63f0116..39639ff 100644 --- a/Diner/DinerDataBaseImplement/Implements/MessageInfoStorage.cs +++ b/Diner/DinerDataBaseImplement/Implements/MessageInfoStorage.cs @@ -10,16 +10,15 @@ namespace DinerDataBaseImplement.Implements { public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) { - if (string.IsNullOrEmpty(model.MessageId)) - { - return null; - } - using var context = new DinerDatabase(); - - return context.Messages - .FirstOrDefault(x => (x.MessageId == model.MessageId)) - ?.GetViewModel; + if (model.MessageId != null) + { + return context.Messages + .FirstOrDefault(x => (x.MessageId == model.MessageId)) + ?.GetViewModel; + + } + return null; } public List GetFilteredList(MessageInfoSearchModel model) @@ -45,9 +44,9 @@ namespace DinerDataBaseImplement.Implements { using var context = new DinerDatabase(); - var newMessage = MessageInfo.Create(model); + var newMessage = MessageInfo.Create(context, model); - if (newMessage == null) + if (newMessage == null || context.Messages.Any(x => x.MessageId.Equals(model.MessageId))) { return null; } diff --git a/Diner/DinerDataBaseImplement/Migrations/20240429190440_InitialCreate.Designer.cs b/Diner/DinerDataBaseImplement/Migrations/20240511192321_InitialCreate.Designer.cs similarity index 85% rename from Diner/DinerDataBaseImplement/Migrations/20240429190440_InitialCreate.Designer.cs rename to Diner/DinerDataBaseImplement/Migrations/20240511192321_InitialCreate.Designer.cs index 5e11665..f5bc534 100644 --- a/Diner/DinerDataBaseImplement/Migrations/20240429190440_InitialCreate.Designer.cs +++ b/Diner/DinerDataBaseImplement/Migrations/20240511192321_InitialCreate.Designer.cs @@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace DinerDataBaseImplement.Migrations { [DbContext(typeof(DinerDatabase))] - [Migration("20240429190440_InitialCreate")] + [Migration("20240511192321_InitialCreate")] partial class InitialCreate { /// @@ -97,6 +97,36 @@ namespace DinerDataBaseImplement.Migrations b.ToTable("Implementers"); }); + modelBuilder.Entity("DinerDataBaseImplement.Models.MessageInfo", 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("Messages"); + }); + modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b => { b.Property("Id") @@ -186,6 +216,15 @@ namespace DinerDataBaseImplement.Migrations b.ToTable("SnackComponents"); }); + modelBuilder.Entity("DinerDataBaseImplement.Models.MessageInfo", b => + { + b.HasOne("DinerDataBaseImplement.Models.Client", "Client") + .WithMany("MessageInfos") + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b => { b.HasOne("DinerDataBaseImplement.Models.Client", "Client") @@ -232,6 +271,8 @@ namespace DinerDataBaseImplement.Migrations modelBuilder.Entity("DinerDataBaseImplement.Models.Client", b => { + b.Navigation("MessageInfos"); + b.Navigation("Orders"); }); diff --git a/Diner/DinerDataBaseImplement/Migrations/20240429190440_InitialCreate.cs b/Diner/DinerDataBaseImplement/Migrations/20240511192321_InitialCreate.cs similarity index 85% rename from Diner/DinerDataBaseImplement/Migrations/20240429190440_InitialCreate.cs rename to Diner/DinerDataBaseImplement/Migrations/20240511192321_InitialCreate.cs index e567346..9988418 100644 --- a/Diner/DinerDataBaseImplement/Migrations/20240429190440_InitialCreate.cs +++ b/Diner/DinerDataBaseImplement/Migrations/20240511192321_InitialCreate.cs @@ -70,6 +70,27 @@ namespace DinerDataBaseImplement.Migrations table.PrimaryKey("PK_Snacks", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Messages", + 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_Messages", x => x.MessageId); + table.ForeignKey( + name: "FK_Messages_Clients_ClientId", + column: x => x.ClientId, + principalTable: "Clients", + principalColumn: "Id"); + }); + migrationBuilder.CreateTable( name: "Orders", columns: table => new @@ -134,6 +155,11 @@ namespace DinerDataBaseImplement.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateIndex( + name: "IX_Messages_ClientId", + table: "Messages", + column: "ClientId"); + migrationBuilder.CreateIndex( name: "IX_Orders_ClientId", table: "Orders", @@ -163,6 +189,9 @@ namespace DinerDataBaseImplement.Migrations /// protected override void Down(MigrationBuilder migrationBuilder) { + migrationBuilder.DropTable( + name: "Messages"); + migrationBuilder.DropTable( name: "Orders"); diff --git a/Diner/DinerDataBaseImplement/Migrations/DinerDatabaseModelSnapshot.cs b/Diner/DinerDataBaseImplement/Migrations/DinerDatabaseModelSnapshot.cs index de70b97..39c88ff 100644 --- a/Diner/DinerDataBaseImplement/Migrations/DinerDatabaseModelSnapshot.cs +++ b/Diner/DinerDataBaseImplement/Migrations/DinerDatabaseModelSnapshot.cs @@ -94,6 +94,36 @@ namespace DinerDataBaseImplement.Migrations b.ToTable("Implementers"); }); + modelBuilder.Entity("DinerDataBaseImplement.Models.MessageInfo", 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("Messages"); + }); + modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b => { b.Property("Id") @@ -183,6 +213,15 @@ namespace DinerDataBaseImplement.Migrations b.ToTable("SnackComponents"); }); + modelBuilder.Entity("DinerDataBaseImplement.Models.MessageInfo", b => + { + b.HasOne("DinerDataBaseImplement.Models.Client", "Client") + .WithMany("MessageInfos") + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b => { b.HasOne("DinerDataBaseImplement.Models.Client", "Client") @@ -229,6 +268,8 @@ namespace DinerDataBaseImplement.Migrations modelBuilder.Entity("DinerDataBaseImplement.Models.Client", b => { + b.Navigation("MessageInfos"); + b.Navigation("Orders"); }); diff --git a/Diner/DinerDataBaseImplement/Models/MessageInfo.cs b/Diner/DinerDataBaseImplement/Models/MessageInfo.cs index 1561811..db42cf7 100644 --- a/Diner/DinerDataBaseImplement/Models/MessageInfo.cs +++ b/Diner/DinerDataBaseImplement/Models/MessageInfo.cs @@ -17,21 +17,21 @@ namespace DinerDataBaseImplement.Models public int? ClientId { get; set; } - [Required] + public string SenderName { get; set; } = string.Empty; - [Required] + public DateTime DateDelivery { get; set; } = DateTime.Now; - [Required] + public string Subject { get; set; } = string.Empty; - [Required] + public string Body { get; set; } = string.Empty; public virtual Client? Client { get; set; } - public static MessageInfo? Create(MessageInfoBindingModel model) + public static MessageInfo? Create(DinerDatabase context, MessageInfoBindingModel model) { if (model == null) { @@ -42,6 +42,7 @@ namespace DinerDataBaseImplement.Models { MessageId = model.MessageId, ClientId = model.ClientId, + Client = context.Clients.FirstOrDefault(x => x.Email == model.SenderName), SenderName = model.SenderName, Body = model.Body, DateDelivery = model.DateDelivery, diff --git a/Diner/DinerRestApi/appsettings.json b/Diner/DinerRestApi/appsettings.json index e2bc0fe..030c1f5 100644 --- a/Diner/DinerRestApi/appsettings.json +++ b/Diner/DinerRestApi/appsettings.json @@ -11,5 +11,5 @@ "PopHost": "pop.gmail.com", "PopPort": "995", "MailLogin": "labwork07pass@gmail.com", - "MailPassword": "passlab07" + "MailPassword": "acmn jtsg xrgz dccw" }