From c03b299bc31c3b2f72e0853f5cca80f5a7febb57 Mon Sep 17 00:00:00 2001 From: OlhaHoliak <59091855+OlhaHoliak@users.noreply.github.com> Date: Wed, 28 Jul 2021 20:53:59 +0300 Subject: [PATCH] fix workshop filtering by price (#250) --- .../ESWorkshopProvider.cs | 6 +++--- .../Models/WorkshopFilterES.cs | 2 -- .../Extensions/MappingExtensionsTests.cs | 2 -- .../OutOfSchool.WebApi/Models/WorkshopFilterDto.cs | 2 -- .../Services/Database/WorkshopService.cs | 13 ++++--------- 5 files changed, 7 insertions(+), 18 deletions(-) diff --git a/OutOfSchool/OutOfSchool.ElasticsearchData/ESWorkshopProvider.cs b/OutOfSchool/OutOfSchool.ElasticsearchData/ESWorkshopProvider.cs index 613b576843..43fcb4b66d 100644 --- a/OutOfSchool/OutOfSchool.ElasticsearchData/ESWorkshopProvider.cs +++ b/OutOfSchool/OutOfSchool.ElasticsearchData/ESWorkshopProvider.cs @@ -87,7 +87,7 @@ private QueryContainer CreateQueryFromFilter(WorkshopFilterES filter) }; } - if (filter.IsFree && !filter.IsPaid) + if (filter.IsFree && (filter.MinPrice == 0 && filter.MaxPrice == int.MaxValue)) { queryContainer &= new TermQuery() { @@ -95,7 +95,7 @@ private QueryContainer CreateQueryFromFilter(WorkshopFilterES filter) Value = 0, }; } - else if (!filter.IsFree && filter.IsPaid) + else if (!filter.IsFree && !(filter.MinPrice == 0 || filter.MaxPrice == int.MaxValue)) { queryContainer &= new NumericRangeQuery() { @@ -104,7 +104,7 @@ private QueryContainer CreateQueryFromFilter(WorkshopFilterES filter) LessThanOrEqualTo = filter.MaxPrice, }; } - else if (filter.IsFree && filter.IsPaid) + else if (filter.IsFree && !(filter.MinPrice == 0 || filter.MaxPrice == int.MaxValue)) { var tempQuery = new QueryContainer(); diff --git a/OutOfSchool/OutOfSchool.ElasticsearchData/Models/WorkshopFilterES.cs b/OutOfSchool/OutOfSchool.ElasticsearchData/Models/WorkshopFilterES.cs index 362aec810c..eee601d7e4 100644 --- a/OutOfSchool/OutOfSchool.ElasticsearchData/Models/WorkshopFilterES.cs +++ b/OutOfSchool/OutOfSchool.ElasticsearchData/Models/WorkshopFilterES.cs @@ -17,8 +17,6 @@ public class WorkshopFilterES public bool IsFree { get; set; } = false; - public bool IsPaid { get; set; } = false; - public int MinPrice { get; set; } = 0; public int MaxPrice { get; set; } = int.MaxValue; diff --git a/OutOfSchool/OutOfSchool.WebApi.Tests/Extensions/MappingExtensionsTests.cs b/OutOfSchool/OutOfSchool.WebApi.Tests/Extensions/MappingExtensionsTests.cs index d27f600276..bd80804392 100644 --- a/OutOfSchool/OutOfSchool.WebApi.Tests/Extensions/MappingExtensionsTests.cs +++ b/OutOfSchool/OutOfSchool.WebApi.Tests/Extensions/MappingExtensionsTests.cs @@ -133,7 +133,6 @@ public void Mapping_WorkshopFilterDto_ToESModel_IsCorrect() City = "City", DirectionIds = new List() { 1, 2 }, IsFree = false, - IsPaid = true, MinPrice = 0, MaxPrice = 20, OrderByField = Enums.OrderBy.PriceDesc.ToString(), @@ -151,7 +150,6 @@ public void Mapping_WorkshopFilterDto_ToESModel_IsCorrect() Assert.AreEqual(filter.Ids, result.Ids); Assert.AreEqual(filter.DirectionIds, result.DirectionIds); Assert.AreEqual(filter.IsFree, result.IsFree); - Assert.AreEqual(filter.IsPaid, result.IsPaid); Assert.AreEqual(filter.MinAge, result.MinAge); Assert.AreEqual(filter.MaxAge, result.MaxAge); Assert.AreEqual(filter.WithDisabilityOptions, result.WithDisabilityOptions); diff --git a/OutOfSchool/OutOfSchool.WebApi/Models/WorkshopFilterDto.cs b/OutOfSchool/OutOfSchool.WebApi/Models/WorkshopFilterDto.cs index a13c199fbd..2a8b71ff2a 100644 --- a/OutOfSchool/OutOfSchool.WebApi/Models/WorkshopFilterDto.cs +++ b/OutOfSchool/OutOfSchool.WebApi/Models/WorkshopFilterDto.cs @@ -17,8 +17,6 @@ public class WorkshopFilterDto public bool IsFree { get; set; } = false; - public bool IsPaid { get; set; } = false; - public int MinPrice { get; set; } = 0; public int MaxPrice { get; set; } = int.MaxValue; diff --git a/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs b/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs index 3e962eb7cc..a68d788c15 100644 --- a/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs +++ b/OutOfSchool/OutOfSchool.WebApi/Services/Database/WorkshopService.cs @@ -296,20 +296,15 @@ private Expression> PredicateBuild(WorkshopFilterDto filter predicate = predicate.And(tempPredicate); } - if (filter.MinPrice >= 0 && filter.MaxPrice < int.MaxValue) + if (filter.IsFree && (filter.MinPrice == 0 && filter.MaxPrice == int.MaxValue)) { - predicate = predicate.And(x => x.Price >= filter.MinPrice && x.Price <= filter.MaxPrice); - } - - if (filter.IsFree && !filter.IsPaid) - { - predicate = predicate.And(x => x.Price == filter.MaxPrice); + predicate = predicate.And(x => x.Price == filter.MinPrice); } - else if (!filter.IsFree && filter.IsPaid) + else if (!filter.IsFree && !(filter.MinPrice == 0 || filter.MaxPrice == int.MaxValue)) { predicate = predicate.And(x => x.Price >= filter.MinPrice && x.Price <= filter.MaxPrice); } - else if (filter.IsFree && filter.IsPaid) + else if (filter.IsFree && !(filter.MinPrice == 0 || filter.MaxPrice == int.MaxValue)) { predicate = predicate.And(x => (x.Price >= filter.MinPrice && x.Price <= filter.MaxPrice) || x.Price == 0); }