namespace CMSMicroservice.Application.ConfigurationCQ.Queries.GetAllConfigurations;

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

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

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

public class GetAllConfigurationsFilter
{
    /// <summary>
    /// فیلتر بر اساس محدوده
    /// </summary>
    public ConfigurationScope? Scope { get; set; }

    /// <summary>
    /// جستجو در کلید
    /// </summary>
    public string? KeyContains { get; set; }

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