diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs index bc1a0c9..52f9922 100644 --- a/src/Model/DBContext.cs +++ b/src/Model/DBContext.cs @@ -31,6 +31,7 @@ public class DBContext : DbContext { public DbSet UserMissionData { get; set; } = null!; public DbSet UserBadgesCompleted { get; set; } = null!; public DbSet Bans { get; set; } = null!; + public DbSet Messages { get; set; } = null!; private readonly IOptions config; @@ -160,6 +161,12 @@ public class DBContext : DbContext { builder.Entity().HasMany(v => v.UserBans) .WithOne(r => r.Viking); + builder.Entity().HasMany(v => v.MessageBoard) + .WithOne(r => r.ToViking); + + builder.Entity().HasMany(v => v.MessagesMade) + .WithOne(r => r.Viking); + // Dragons builder.Entity().HasOne(d => d.Viking) .WithMany(e => e.Dragons) @@ -310,5 +317,19 @@ public class DBContext : DbContext { builder.Entity().HasOne(r => r.Viking) .WithMany(e => e.UserBans) .HasForeignKey(e => e.VikingId); + + // Messages + builder.Entity().HasOne(r => r.Viking) + .WithMany(e => e.MessagesMade) + .HasForeignKey(e => e.VikingId); + + builder.Entity().HasOne(r => r.ToViking) + .WithMany(e => e.MessageBoard) + .HasForeignKey(e => e.ToVikingId); + + builder.Entity().HasMany(e => e.Replies) + .WithOne(e => e.ParentMessage) + .HasForeignKey(e => e.ParentMessageId) + .OnDelete(DeleteBehavior.Cascade); } } diff --git a/src/Model/Message.cs b/src/Model/Message.cs new file mode 100644 index 0000000..2025db8 --- /dev/null +++ b/src/Model/Message.cs @@ -0,0 +1,38 @@ +using System; +using System.ComponentModel.DataAnnotations; +using sodoff.Schema; + +namespace sodoff.Model; + +public class Message +{ + [Key] + public int Id { get; set; } + + public int VikingId { get; set; } + public int ToVikingId { get; set; } + + public int QueueID { get; set; } + public int? ConversationID { get; set; } + public int? ParentMessageId { get; set; } + + public MessageType? MessageType { get; set; } + public MessageTypeID? MessageTypeID { get; set; } + public MessageLevel MessageLevel { get; set; } + + public string? Data { get; set; } + public string? MemberMessage { get; set; } + public string? NonMemberMessage { get; set; } + + public DateTime CreatedAt { get; set; } + public DateTime? LastUpdatedAt { get; set; } + + public bool IsDeleted { get; set; } + public bool IsNew { get; set; } + + public virtual Viking? Viking { get; set; } + public virtual Viking? ToViking { get; set; } + + public virtual Message? ParentMessage { get; set; } + public virtual ICollection Replies { get; set; } = null!; +} diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index 0578525..28ce7df 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -45,6 +45,8 @@ public class Viking { public virtual ICollection UserMissions { get; set; } = null!; public virtual ICollection UserBadgesCompleted { get; set; } = null!; public virtual ICollection UserBans { get; set; } = null!; + public virtual ICollection MessageBoard { get; set; } = null!; + public virtual ICollection MessagesMade { get; set; } = null!; public DateTime? CreationDate { get; set; } public DateTime? BirthDate { get; set; } diff --git a/src/Schema/MessageLevel.cs b/src/Schema/MessageLevel.cs new file mode 100644 index 0000000..b4cf30a --- /dev/null +++ b/src/Schema/MessageLevel.cs @@ -0,0 +1,8 @@ +namespace sodoff.Schema +{ + public enum MessageLevel + { + Canned = 1, + WhiteList + } +} \ No newline at end of file diff --git a/src/Schema/MessageType.cs b/src/Schema/MessageType.cs new file mode 100644 index 0000000..6f8291b --- /dev/null +++ b/src/Schema/MessageType.cs @@ -0,0 +1,11 @@ +namespace sodoff.Schema +{ + public enum MessageType + { + Chat = 1, + Post = 2, + Data = 3, + Challenge = 4, + Announcement = 5 + } +} \ No newline at end of file diff --git a/src/Schema/MessageTypeID.cs b/src/Schema/MessageTypeID.cs new file mode 100644 index 0000000..5bf8d79 --- /dev/null +++ b/src/Schema/MessageTypeID.cs @@ -0,0 +1,28 @@ +namespace sodoff.Schema +{ + public enum MessageTypeID + { + Unknown = 0, + Billboard = 1, + Dialog = 2, + Notification = 3, + Rank = 4, + BuddyList = 5, + Jumpstar = 6, + SpaAdventureGift = 7, + PrizeCode = 8, + Achievement = 9, + Messaging = 10, + SocialRank = 11, + MuttCare = 12, + Mission = 13, + ChallengeWon = 14, + InviteFriend = 15, + Gifts = 19, + FriendReward = 20, + ThreadUpdate = 21, + Photo = 22, + GreetingCard = 23, + ProfileSelection = 24 + } +} \ No newline at end of file