// EN: Category Data Transfer Object for read operations.
// VI: DTO Category cho các thao tác đọc.

namespace CatalogService.API.Application.DTOs;

/// <summary>
/// EN: Category DTO for API responses.
/// VI: DTO Category cho API response.
/// </summary>
public record CategoryDto
{
    /// <summary>
    /// EN: Category ID.
    /// VI: ID danh mục.
    /// </summary>
    public Guid Id { get; init; }

    /// <summary>
    /// EN: Shop ID that owns this category.
    /// VI: ID shop sở hữu danh mục.
    /// </summary>
    public Guid ShopId { get; init; }

    /// <summary>
    /// EN: Category name.
    /// VI: Tên danh mục.
    /// </summary>
    public string Name { get; init; } = string.Empty;

    /// <summary>
    /// EN: Category description.
    /// VI: Mô tả danh mục.
    /// </summary>
    public string? Description { get; init; }

    /// <summary>
    /// EN: Parent category ID for hierarchical categories.
    /// VI: ID danh mục cha cho danh mục phân cấp.
    /// </summary>
    public Guid? ParentId { get; init; }

    /// <summary>
    /// EN: Display order.
    /// VI: Thứ tự hiển thị.
    /// </summary>
    public int DisplayOrder { get; init; }

    /// <summary>
    /// EN: Category image URL.
    /// VI: URL hình ảnh danh mục.
    /// </summary>
    public string? ImageUrl { get; init; }

    /// <summary>
    /// EN: Is category active.
    /// VI: Danh mục có đang hoạt động không.
    /// </summary>
    public bool IsActive { get; init; }

    /// <summary>
    /// EN: Creation timestamp.
    /// VI: Thời gian tạo.
    /// </summary>
    public DateTime CreatedAt { get; init; }

    /// <summary>
    /// EN: Last update timestamp.
    /// VI: Thời gian cập nhật cuối.
    /// </summary>
    public DateTime? UpdatedAt { get; init; }
}
