using Grand.Domain.Customers;
using Grand.Domain.Orders;
using MediatR;
using System.Linq.Expressions;

namespace Grand.Business.Core.Queries.Customers
{
    public class GetCustomerQuery : IRequest<IQueryable<Customer>>
    {
        public DateTime? CreatedFromUtc { get; set; } = null;

        public DateTime? CreatedToUtc { get; set; } = null;
        public string AffiliateId { get; set; } = "";
        public string VendorId { get; set; } = "";
        public string StoreId { get; set; } = "";
        public string OwnerId { get; set; } = "";
        public string SalesEmployeeId { get; set; } = "";
        public string[] CustomerGroupIds { get; set; } = null;
        public string[] CustomerTagIds { get; set; } = null;
        public string Email { get; set; } = null;
        public string Username { get; set; } = null;
        public string FirstName { get; set; } = null;
        public string LastName { get; set; } = null;
        public string Company { get; set; } = null;
        public string Phone { get; set; } = null;
        public string ZipPostalCode { get; set; } = null;
        public bool LoadOnlyWithShoppingCart { get; set; } = false;
        public ShoppingCartType? Sct { get; set; } = null;
        public int PageIndex { get; set; } = 0;
        public int PageSize { get; set; } = int.MaxValue;
        public Expression<Func<Customer, object>> OrderBySelector { get; set; } = null;
    }
}
