// EN: Command to create a new category.
// VI: Command để tạo danh mục mới.

using MediatR;

namespace CatalogService.API.Application.Commands;

/// <summary>
/// EN: Command to create a new category.
/// VI: Command để tạo danh mục mới.
/// </summary>
public record CreateCategoryCommand : IRequest<Guid>
{
    /// <summary>
    /// EN: Shop ID that will own this category.
    /// VI: ID shop sẽ 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; }
}
