initial messaging work

add messaging schemas
modify ``Viking`` and ``DBContext``
This commit is contained in:
Alan Moon 2025-02-14 12:01:24 -08:00
parent 35a120bee9
commit eb049bb4d5
9 changed files with 164 additions and 0 deletions

View File

@ -156,6 +156,12 @@ public class DBContext : DbContext {
builder.Entity<Viking>().HasMany(v => v.ReportsReceived)
.WithOne(r => r.ReportedViking);
builder.Entity<Viking>().HasMany(v => v.MessagesMade)
.WithOne(r => r.Viking);
builder.Entity<Viking>().HasMany(v => v.MessageBoard)
.WithOne(r => r.FromViking);
// Dragons
builder.Entity<Dragon>().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<Message>().HasOne(r => r.Viking)
.WithMany(e => e.MessagesMade)
.HasForeignKey(e => e.VikingId);
builder.Entity<Message>().HasOne(r => r.FromViking)
.WithMany(e => e.MessageBoard)
.HasForeignKey(e => e.FromVikingId);
// Groups
builder.Entity<Group>().HasMany(r => r.Vikings)
.WithMany(e => e.Groups);

35
src/Model/Message.cs Normal file
View File

@ -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; }
}

View File

@ -43,6 +43,8 @@ public class Viking {
public virtual ICollection<Rating> Ratings { get; set; } = null!;
public virtual ICollection<Report> ReportsMade { get; set; } = null!;
public virtual ICollection<Report> ReportsReceived { get; set; } = null!;
public virtual ICollection<Message> MessageBoard { get; set; } = null!;
public virtual ICollection<Message> MessagesMade { get; set; } = null!;
public virtual Dragon? SelectedDragon { get; set; }
public DateTime? CreationDate { get; set; }

View File

@ -0,0 +1,12 @@
using System.Xml.Serialization;
namespace sodoff.Schema
{
[XmlRoot(ElementName = "ArrayOfCombinedListMessage")]
[Serializable]
public class ArrayOfCombinedListMessage
{
[XmlElement("CombinedListMessage")]
public CombinedListMessage[] CombinedListMessage;
}
}

View File

@ -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;
}
}

39
src/Schema/Message.cs Normal file
View File

@ -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;
}
}

View File

@ -0,0 +1,7 @@
namespace sodoff.Schema;
public enum MessageLevel
{
Canned = 1,
WhiteList
}

10
src/Schema/MessageType.cs Normal file
View File

@ -0,0 +1,10 @@
namespace sodoff.Schema;
public enum MessageType
{
Chat = 1,
Post = 2,
Data = 3,
Challenge = 4,
Announcement = 5
}

View File

@ -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
}