using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Shared.Abstractions.Results;

namespace TakeoutSaaS.Application.App.Tenants.Queries;

/// <summary>
/// 租户分页查询。
/// </summary>
public sealed record SearchTenantsQuery : IRequest<PagedResult<TenantDto>>
{
    /// <summary>
    /// 租户状态（精确匹配）。
    /// </summary>
    public TenantStatus? Status { get; init; }

    /// <summary>
    /// 实名认证状态（精确匹配）。
    /// </summary>
    public TenantVerificationStatus? VerificationStatus { get; init; }

    /// <summary>
    /// 租户名称（模糊匹配）。
    /// </summary>
    public string? Name { get; init; }

    /// <summary>
    /// 联系人姓名（模糊匹配）。
    /// </summary>
    public string? ContactName { get; init; }

    /// <summary>
    /// 联系电话（模糊匹配）。
    /// </summary>
    public string? ContactPhone { get; init; }

    /// <summary>
    /// 兼容关键词：按“名称/编码/联系人/电话”做模糊匹配。
    /// </summary>
    public string? Keyword { get; init; }

    /// <summary>
    /// 页码（从 1 开始）。
    /// </summary>
    public int Page { get; init; } = 1;

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