using Grand.Domain.Orders;
using Grand.Domain.Payments;
using Grand.Domain.Shipping;
using MediatR;

namespace Grand.Business.Core.Queries.Checkout.Orders;

public class GetOrderQuery : IRequest<IQueryable<Order>>
{
    public string OrderId { get; set; } = "";
    public string StoreId { get; set; } = "";
    public string VendorId { get; set; } = "";
    public string CustomerId { get; set; } = "";
    public string ProductId { get; set; } = "";
    public string AffiliateId { get; set; } = "";
    public string WarehouseId { get; set; } = "";
    public string BillingCountryId { get; set; } = "";
    public string OwnerId { get; set; } = "";
    public string SalesEmployeeId { get; set; } = "";
    public string PaymentMethodSystemName { get; set; } = null;
    public DateTime? CreatedFromUtc { get; set; } = null;
    public DateTime? CreatedToUtc { get; set; } = null;
    public int? Os { get; set; } = null;
    public PaymentStatus? Ps { get; set; } = null;
    public ShippingStatus? Ss { get; set; } = null;
    public string BillingEmail { get; set; } = null;
    public string BillingLastName { get; set; } = "";
    public string OrderGuid { get; set; } = null;
    public string OrderCode { get; set; } = null;
    public int PageIndex { get; set; } = 0;
    public int PageSize { get; set; } = int.MaxValue;
    public string OrderTagId { get; set; } = "";
}