diff --git a/Inventory/FurnitureBase.cs b/Inventory/FurnitureBase.cs new file mode 100644 index 0000000..cc692b2 --- /dev/null +++ b/Inventory/FurnitureBase.cs @@ -0,0 +1,57 @@ +using Core.Blueprint.Mongo; +using MongoDB.Bson.Serialization.Attributes; +using System.Text.Json.Serialization; + +namespace Core.Adapters.Lib +{ + [CollectionAttributeName("Furniture")] + public class FurnitureBase : Document + { + [BsonElement("modelName")] + [JsonPropertyName("modelName")] + public string ModelName { get; set; } = null!; + + [BsonElement("material")] + [JsonPropertyName("material")] + public string Material { get; set; } = null!; + + [BsonElement("condition")] + [JsonPropertyName("condition")] + public string Condition { get; set; } = null!; + + [BsonElement("dimensions")] + [JsonPropertyName("dimensions")] + public Dimensions Dimensions { get; set; } = null!; + + [BsonElement("baseDescription")] + [JsonPropertyName("baseDescription")] + public string BaseDescription { get; set; } = null!; + + [BsonElement("representation")] + [JsonPropertyName("representation")] + public string Representation { get; set; } = null!; + + [BsonElement("maintenanceNotes")] + [JsonPropertyName("maintenanceNotes")] + public string MaintenanceNotes { get; set; } = null!; + + [BsonElement("variantIds")] + [JsonPropertyName("variantIds")] + public List VariantIds { get; set; } = new(); + } + + public class Dimensions + { + [BsonElement("width")] + [JsonPropertyName("width")] + public float Width { get; set; } + + [BsonElement("height")] + [JsonPropertyName("height")] + public float Height { get; set; } + + [BsonElement("depth")] + [JsonPropertyName("depth")] + public float Depth { get; set; } + } +} diff --git a/Inventory/FurnitureVariant.cs b/Inventory/FurnitureVariant.cs new file mode 100644 index 0000000..aad1b2a --- /dev/null +++ b/Inventory/FurnitureVariant.cs @@ -0,0 +1,26 @@ +using Core.Blueprint.Mongo; +using MongoDB.Bson.Serialization.Attributes; +using System.Text.Json.Serialization; + +namespace Core.Adapters.Lib +{ + [CollectionAttributeName("FurnitureVariants")] + public class FurnitureVariant : InventoryItem + { + [BsonElement("modelId")] + [JsonPropertyName("modelId")] + public string ModelId { get; set; } = null!; + + [BsonElement("name")] + [JsonPropertyName("name")] + public string Name { get; set; } = null!; + + [BsonElement("color")] + [JsonPropertyName("color")] + public string Color { get; set; } = null!; + + [BsonElement("line")] + [JsonPropertyName("line")] + public string Line { get; set; } = null!; + } +} diff --git a/Inventory/InventoryItem.cs b/Inventory/InventoryItem.cs new file mode 100644 index 0000000..4334902 --- /dev/null +++ b/Inventory/InventoryItem.cs @@ -0,0 +1,35 @@ +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; +using System.Text.Json.Serialization; + +namespace Core.Adapters.Lib +{ + public abstract class InventoryItem : Document + { + [BsonElement("stock")] + [JsonPropertyName("stock")] + public int Stock { get; set; } + + [BsonElement("price")] + [JsonPropertyName("price")] + public decimal Price { get; set; } + + [BsonElement("currency")] + [JsonPropertyName("currency")] + public string Currency { get; set; } = null!; + + [BsonElement("categoryId")] + [BsonRepresentation(BsonType.String)] + [JsonPropertyName("categoryId")] + public string CategoryId { get; set; } + + [BsonElement("providerId")] + [BsonRepresentation(BsonType.String)] + [JsonPropertyName("providerId")] + public string ProviderId { get; set; } + + [BsonElement("attributes")] + [JsonPropertyName("attributes")] + public Dictionary Attributes { get; set; } = []; + } +}