using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using eprintServer.Enums; using System.Text.Json.Serialization; namespace eprintServer.Entities; [Table("sellable_products")] public class SellableProduct { [Key] [Column("id")] public int Id { get; set; } [Column("product_name_en")] public string? ProductNameEN { get; set; } = string.Empty; [Column("product_name_ar")] public string? ProductNameAR { get; set; } = string.Empty; [Column("price")] public double Price { get; set; } [Column("stock_quantity")] public double StockQuantity { get; set; } [Column("description_ar", TypeName = "text")] [StringLength(3000)] public string? DescriptionAR { get; set; } = string.Empty; [Column("description_en", TypeName = "text")] [StringLength(3000)] public string? DescriptionEN { get; set; } = string.Empty; [Column("status")] public SellableProductStatusEnum Status { get; set; } [Column("image_id")] public long? ImageId { get; set; } [ForeignKey(nameof(ImageId))] public FileModel? Image { get; set; } [Column("created_at")] public DateTime CreatedAt { get; set; } [Column("updated_at")] public DateTime UpdatedAt { get; set; } [Column("category_id")] public long CategoryId { get; set; } [JsonIgnore] [ForeignKey(nameof(CategoryId))] public ProductCategory? Category { get; set; } [NotMapped] public List CategoryName => Category?.Name ?? new List(); public List Names { get; set; } = new(); public List Descriptions { get; set; } = new(); public SellableProduct() { CreatedAt = DateTime.UtcNow; UpdatedAt = DateTime.UtcNow; } public void SetImage(FileModel file) { Image = file; ImageId = file.Id; } }