namespace CMSMicroservice.Application.ProductsCQ.Commands.ToggleProductStatus;

/// <summary>
/// فعال/غیرفعال کردن دسته‌ای محصولات
/// (با تنظیم موجودی به 0 برای غیرفعال کردن)
/// </summary>
public record ToggleProductStatusCommand : IRequest<ToggleProductStatusResponseDto>
{
    /// <summary>
    /// لیست شناسه محصولات
    /// </summary>
    public List<long> ProductIds { get; init; } = new();
    
    /// <summary>
    /// فعال کردن یا غیرفعال کردن
    /// </summary>
    public bool Enable { get; init; }
    
    /// <summary>
    /// موجودی پیش‌فرض برای فعال‌سازی (پیش‌فرض: 1)
    /// </summary>
    public int DefaultStock { get; init; } = 1;
}

/// <summary>
/// پاسخ فعال/غیرفعال کردن دسته‌ای
/// </summary>
public class ToggleProductStatusResponseDto
{
    /// <summary>
    /// تعداد محصولات به‌روزرسانی شده
    /// </summary>
    public int UpdatedCount { get; set; }

    /// <summary>
    /// تعداد محصولات ناموفق
    /// </summary>
    public int FailedCount { get; set; }

    /// <summary>
    /// جزئیات خطاها
    /// </summary>
    public List<string> Errors { get; set; } = new();

    /// <summary>
    /// آیا همه موفق بودند
    /// </summary>
    public bool IsSuccess => FailedCount == 0;
}
