Skip to content

Commit 45d572e

Browse files
VCST-3865: extracted reusable code from Catalog and Orders modules (#53)
Co-authored-by: Elena Mutykova <[email protected]>
1 parent 5d07a7d commit 45d572e

File tree

3 files changed

+74
-2
lines changed

3 files changed

+74
-2
lines changed

src/VirtoCommerce.Xapi.Core/VirtoCommerce.Xapi.Core.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<PackageReference Include="System.Reactive" Version="6.0.0" />
3030
<PackageReference Include="VirtoCommerce.Platform.Core" Version="3.895.0" />
3131
<PackageReference Include="VirtoCommerce.CustomerModule.Core" Version="3.833.0" />
32-
<PackageReference Include="VirtoCommerce.SearchModule.Core" Version="3.816.0" />
32+
<PackageReference Include="VirtoCommerce.SearchModule.Core" Version="3.818.0" />
3333
<PackageReference Include="VirtoCommerce.Seo.Core" Version="3.807.0" />
3434
<PackageReference Include="VirtoCommerce.StoreModule.Core" Version="3.818.0" />
3535
<PackageReference Include="VirtoCommerce.TaxModule.Core" Version="3.802.0" />
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System;
2+
using System.Linq;
3+
using AutoMapper;
4+
using VirtoCommerce.SearchModule.Core.Model;
5+
using VirtoCommerce.Xapi.Core.Extensions;
6+
using VirtoCommerce.Xapi.Core.Models.Facets;
7+
8+
namespace VirtoCommerce.Xapi.Data.Mapping;
9+
10+
public class FacetMappingProfile : Profile
11+
{
12+
public FacetMappingProfile()
13+
{
14+
CreateMap<Aggregation, FacetResult>().IncludeAllDerived().ConvertUsing((request, facet, context) =>
15+
{
16+
context.Items.TryGetValue("cultureName", out var cultureNameObj);
17+
var cultureName = cultureNameObj as string;
18+
FacetResult result = request.AggregationType switch
19+
{
20+
"attr" => new TermFacetResult
21+
{
22+
Name = request.Field,
23+
Label = request.Field,
24+
Terms = request.Items?.Select(x => new FacetTerm
25+
{
26+
Count = x.Count,
27+
IsSelected = x.IsApplied,
28+
Term = x.Value?.ToString(),
29+
Label = x.Labels?.FirstBestMatchForLanguage(x => x.Language, cultureName)?.Label ?? x.Value?.ToString(),
30+
}).ToArray() ?? [],
31+
32+
},
33+
"range" or "pricerange" => new RangeFacetResult
34+
{
35+
Name = request.Field,
36+
Label = request.Field,
37+
Ranges = request.Items?.Select(x => new FacetRange
38+
{
39+
Count = x.Count,
40+
IsSelected = x.IsApplied,
41+
From = Convert.ToInt64(x.RequestedLowerBound),
42+
IncludeFrom = x.IncludeLower,
43+
FromStr = x.RequestedLowerBound,
44+
To = Convert.ToInt64(x.RequestedUpperBound),
45+
IncludeTo = x.IncludeUpper,
46+
ToStr = x.RequestedUpperBound,
47+
Label = x.Value?.ToString(),
48+
}).ToArray() ?? [],
49+
Statistics = request.Statistics == null ? null : new RangeFacetStatistics
50+
{
51+
Max = request.Statistics.Max,
52+
Min = request.Statistics.Min,
53+
}
54+
},
55+
_ => null
56+
};
57+
58+
if (result != null)
59+
{
60+
result.Label = request.Labels?.FirstBestMatchForLanguage(x => x.Language, cultureName)?.Label ?? result.Name;
61+
62+
context.Items.TryGetValue("order", out var orderObj);
63+
if (orderObj != null)
64+
{
65+
result.Order = (int)orderObj;
66+
}
67+
}
68+
69+
return result;
70+
});
71+
}
72+
}

src/VirtoCommerce.Xapi.Web/module.manifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<dependencies>
99
<dependency id="VirtoCommerce.ApplicationInsights" version="3.804.0" optional="true" />
1010
<dependency id="VirtoCommerce.Customer" version="3.833.0" />
11-
<dependency id="VirtoCommerce.Search" version="3.816.0" />
11+
<dependency id="VirtoCommerce.Search" version="3.818.0" />
1212
<dependency id="VirtoCommerce.Seo" version="3.807.0" />
1313
<dependency id="VirtoCommerce.Store" version="3.818.0" />
1414
<dependency id="VirtoCommerce.Tax" version="3.802.0" optional="true" />

0 commit comments

Comments
 (0)