53 lines
2.1 KiB
C#
53 lines
2.1 KiB
C#
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<string, object> ToDictionary()
|
|
{
|
|
Dictionary<string, object> 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;
|
|
}
|
|
}
|
|
}
|