namespace CMSMicroservice.Application.UserOrderCQ.Queries.CalculateOrderPV;

/// <summary>
/// محاسبه امتیاز PV سفارش
/// </summary>
public record CalculateOrderPVQuery : IRequest<CalculateOrderPVResponseDto>
{
    /// <summary>
    /// شناسه سفارش
    /// </summary>
    public long OrderId { get; init; }
}

/// <summary>
/// پاسخ محاسبه PV سفارش
/// </summary>
public class CalculateOrderPVResponseDto
{
    /// <summary>
    /// مجموع امتیاز PV سفارش
    /// </summary>
    public decimal TotalPV { get; set; }

    /// <summary>
    /// جزئیات PV هر محصول
    /// </summary>
    public List<ProductPVDto> ProductPVs { get; set; } = new();

    /// <summary>
    /// مبلغ قابل پرداخت
    /// </summary>
    public long PayableAmount { get; set; }
}

/// <summary>
/// جزئیات PV یک محصول در سفارش
/// </summary>
public class ProductPVDto
{
    public long ProductId { get; set; }
    public string ProductTitle { get; set; } = string.Empty;
    public int Quantity { get; set; }
    public decimal UnitPV { get; set; }
    public decimal TotalPV { get; set; }
    public long UnitPrice { get; set; }
}
