using MediatR;
using TakeoutSaaS.Application.App.Finance.Invoice.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;

namespace TakeoutSaaS.Application.App.Finance.Invoice.Queries;

/// <summary>
/// 查询发票记录分页。
/// </summary>
public sealed class GetFinanceInvoiceRecordListQuery : IRequest<FinanceInvoiceRecordListResultDto>
{
    /// <summary>
    /// 开始日期（UTC）。
    /// </summary>
    public DateTime? StartDateUtc { get; init; }

    /// <summary>
    /// 结束日期（UTC）。
    /// </summary>
    public DateTime? EndDateUtc { get; init; }

    /// <summary>
    /// 状态筛选。
    /// </summary>
    public TenantInvoiceStatus? Status { get; init; }

    /// <summary>
    /// 类型筛选。
    /// </summary>
    public TenantInvoiceType? InvoiceType { get; init; }

    /// <summary>
    /// 关键词。
    /// </summary>
    public string? Keyword { get; init; }

    /// <summary>
    /// 页码。
    /// </summary>
    public int Page { get; init; } = 1;

    /// <summary>
    /// 每页条数。
    /// </summary>
    public int PageSize { get; init; } = 20;
}
