mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Text.Json;
|
|
using RadicadeServer.Extensions;
|
|
|
|
namespace RadicadeServer.RecNet.Messages
|
|
{
|
|
public class ChatThread
|
|
{
|
|
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
|
public long chatThreadId { get; set; }
|
|
public string chatThreadName { get; set; } = null!;
|
|
public long lastReadMessageId { get; set; }
|
|
public string messages { get; set; } = null!;
|
|
public string playerIds { get; set; } = null!;
|
|
|
|
public string? favoritedBy { get; set; }
|
|
|
|
public List<long> GetFavoritedBy() =>
|
|
string.IsNullOrWhiteSpace(favoritedBy) ? new List<long>() : favoritedBy.FromJson<List<long>>() ?? new List<long>();
|
|
|
|
public void SetFavoritedBy(IEnumerable<long> playerIds)
|
|
{
|
|
favoritedBy = playerIds.Distinct().OrderBy(x => x).ToList().ToJson();
|
|
}
|
|
|
|
public List<long>? GetPlayerIds()
|
|
{
|
|
return playerIds.FromJson<List<long>>();
|
|
}
|
|
public List<ChatMessage>? GetMessages()
|
|
{
|
|
if (string.IsNullOrWhiteSpace(messages)) return new List<ChatMessage>();
|
|
if (messages.TrimStart().StartsWith("{", StringComparison.Ordinal))
|
|
{
|
|
var message = messages.FromJson<ChatMessage>();
|
|
return message == null ? new List<ChatMessage>() : new List<ChatMessage> { message };
|
|
}
|
|
return messages.FromJson<List<ChatMessage>>();
|
|
}
|
|
public string AddMessage(ChatMessage message)
|
|
{
|
|
var messages = GetMessages() ?? new List<ChatMessage>();
|
|
messages.Add(message);
|
|
return messages.ToJson();
|
|
}
|
|
public string AddPlayer(long player)
|
|
{
|
|
var players = GetPlayerIds() ?? new List<long>();
|
|
players.Add(player);
|
|
return players.ToJson(); ;
|
|
}
|
|
}
|
|
}
|