namespace CMSMicroservice.Application.ClubMembershipCQ.Queries.GetAllClubMemberships;

/// <summary>
/// Query برای دریافت لیست عضویت‌های باشگاه
/// </summary>
public record GetAllClubMembershipsQuery : IRequest<GetAllClubMembershipsResponseDto>
{
    /// <summary>
    /// موقعیت صفحه‌بندی
    /// </summary>
    public PaginationState? PaginationState { get; init; }

    /// <summary>
    /// مرتب‌سازی بر اساس
    /// </summary>
    public string? SortBy { get; init; }

    /// <summary>
    /// فیلتر
    /// </summary>
    public GetAllClubMembershipsFilter? Filter { get; init; }
}

public class GetAllClubMembershipsFilter
{
    /// <summary>
    /// فیلتر بر اساس شناسه کاربر
    /// </summary>
    public long? UserId { get; set; }

    /// <summary>
    /// فقط عضویت‌های فعال
    /// </summary>
    public bool? IsActive { get; set; }

    /// <summary>
    /// فیلتر بر اساس تاریخ فعال‌سازی (از)
    /// </summary>
    public DateTimeOffset? ActivationDateFrom { get; set; }

    /// <summary>
    /// فیلتر بر اساس تاریخ فعال‌سازی (تا)
    /// </summary>
    public DateTimeOffset? ActivationDateTo { get; set; }
}
