using CMSMicroservice.Application.Common.Models;
using CMSMicroservice.Domain.Enums;
using MediatR;

namespace CMSMicroservice.Application.ManualPaymentCQ.Queries.GetAllManualPayments;

/// <summary>
/// کوئری دریافت لیست پرداخت‌های دستی با فیلتر
/// </summary>
public class GetAllManualPaymentsQuery : IRequest<GetAllManualPaymentsResponseDto>
{
    /// <summary>
    /// شماره صفحه
    /// </summary>
    public int PageNumber { get; set; } = 1;

    /// <summary>
    /// تعداد رکورد در هر صفحه
    /// </summary>
    public int PageSize { get; set; } = 10;

    /// <summary>
    /// فیلتر بر اساس UserId (اختیاری)
    /// </summary>
    public long? UserId { get; set; }

    /// <summary>
    /// فیلتر بر اساس وضعیت (اختیاری)
    /// </summary>
    public ManualPaymentStatus? Status { get; set; }

    /// <summary>
    /// فیلتر بر اساس نوع (اختیاری)
    /// </summary>
    public ManualPaymentType? Type { get; set; }

    /// <summary>
    /// فیلتر بر اساس RequestedBy (اختیاری)
    /// </summary>
    public long? RequestedBy { get; set; }

    /// <summary>
    /// مرتب‌سازی بر اساس تاریخ ایجاد (نزولی: true, صعودی: false)
    /// </summary>
    public bool OrderByDescending { get; set; } = true;
}
