From 132762d874f449939d406d36c39f72d51602b3b2 Mon Sep 17 00:00:00 2001 From: Oleg Zhuk Date: Mon, 18 Mar 2024 09:22:50 +0200 Subject: [PATCH] VCST-541: Added CertainDate filter (#721) feat: Added CertainDate Filter for ProductIndexedSearchCriteria that allows to filter products that are enabled on the specific date. --- .../Model/Search/Indexed/ProductIndexedSearchCriteria.cs | 5 +++++ .../Search/Indexing/ProductSearchRequestBuilder.cs | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/VirtoCommerce.CatalogModule.Core/Model/Search/Indexed/ProductIndexedSearchCriteria.cs b/src/VirtoCommerce.CatalogModule.Core/Model/Search/Indexed/ProductIndexedSearchCriteria.cs index 7aa2024fd..879f27ffc 100644 --- a/src/VirtoCommerce.CatalogModule.Core/Model/Search/Indexed/ProductIndexedSearchCriteria.cs +++ b/src/VirtoCommerce.CatalogModule.Core/Model/Search/Indexed/ProductIndexedSearchCriteria.cs @@ -55,6 +55,11 @@ public class ProductIndexedSearchCriteria : CatalogIndexedSearchCriteria /// The end date. public virtual DateTime? EndDate { get; set; } + /// + /// Defines the date to be used for filtering products. The date must be in UTC format as that is format indexes are stored in. + /// + public DateTime? CertainDate { get; set; } + /// /// Gets or sets a "white" list of aggregation keys that identify preconfigured aggregations, which SHOULD be calculated and returned with the search result. /// diff --git a/src/VirtoCommerce.CatalogModule.Data/Search/Indexing/ProductSearchRequestBuilder.cs b/src/VirtoCommerce.CatalogModule.Data/Search/Indexing/ProductSearchRequestBuilder.cs index e9f1c9b9c..c048e61f4 100644 --- a/src/VirtoCommerce.CatalogModule.Data/Search/Indexing/ProductSearchRequestBuilder.cs +++ b/src/VirtoCommerce.CatalogModule.Data/Search/Indexing/ProductSearchRequestBuilder.cs @@ -156,6 +156,12 @@ protected virtual IList GetPermanentFilters(ProductIndexedSearchCriteri result.Add(FiltersHelper.CreateOutlineFilter(criteria)); + if (criteria.CertainDate.HasValue) + { + result.Add(FiltersHelper.CreateDateRangeFilter("startdate", null, criteria.CertainDate, false, true)); + result.Add(FiltersHelper.CreateDateRangeFilter("enddate", criteria.CertainDate, null, false, true)); + } + if (criteria.StartDateFrom.HasValue) { result.Add(FiltersHelper.CreateDateRangeFilter("startdate", criteria.StartDateFrom, criteria.StartDate, false, true));