Revert "Попытка реализовать полноценные ответы на письма (неудачаная)"

This reverts commit 8e6c28754790787f2835de3dd83b888e3aa4bd98.
This commit is contained in:
Данияр Аглиуллов 2023-03-18 06:54:05 +04:00
parent 8e6c287547
commit 56781d44db
14 changed files with 38 additions and 575 deletions

View File

@ -29,16 +29,7 @@ namespace ConfectioneryBusinessLogic.MailWorker
objMailMessage.Body = info.Text; objMailMessage.Body = info.Text;
objMailMessage.SubjectEncoding = Encoding.UTF8; objMailMessage.SubjectEncoding = Encoding.UTF8;
objMailMessage.BodyEncoding = Encoding.UTF8; objMailMessage.BodyEncoding = Encoding.UTF8;
if (info.MessageId != null)
{
objMailMessage.Headers.Add("Message-Id", info.MessageId);
}
if (info.ReplyMessageId != null)
{
objMailMessage.Headers.Add("In-Reply-To", info.ReplyMessageId);
objMailMessage.Headers.Add("References", info.ReplyMessageId);
}
objSmtpClient.UseDefaultCredentials = false; objSmtpClient.UseDefaultCredentials = false;
objSmtpClient.EnableSsl = true; objSmtpClient.EnableSsl = true;
objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

View File

@ -25,7 +25,7 @@ namespace ConfectioneryFileImplement.Models
public string Body { get; private set; } = string.Empty; public string Body { get; private set; } = string.Empty;
public bool HasRead { get; private set; } public bool HasRead { get; private set; }
public string? ReplyMessageId { get; private set; } public string? Reply { get; private set; }
public static MessageInfo? Create(MessageInfoBindingModel model) public static MessageInfo? Create(MessageInfoBindingModel model)
{ {
@ -36,13 +36,13 @@ namespace ConfectioneryFileImplement.Models
return new() return new()
{ {
Body = model.Body, Body = model.Body,
HasRead = model.HasRead, Reply = model.Reply,
HasRead = model.HasRead,
Subject = model.Subject, Subject = model.Subject,
ClientId = model.ClientId, ClientId = model.ClientId,
MessageId = model.MessageId, MessageId = model.MessageId,
SenderName = model.SenderName, SenderName = model.SenderName,
DateDelivery = model.DateDelivery, DateDelivery = model.DateDelivery,
ReplyMessageId = model.ReplyMessageId,
}; };
} }
@ -55,13 +55,13 @@ namespace ConfectioneryFileImplement.Models
return new() return new()
{ {
Body = element.Attribute("Body")!.Value, Body = element.Attribute("Body")!.Value,
Reply = element.Attribute("Reply")!.Value,
HasRead = Convert.ToBoolean(element.Attribute("HasRead")!.Value), HasRead = Convert.ToBoolean(element.Attribute("HasRead")!.Value),
Subject = element.Attribute("Subject")!.Value, Subject = element.Attribute("Subject")!.Value,
ClientId = Convert.ToInt32(element.Attribute("ClientId")!.Value), ClientId = Convert.ToInt32(element.Attribute("ClientId")!.Value),
MessageId = element.Attribute("MessageId")!.Value, MessageId = element.Attribute("MessageId")!.Value,
SenderName = element.Attribute("SenderName")!.Value, SenderName = element.Attribute("SenderName")!.Value,
DateDelivery = Convert.ToDateTime(element.Attribute("DateDelivery")!.Value), DateDelivery = Convert.ToDateTime(element.Attribute("DateDelivery")!.Value),
ReplyMessageId = element.Attribute("ReplyMessageId")!.Value,
}; };
} }
@ -71,28 +71,25 @@ namespace ConfectioneryFileImplement.Models
{ {
return; return;
} }
ReplyMessageId = model.ReplyMessageId; Reply = model.Reply;
HasRead = model.HasRead; HasRead = model.HasRead;
} }
public MessageInfoViewModel GetViewModel => new() public MessageInfoViewModel GetViewModel => new()
{ {
Body = Body, Body = Body,
Reply = Reply,
HasRead = HasRead, HasRead = HasRead,
Subject = Subject, Subject = Subject,
ClientId = ClientId, ClientId = ClientId,
MessageId = MessageId, MessageId = MessageId,
SenderName = SenderName, SenderName = SenderName,
DateDelivery = DateDelivery, DateDelivery = DateDelivery,
ReplyMessageId = ReplyMessageId,
ReplyText = DataFileSingleton.GetInstance().Messages
.FirstOrDefault(x => ReplyMessageId != null && ReplyMessageId.Equals(x.MessageId))
?.Body ?? string.Empty,
}; };
public XElement GetXElement => new("MessageInfo", public XElement GetXElement => new("MessageInfo",
new XAttribute("Body", Body), new XAttribute("Body", Body),
new XAttribute("ReplyMessageId", ReplyMessageId), new XAttribute("Reply", Reply),
new XAttribute("HasRead", HasRead), new XAttribute("HasRead", HasRead),
new XAttribute("Subject", Subject), new XAttribute("Subject", Subject),
new XAttribute("ClientId", ClientId), new XAttribute("ClientId", ClientId),

View File

@ -24,7 +24,7 @@ namespace ConfectioneryListImplement.Models
public string Body { get; private set; } = string.Empty; public string Body { get; private set; } = string.Empty;
public bool HasRead { get; private set; } public bool HasRead { get; private set; }
public string? ReplyMessageId { get; private set; } public string? Reply { get; private set; }
public static MessageInfo? Create(MessageInfoBindingModel model) public static MessageInfo? Create(MessageInfoBindingModel model)
{ {
@ -35,13 +35,13 @@ namespace ConfectioneryListImplement.Models
return new() return new()
{ {
Body = model.Body, Body = model.Body,
Reply = model.Reply,
HasRead = model.HasRead, HasRead = model.HasRead,
Subject = model.Subject, Subject = model.Subject,
ClientId = model.ClientId, ClientId = model.ClientId,
MessageId = model.MessageId, MessageId = model.MessageId,
SenderName = model.SenderName, SenderName = model.SenderName,
DateDelivery = model.DateDelivery, DateDelivery = model.DateDelivery,
ReplyMessageId = model.ReplyMessageId,
}; };
} }
@ -51,40 +51,22 @@ namespace ConfectioneryListImplement.Models
{ {
return; return;
} }
ReplyMessageId = model.MessageId; Reply = model.Reply;
HasRead = model.HasRead; HasRead = model.HasRead;
} }
public MessageInfoViewModel GetViewModel public MessageInfoViewModel GetViewModel => new()
{ {
get Body = Body,
{ Reply = Reply,
var res = new MessageInfoViewModel() HasRead = HasRead,
{ Subject = Subject,
Body = Body, ClientId = ClientId,
HasRead = HasRead, MessageId = MessageId,
Subject = Subject, SenderName = SenderName,
ClientId = ClientId, DateDelivery = DateDelivery,
MessageId = MessageId, };
SenderName = SenderName,
DateDelivery = DateDelivery,
ReplyMessageId = ReplyMessageId,
};
if (ReplyMessageId != null)
{
foreach (var msg in DataListSingleton.GetInstance().Messages)
{
if (msg.MessageId.Equals(ReplyMessageId))
{
res.ReplyText = msg.Body;
return res;
}
}
}
return res; }
}
}
}
} }

View File

@ -40,29 +40,17 @@ namespace ConfectioneryView
private void ButtonSave_Click(object sender, EventArgs e) private void ButtonSave_Click(object sender, EventArgs e)
{ {
var guid = Guid.NewGuid();
var newMsgId = $"<{guid.ToString().Replace("-", "")}@f129.i.mail.ru>";
_mailWorker.MailSendAsync(new() _mailWorker.MailSendAsync(new()
{ {
MessageId = newMsgId,
ReplyMessageId = _message.MessageId,
MailAddress = _message.SenderName, MailAddress = _message.SenderName,
Subject = _message.Subject, Subject = _message.Subject,
Text = textBoxReply.Text, Text = textBoxReply.Text,
}); });
_logic.Create(new()
{
MessageId = newMsgId,
Body = textBoxReply.Text,
ClientId = _message.ClientId,
HasRead = false,
Subject = _message.Subject,
});
_logic.Update(new() _logic.Update(new()
{ {
MessageId = MessageId, MessageId = MessageId,
Reply = textBoxReply.Text,
HasRead = true, HasRead = true,
ReplyMessageId = newMsgId,
}); });
MessageBox.Show("Успешно отправлено письмо", "Отправка письма", MessageBoxButtons.OK); MessageBox.Show("Успешно отправлено письмо", "Отправка письма", MessageBoxButtons.OK);
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;

View File

@ -47,7 +47,7 @@ namespace ConfectioneryView
{ {
dataGridView.DataSource = list; dataGridView.DataSource = list;
dataGridView.Columns["ClientId"].Visible = false; dataGridView.Columns["ClientId"].Visible = false;
dataGridView.Columns["MessageId"].Visible = false;
dataGridView.Columns["Body"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; dataGridView.Columns["Body"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
} }
_logger.LogInformation("Загрузка списка писем"); _logger.LogInformation("Загрузка списка писем");

View File

@ -8,9 +8,6 @@ namespace ConfectioneryContracts.BindingModels
{ {
public class MailSendInfoBindingModel public class MailSendInfoBindingModel
{ {
public string? MessageId { get; set; } = string.Empty;
public string? ReplyMessageId { get; set; } = string.Empty;
public string MailAddress { get; set; } = string.Empty; public string MailAddress { get; set; } = string.Empty;
public string Subject { get; set; } = string.Empty; public string Subject { get; set; } = string.Empty;
public string Text { get; set; } = string.Empty; public string Text { get; set; } = string.Empty;

View File

@ -22,6 +22,6 @@ namespace ConfectioneryContracts.BindingModels
public DateTime DateDelivery { get; set; } public DateTime DateDelivery { get; set; }
public bool HasRead { get; set; } public bool HasRead { get; set; }
public string? ReplyMessageId { get; set; } public string? Reply { get; set; }
} }
} }

View File

@ -29,9 +29,7 @@ namespace ConfectioneryContracts.ViewModels
[DisplayName("Прочитано")] [DisplayName("Прочитано")]
public bool HasRead { get; set; } public bool HasRead { get; set; }
[DisplayName("Ответ")] [DisplayName("Ответ")]
public string ReplyText { get; set; } = string.Empty; public string? Reply { get; set; }
public string? ReplyMessageId { get; set; }
} }
} }

View File

@ -22,6 +22,6 @@ namespace ConfectioneryDataModels
public bool HasRead { get; } public bool HasRead { get; }
public string? ReplyMessageId { get; } public string? Reply { get; }
} }
} }

View File

@ -23,12 +23,8 @@ namespace ConfectioneryDatabaseImplement.Models
public Client? Client { get; private set; } public Client? Client { get; private set; }
public MessageInfo? ReplyMessage { get; private set; }
public List<MessageInfo> Messages { get; private set; } = new();
public bool HasRead { get; private set; } public bool HasRead { get; private set; }
public string? ReplyMessageId { get; private set; } public string? Reply { get; private set; }
public static MessageInfo? Create(MessageInfoBindingModel model) public static MessageInfo? Create(MessageInfoBindingModel model)
{ {
@ -39,13 +35,13 @@ namespace ConfectioneryDatabaseImplement.Models
return new() return new()
{ {
Body = model.Body, Body = model.Body,
Reply = model.Reply,
HasRead = model.HasRead, HasRead = model.HasRead,
Subject = model.Subject, Subject = model.Subject,
ClientId = model.ClientId, ClientId = model.ClientId,
MessageId = model.MessageId, MessageId = model.MessageId,
SenderName = model.SenderName, SenderName = model.SenderName,
DateDelivery = model.DateDelivery, DateDelivery = model.DateDelivery,
ReplyMessageId = model.ReplyMessageId,
}; };
} }
@ -55,23 +51,21 @@ namespace ConfectioneryDatabaseImplement.Models
{ {
return; return;
} }
Reply = model.Reply;
ReplyMessageId = ReplyMessageId;
HasRead = model.HasRead; HasRead = model.HasRead;
} }
public MessageInfoViewModel GetViewModel => new() public MessageInfoViewModel GetViewModel => new()
{ {
Body = Body, Body = Body,
Reply = Reply,
HasRead = HasRead, HasRead = HasRead,
Subject = Subject, Subject = Subject,
ClientId = ClientId, ClientId = ClientId,
MessageId = MessageId, MessageId = MessageId,
SenderName = SenderName, SenderName = SenderName,
DateDelivery = DateDelivery, DateDelivery = DateDelivery,
ReplyMessageId = ReplyMessageId, };
ReplyText = ReplyMessage?.Body ?? string.Empty,
};
} }

View File

@ -3,7 +3,6 @@ using ConfectioneryContracts.SearchModels;
using ConfectioneryContracts.StoragesContract; using ConfectioneryContracts.StoragesContract;
using ConfectioneryContracts.ViewModels; using ConfectioneryContracts.ViewModels;
using ConfectioneryDatabaseImplement.Models; using ConfectioneryDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace ConfectioneryDatabaseImplement namespace ConfectioneryDatabaseImplement
{ {
@ -15,9 +14,7 @@ namespace ConfectioneryDatabaseImplement
using var context = new ConfectioneryDatabase(); using var context = new ConfectioneryDatabase();
if (model.MessageId != null) if (model.MessageId != null)
{ {
return context.Messages return context.Messages.FirstOrDefault(x => x.MessageId == model.MessageId)?.GetViewModel;
.Include(x => x.ReplyMessage)
.FirstOrDefault(x => x.MessageId == model.MessageId)?.GetViewModel;
} }
return null; return null;
} }
@ -26,8 +23,7 @@ namespace ConfectioneryDatabaseImplement
{ {
using var context = new ConfectioneryDatabase(); using var context = new ConfectioneryDatabase();
var res = context.Messages var res = context.Messages
.Include(x => x.ReplyMessage) .Where(x => !model.ClientId.HasValue || x.ClientId == model.ClientId)
.Where(x => !model.ClientId.HasValue || x.ClientId == model.ClientId)
.Select(x => x.GetViewModel); .Select(x => x.GetViewModel);
if (!(model.Page.HasValue && model.PageSize.HasValue)) if (!(model.Page.HasValue && model.PageSize.HasValue))
{ {
@ -40,8 +36,7 @@ namespace ConfectioneryDatabaseImplement
{ {
using var context = new ConfectioneryDatabase(); using var context = new ConfectioneryDatabase();
return context.Messages return context.Messages
.Include(x => x.ReplyMessage) .Select(x => x.GetViewModel)
.Select(x => x.GetViewModel)
.ToList(); .ToList();
} }

View File

@ -1,408 +0,0 @@
// <auto-generated />
using System;
using ConfectioneryDatabaseImplement;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace ConfectioneryDatabaseImplement.Migrations
{
[DbContext(typeof(ConfectioneryDatabase))]
[Migration("20230318021140_add_self_reply_message")]
partial class add_self_reply_message
{
/// <inheritdoc />
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("ConfectioneryDatabaseImplement.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("ClientFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Component", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("ComponentName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<double>("Cost")
.HasColumnType("float");
b.HasKey("Id");
b.ToTable("Components");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Implementer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("ImplementerFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("Qualification")
.HasColumnType("int");
b.Property<int>("WorkExperience")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Implementers");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.MessageInfo", b =>
{
b.Property<string>("MessageId")
.HasColumnType("nvarchar(450)");
b.Property<string>("Body")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int?>("ClientId")
.HasColumnType("int");
b.Property<DateTime>("DateDelivery")
.HasColumnType("datetime2");
b.Property<bool>("HasRead")
.HasColumnType("bit");
b.Property<string>("ReplyMessageId")
.HasColumnType("nvarchar(450)");
b.Property<string>("SenderName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Subject")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("MessageId");
b.HasIndex("ClientId");
b.HasIndex("ReplyMessageId");
b.ToTable("Messages");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ClientId")
.HasColumnType("int");
b.Property<int>("Count")
.HasColumnType("int");
b.Property<DateTime>("DateCreate")
.HasColumnType("datetime2");
b.Property<DateTime?>("DateImplement")
.HasColumnType("datetime2");
b.Property<int?>("ImplementerId")
.HasColumnType("int");
b.Property<int>("PastryId")
.HasColumnType("int");
b.Property<int>("Status")
.HasColumnType("int");
b.Property<double>("Sum")
.HasColumnType("float");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("ImplementerId");
b.HasIndex("PastryId");
b.ToTable("Orders");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Pastry", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("PastryName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<double>("Price")
.HasColumnType("float");
b.HasKey("Id");
b.ToTable("Pastries");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.PastryComponent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ComponentId")
.HasColumnType("int");
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("PastryId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ComponentId");
b.HasIndex("PastryId");
b.ToTable("PastryComponents");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Shop", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Address")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("DateOpening")
.HasColumnType("datetime2");
b.Property<int>("MaxCountPastries")
.HasColumnType("int");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int?>("PastryId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("PastryId");
b.ToTable("Shops");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.ShopPastry", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("PastryId")
.HasColumnType("int");
b.Property<int>("ShopId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("PastryId");
b.HasIndex("ShopId");
b.ToTable("ShopPastries");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.MessageInfo", b =>
{
b.HasOne("ConfectioneryDatabaseImplement.Models.Client", "Client")
.WithMany("Messages")
.HasForeignKey("ClientId");
b.HasOne("ConfectioneryDatabaseImplement.Models.MessageInfo", "ReplyMessage")
.WithMany("Messages")
.HasForeignKey("ReplyMessageId");
b.Navigation("Client");
b.Navigation("ReplyMessage");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Order", b =>
{
b.HasOne("ConfectioneryDatabaseImplement.Models.Client", "Client")
.WithMany("Orders")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("ConfectioneryDatabaseImplement.Models.Implementer", "Implementer")
.WithMany("Orders")
.HasForeignKey("ImplementerId");
b.HasOne("ConfectioneryDatabaseImplement.Models.Pastry", "Pastry")
.WithMany("Orders")
.HasForeignKey("PastryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Client");
b.Navigation("Implementer");
b.Navigation("Pastry");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.PastryComponent", b =>
{
b.HasOne("ConfectioneryDatabaseImplement.Models.Component", "Component")
.WithMany("PastryComponents")
.HasForeignKey("ComponentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("ConfectioneryDatabaseImplement.Models.Pastry", "Pastry")
.WithMany("Components")
.HasForeignKey("PastryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Component");
b.Navigation("Pastry");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Shop", b =>
{
b.HasOne("ConfectioneryDatabaseImplement.Models.Pastry", null)
.WithMany("Shops")
.HasForeignKey("PastryId");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.ShopPastry", b =>
{
b.HasOne("ConfectioneryDatabaseImplement.Models.Pastry", "Pastry")
.WithMany()
.HasForeignKey("PastryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("ConfectioneryDatabaseImplement.Models.Shop", "Shop")
.WithMany("ShopPastries")
.HasForeignKey("ShopId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Pastry");
b.Navigation("Shop");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Client", b =>
{
b.Navigation("Messages");
b.Navigation("Orders");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Component", b =>
{
b.Navigation("PastryComponents");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Implementer", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.MessageInfo", b =>
{
b.Navigation("Messages");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Pastry", b =>
{
b.Navigation("Components");
b.Navigation("Orders");
b.Navigation("Shops");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Shop", b =>
{
b.Navigation("ShopPastries");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -1,58 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ConfectioneryDatabaseImplement.Migrations
{
/// <inheritdoc />
public partial class add_self_reply_message : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Reply",
table: "Messages");
migrationBuilder.AddColumn<string>(
name: "ReplyMessageId",
table: "Messages",
type: "nvarchar(450)",
nullable: true);
migrationBuilder.CreateIndex(
name: "IX_Messages_ReplyMessageId",
table: "Messages",
column: "ReplyMessageId");
migrationBuilder.AddForeignKey(
name: "FK_Messages_Messages_ReplyMessageId",
table: "Messages",
column: "ReplyMessageId",
principalTable: "Messages",
principalColumn: "MessageId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Messages_Messages_ReplyMessageId",
table: "Messages");
migrationBuilder.DropIndex(
name: "IX_Messages_ReplyMessageId",
table: "Messages");
migrationBuilder.DropColumn(
name: "ReplyMessageId",
table: "Messages");
migrationBuilder.AddColumn<string>(
name: "Reply",
table: "Messages",
type: "nvarchar(max)",
nullable: true);
}
}
}

View File

@ -112,8 +112,8 @@ namespace ConfectioneryDatabaseImplement.Migrations
b.Property<bool>("HasRead") b.Property<bool>("HasRead")
.HasColumnType("bit"); .HasColumnType("bit");
b.Property<string>("ReplyMessageId") b.Property<string>("Reply")
.HasColumnType("nvarchar(450)"); .HasColumnType("nvarchar(max)");
b.Property<string>("SenderName") b.Property<string>("SenderName")
.IsRequired() .IsRequired()
@ -127,8 +127,6 @@ namespace ConfectioneryDatabaseImplement.Migrations
b.HasIndex("ClientId"); b.HasIndex("ClientId");
b.HasIndex("ReplyMessageId");
b.ToTable("Messages"); b.ToTable("Messages");
}); });
@ -285,13 +283,7 @@ namespace ConfectioneryDatabaseImplement.Migrations
.WithMany("Messages") .WithMany("Messages")
.HasForeignKey("ClientId"); .HasForeignKey("ClientId");
b.HasOne("ConfectioneryDatabaseImplement.Models.MessageInfo", "ReplyMessage")
.WithMany("Messages")
.HasForeignKey("ReplyMessageId");
b.Navigation("Client"); b.Navigation("Client");
b.Navigation("ReplyMessage");
}); });
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Order", b => modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Order", b =>
@ -381,11 +373,6 @@ namespace ConfectioneryDatabaseImplement.Migrations
b.Navigation("Orders"); b.Navigation("Orders");
}); });
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.MessageInfo", b =>
{
b.Navigation("Messages");
});
modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Pastry", b => modelBuilder.Entity("ConfectioneryDatabaseImplement.Models.Pastry", b =>
{ {
b.Navigation("Components"); b.Navigation("Components");