diff --git a/src/Business/Grand.Business.Checkout/Queries/Handlers/Orders/GetOrderQueryHandler.cs b/src/Business/Grand.Business.Checkout/Queries/Handlers/Orders/GetOrderQueryHandler.cs index 250653c38..be397bbde 100644 --- a/src/Business/Grand.Business.Checkout/Queries/Handlers/Orders/GetOrderQueryHandler.cs +++ b/src/Business/Grand.Business.Checkout/Queries/Handlers/Orders/GetOrderQueryHandler.cs @@ -97,6 +97,10 @@ public Task> Handle(GetOrderQuery request, CancellationToken c { query = query.Where(o => o.Code == request.OrderCode.ToUpperInvariant()); } + if (!string.IsNullOrEmpty(request.OrderNumber) && int.TryParse(request.OrderNumber, out int orderNumber)) + { + query = query.Where(o => o.OrderNumber == orderNumber); + } //tag filtering if (!string.IsNullOrEmpty(request.OrderTagId)) diff --git a/src/Business/Grand.Business.Checkout/Services/Orders/OrderService.cs b/src/Business/Grand.Business.Checkout/Services/Orders/OrderService.cs index 39ae6affb..02db488a6 100644 --- a/src/Business/Grand.Business.Checkout/Services/Orders/OrderService.cs +++ b/src/Business/Grand.Business.Checkout/Services/Orders/OrderService.cs @@ -152,6 +152,7 @@ public virtual Task GetOrderByGuid(Guid orderGuid) /// Page index /// Page size /// Order tag identifier + /// Order number /// Orders public virtual async Task> SearchOrders(string storeId = "", string vendorId = "", string customerId = "", @@ -160,10 +161,9 @@ public virtual async Task> SearchOrders(string storeId = "", DateTime? createdFromUtc = null, DateTime? createdToUtc = null, int? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null, string billingEmail = null, string billingLastName = "", string orderGuid = null, - string orderCode = null, int pageIndex = 0, int pageSize = int.MaxValue, string orderTagId = "") + string orderCode = null, int pageIndex = 0, int pageSize = int.MaxValue, string orderTagId = "", string orderNumber = "") { - var queryModel = new GetOrderQuery - { + var queryModel = new GetOrderQuery { AffiliateId = affiliateId, BillingCountryId = billingCountryId, BillingEmail = billingEmail, @@ -185,7 +185,8 @@ public virtual async Task> SearchOrders(string storeId = "", WarehouseId = warehouseId, OrderTagId = orderTagId, OwnerId = ownerId, - SalesEmployeeId = salesEmployeeId + SalesEmployeeId = salesEmployeeId, + OrderNumber = orderNumber }; var query = await _mediator.Send(queryModel); return await PagedList.Create(query, pageIndex, pageSize); @@ -232,7 +233,7 @@ public async Task CancelExpiredOrders(DateTime expirationDateUtc) { var orders = _orderRepository.Table .Where(o => o.CreatedOnUtc < expirationDateUtc && o.PaymentStatusId == PaymentStatus.Pending && - o.OrderStatusId == (int)OrderStatusSystem.Pending && (o.ShippingStatusId == ShippingStatus.Pending + o.OrderStatusId == (int)OrderStatusSystem.Pending && (o.ShippingStatusId == ShippingStatus.Pending || o.ShippingStatusId == ShippingStatus.ShippingNotRequired)) .ToList(); diff --git a/src/Business/Grand.Business.Core/Interfaces/Checkout/Orders/IOrderService.cs b/src/Business/Grand.Business.Core/Interfaces/Checkout/Orders/IOrderService.cs index f289944c6..585cd22dc 100644 --- a/src/Business/Grand.Business.Core/Interfaces/Checkout/Orders/IOrderService.cs +++ b/src/Business/Grand.Business.Core/Interfaces/Checkout/Orders/IOrderService.cs @@ -87,7 +87,7 @@ Task> SearchOrders(string storeId = "", DateTime? createdFromUtc = null, DateTime? createdToUtc = null, int? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null, string billingEmail = null, string billingLastName = "", string orderGuid = null, - string orderCode = null, int pageIndex = 0, int pageSize = int.MaxValue, string orderTagId = ""); + string orderCode = null, int pageIndex = 0, int pageSize = int.MaxValue, string orderTagId = "",string orderNumber = ""); /// /// Inserts an order diff --git a/src/Business/Grand.Business.Core/Queries/Checkout/Orders/GetOrderQuery.cs b/src/Business/Grand.Business.Core/Queries/Checkout/Orders/GetOrderQuery.cs index 3cc6f2899..64639ae0c 100644 --- a/src/Business/Grand.Business.Core/Queries/Checkout/Orders/GetOrderQuery.cs +++ b/src/Business/Grand.Business.Core/Queries/Checkout/Orders/GetOrderQuery.cs @@ -30,5 +30,6 @@ public class GetOrderQuery : IRequest> public int PageIndex { get; set; } = 0; public int PageSize { get; set; } = int.MaxValue; public string OrderTagId { get; set; } = ""; + public string OrderNumber { get; set; } = ""; } }