using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace SkyArtShop.Models;

public class Product
{
	[BsonId]
	[BsonRepresentation(BsonType.ObjectId)]
	public string? Id { get; set; }

	[Required]
	public string Name { get; set; } = string.Empty;

	public string Slug { get; set; } = string.Empty;

	public string SKU { get; set; } = string.Empty;

	public string ShortDescription { get; set; } = string.Empty;

	public string Description { get; set; } = string.Empty;

	[Required]
	public decimal Price { get; set; }

	public string Category { get; set; } = string.Empty;

	public string Color { get; set; } = string.Empty;

	public List<string> Colors { get; set; } = new List<string>();

	public List<ProductVariant> Variants { get; set; } = new List<ProductVariant>();

	public string ImageUrl { get; set; } = string.Empty;

	public List<string> Images { get; set; } = new List<string>();

	public bool IsFeatured { get; set; }

	public bool IsTopSeller { get; set; }

	public int StockQuantity { get; set; }

	public bool IsActive { get; set; } = true;

	public int UnitsSold { get; set; }

	public decimal TotalRevenue { get; set; }

	public double AverageRating { get; set; }

	public int TotalReviews { get; set; }

	public decimal CostPrice { get; set; }

	public List<string> Tags { get; set; } = new List<string>();

	public string MetaDescription { get; set; } = string.Empty;

	public DateTime CreatedAt { get; set; } = DateTime.UtcNow;

	public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
}
