Add remaining project files
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using LiteDB;
|
||||
using static DeluxeBackend.Enums;
|
||||
|
||||
namespace DeluxeBackend.Models
|
||||
{
|
||||
public class ActionLinkExtraData
|
||||
{
|
||||
public ulong? DiscordUserId { get; set; } = null;
|
||||
public long? RoomId { get; set; } = null;
|
||||
}
|
||||
public class ActionLink
|
||||
{
|
||||
[BsonId]
|
||||
public long Id { get; set; }
|
||||
public PlatformType? Platform { get; set; } = null;
|
||||
public required string Code { get; set; }
|
||||
public required long CreatorPlayerId { get; set; }
|
||||
public required string Description { get; set; }
|
||||
public required ActionLinkType Type { get; set; }
|
||||
public ActionLinkExtraData? ExtraData { get; set; } = null;
|
||||
public required DateTime ExpiresAt { get; set; }
|
||||
public int MaxUses { get; set; } = 100;
|
||||
public int Uses { get; set; } = 0;
|
||||
|
||||
[BsonIgnore]
|
||||
public bool IsValid
|
||||
{
|
||||
get
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
bool timeValid = ExpiresAt.Kind == DateTimeKind.Utc
|
||||
? ExpiresAt > now
|
||||
: ExpiresAt.ToUniversalTime() > now;
|
||||
|
||||
return timeValid && Uses < MaxUses;
|
||||
}
|
||||
}
|
||||
|
||||
[BsonIgnore]
|
||||
public Dictionary<string, object> ToDictionary()
|
||||
{
|
||||
Dictionary<string, object> dataMeow = new()
|
||||
{
|
||||
["Type"] = (int)Type
|
||||
};
|
||||
if (Type == ActionLinkType.DiscordLink)
|
||||
{
|
||||
dataMeow["Type"] = (int)ActionLinkType.Room;
|
||||
ExtraData!.RoomId = 2;
|
||||
}
|
||||
if (Platform != null)
|
||||
{
|
||||
dataMeow["Platform"] = (int)Platform;
|
||||
}
|
||||
if (ExtraData != null)
|
||||
{
|
||||
dataMeow["ExtraJson"] = System.Text.Json.JsonSerializer.Serialize(ExtraData);
|
||||
}
|
||||
Dictionary<string, object> data = new()
|
||||
{
|
||||
["creatorPlayerId"] = CreatorPlayerId,
|
||||
["data"] = System.Text.Json.JsonSerializer.Serialize(dataMeow),
|
||||
["isValid"] = IsValid
|
||||
};
|
||||
return data;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user