// EN: Command to update an existing product.
// VI: Command để cập nhật sản phẩm hiện tại.

using MediatR;

namespace CatalogService.API.Application.Commands;

/// <summary>
/// EN: Command to update product information.
/// VI: Command để cập nhật thông tin sản phẩm.
/// </summary>
public record UpdateProductCommand : IRequest<bool>
{
    /// <summary>
    /// EN: Product ID to update.
    /// VI: ID sản phẩm cần cập nhật.
    /// </summary>
    public Guid ProductId { get; init; }

    /// <summary>
    /// EN: Product name.
    /// VI: Tên sản phẩm.
    /// </summary>
    public string Name { get; init; } = string.Empty;

    /// <summary>
    /// EN: Product description.
    /// VI: Mô tả sản phẩm.
    /// </summary>
    public string? Description { get; init; }

    /// <summary>
    /// EN: Product price.
    /// VI: Giá sản phẩm.
    /// </summary>
    public decimal Price { get; init; }

    /// <summary>
    /// EN: Type-specific attributes as JSON.
    /// VI: Thuộc tính theo loại dưới dạng JSON.
    /// </summary>
    public Dictionary<string, object>? Attributes { get; init; }

    /// <summary>
    /// EN: Product image URL.
    /// VI: URL hình ảnh sản phẩm.
    /// </summary>
    public string? ImageUrl { get; init; }
}
