diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs index 61d6451..5b30234 100644 --- a/src/Model/DBContext.cs +++ b/src/Model/DBContext.cs @@ -156,6 +156,12 @@ public class DBContext : DbContext { builder.Entity().HasMany(v => v.ReportsReceived) .WithOne(r => r.ReportedViking); + builder.Entity().HasMany(v => v.MessagesMade) + .WithOne(r => r.Viking); + + builder.Entity().HasMany(v => v.MessageBoard) + .WithOne(r => r.FromViking); + // Dragons builder.Entity().HasOne(d => d.Viking) .WithMany(e => e.Dragons) @@ -290,6 +296,15 @@ public class DBContext : DbContext { .WithMany(e => e.ReportsReceived) .HasForeignKey(e => e.ReportedVikingId); + // Messages + builder.Entity().HasOne(r => r.Viking) + .WithMany(e => e.MessagesMade) + .HasForeignKey(e => e.VikingId); + + builder.Entity().HasOne(r => r.FromViking) + .WithMany(e => e.MessageBoard) + .HasForeignKey(e => e.FromVikingId); + // Groups builder.Entity().HasMany(r => r.Vikings) .WithMany(e => e.Groups); diff --git a/src/Model/Message.cs b/src/Model/Message.cs new file mode 100644 index 0000000..80cb7d0 --- /dev/null +++ b/src/Model/Message.cs @@ -0,0 +1,35 @@ +using System; +using System.ComponentModel.DataAnnotations; +using sodoff.Model; +using sodoff.Schema; + +namespace sodoff.Model; + +public class Message +{ + [Key] + public int Id { get; set; } + public int VikingId { get; set; } + public int FromVikingId { get; set; } + + public int QueueID { get; set; } + public int? ConversationID { get; set; } + public int? ReplyToMessageID { 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? FromViking { get; set; } +} diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index b24cfb8..d858776 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -43,6 +43,8 @@ public class Viking { public virtual ICollection Ratings { get; set; } = null!; public virtual ICollection ReportsMade { get; set; } = null!; public virtual ICollection ReportsReceived { get; set; } = null!; + public virtual ICollection MessageBoard { get; set; } = null!; + public virtual ICollection MessagesMade { get; set; } = null!; public virtual Dragon? SelectedDragon { get; set; } public DateTime? CreationDate { get; set; } diff --git a/src/Schema/ArrayOfCombinedListMessage.cs b/src/Schema/ArrayOfCombinedListMessage.cs new file mode 100644 index 0000000..41b52f0 --- /dev/null +++ b/src/Schema/ArrayOfCombinedListMessage.cs @@ -0,0 +1,12 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema +{ + [XmlRoot(ElementName = "ArrayOfCombinedListMessage")] + [Serializable] + public class ArrayOfCombinedListMessage + { + [XmlElement("CombinedListMessage")] + public CombinedListMessage[] CombinedListMessage; + } +} \ No newline at end of file diff --git a/src/Schema/CombinedListMessage.cs b/src/Schema/CombinedListMessage.cs new file mode 100644 index 0000000..073702a --- /dev/null +++ b/src/Schema/CombinedListMessage.cs @@ -0,0 +1,17 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema +{ + [Serializable] + public class CombinedListMessage + { + [XmlElement(ElementName = "MessageType")] + public int MessageType; + + [XmlElement(ElementName = "MessageDate")] + public DateTime MessageDate; + + [XmlElement(ElementName = "Body", IsNullable = true)] + public string MessageBody; + } +} \ No newline at end of file diff --git a/src/Schema/Message.cs b/src/Schema/Message.cs new file mode 100644 index 0000000..8805623 --- /dev/null +++ b/src/Schema/Message.cs @@ -0,0 +1,39 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema +{ + [XmlRoot(ElementName = "Message")] + [Serializable] + public class Message + { + [XmlElement(ElementName = "MessageID")] + public int? MessageID; + + [XmlElement(ElementName = "Creator")] + public string Creator; + + [XmlElement(ElementName = "MessageLevel")] + public MessageLevel MessageLevel; + + [XmlElement(ElementName = "MessageType")] + public MessageType MessageType; + + [XmlElement(ElementName = "Content", IsNullable = true)] + public string? Content; + + [XmlElement(ElementName = "ReplyToMessageID", IsNullable = true)] + public int? ReplyToMessageID; + + [XmlElement(ElementName = "CreateTime")] + public DateTime CreateTime; + + [XmlElement(ElementName = "UpdateDate", IsNullable = true)] + public DateTime? UpdateDate; + + [XmlElement(ElementName = "ConversationID")] + public int ConversationID; + + [XmlElement(ElementName = "DisplayAttribute", IsNullable = true)] + public string? DisplayAttribute; + } +} \ No newline at end of file diff --git a/src/Schema/MessageLevel.cs b/src/Schema/MessageLevel.cs new file mode 100644 index 0000000..d9b24b3 --- /dev/null +++ b/src/Schema/MessageLevel.cs @@ -0,0 +1,7 @@ +namespace sodoff.Schema; + +public enum MessageLevel +{ + Canned = 1, + WhiteList +} diff --git a/src/Schema/MessageType.cs b/src/Schema/MessageType.cs new file mode 100644 index 0000000..1a32bba --- /dev/null +++ b/src/Schema/MessageType.cs @@ -0,0 +1,10 @@ +namespace sodoff.Schema; + +public enum MessageType +{ + Chat = 1, + Post = 2, + Data = 3, + Challenge = 4, + Announcement = 5 +} diff --git a/src/Schema/MessageTypeID.cs b/src/Schema/MessageTypeID.cs new file mode 100644 index 0000000..ba99214 --- /dev/null +++ b/src/Schema/MessageTypeID.cs @@ -0,0 +1,27 @@ +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 +}