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

namespace CMSMicroservice.Application.PublicMessageCQ.Queries.GetAllMessages;

/// <summary>
/// کوئری دریافت همه پیام‌ها (Admin)
/// با فیلترها و صفحه‌بندی
/// </summary>
public class GetAllMessagesQuery : IRequest<GetAllMessagesResponseDto>
{
    public int PageNumber { get; set; } = 1;
    public int PageSize { get; set; } = 10;
    
    // فیلترها
    public bool? IsActive { get; set; }
    public MessageType? Type { get; set; }
    public MessagePriority? Priority { get; set; }
    public DateTime? StartDate { get; set; }
    public DateTime? EndDate { get; set; }
    public string? SearchTerm { get; set; }
    public bool OrderByDescending { get; set; } = true;
}
