using LiteDB; using static DeluxeBackend.Enums; namespace DeluxeBackend.Models { public class PlayerEvent { [BsonId] public long Id { get; set; } [BsonRef("accounts")] public required Account Creator { get; set; } [BsonRef("rooms")] public required Room Room { get; set; } [BsonRef("subrooms")] public required SubRoom SubRoom { get; set; } public required string Name { get; set; } public string Description { get; set; } = string.Empty; public string? ImageName { get; set; } = string.Empty; public required DateTime StartTime { get; set; } public required DateTime EndTime { get; set; } public required RoomAccessibility Accessibility { get; set; } public bool IsMultiInstance { get; set; } = false; public bool SupportMultiInstanceRoomChat { get; set; } = false; public BroadcastPerms DefaultBroadcastPermissions { get; set; } = BroadcastPerms.None; public BroadcastPerms CanRequestBroadcastPermissions { get; set; } = BroadcastPerms.None; public long? BroadcastingRoomInstanceId { get; set; } = null; [BsonIgnore] public Dictionary ToDictionary() { return new Dictionary() { ["PlayerEventId"] = Id, ["CreatorPlayerId"] = Creator.Id, ["RoomId"] = Room.Id, ["SubRoomId"] = SubRoom.Id, ["Name"] = Name, ["Description"] = Description ?? "", ["ImageName"] = ImageName ?? "", ["StartTime"] = StartTime.ToUniversalTime().ToString("O"), ["EndTime"] = EndTime.ToUniversalTime().ToString("O"), ["AttendeeCount"] = -1, ["Accessibility"] = (int)Accessibility, ["IsMultiInstance"] = IsMultiInstance, ["SupportMultiInstanceRoomChat"] = SupportMultiInstanceRoomChat, ["DefaultBroadcastPermissions"] = (int)DefaultBroadcastPermissions, ["CanRequestBroadcastPermissions"] = (int)CanRequestBroadcastPermissions, ["BroadcastingRoomInstanceId"] = BroadcastingRoomInstanceId }; } } }