using LiteDB; using Newtonsoft.Json.Linq; using System.Drawing; using static DeluxeBackend.Enums; namespace DeluxeBackend.Models { public class CustomAvatarItem { [BsonId] public Guid Id { get; set; } [BsonRef("accounts")] public required Account Creator { get; set; } public required string Name { get; set; } public string Description { get; set; } = string.Empty; public required int Price { get; set; } public bool IsFeatured { get; set; } = false; public int? BaseAvatarItemId { get; set; } public required Color BaseAvatarItemColor { get; set; } public required string DesignFilename { get; set; } public required string ThumbnailImageFilename { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime ModifiedAt { get; set; } = DateTime.UtcNow; public RoomAccessibility Accessibility { get; set; } = RoomAccessibility.Public;//i love how i just use RoomAccessibility for any accessibility public required PreviewOrientationType PreviewOrientation { get; set; } [BsonIgnore] public Dictionary ToDictionary() { Dictionary data= new() { ["CustomAvatarItemId"] = Id.ToString(), ["CreatorAccountId"] = Creator.Id, ["Name"] = Name, ["Description"] = Description ?? "", ["Price"] = Price, ["Accessibility"] = (int)Accessibility, ["IsFeatured"] = IsFeatured, ["BaseAvatarItemColor"] = $"{ColorTranslator.ToHtml(BaseAvatarItemColor)}", ["DesignFilename"] = DesignFilename, ["ThumbnailImageFilename"] = ThumbnailImageFilename, ["CreatedAt"] = CreatedAt.ToString("O"), ["ModifiedAt"] = ModifiedAt.ToString("O"), }; if (BaseAvatarItemId.HasValue) { data["BaseAvatarItemId"] = BaseAvatarItemId.Value; } return data; } } }