Implementation
static List<MatchedProduct> sort(
final List<Product> products,
final ProductPreferencesManager productPreferencesManager,
final UserPreferences userPreferences,
) {
final List<MatchedProduct> result = <MatchedProduct>[];
for (final Product product in products) {
final MatchedProduct matchedProduct = MatchedProduct.getMatchedProduct(
product,
productPreferencesManager,
userPreferences,
);
result.add(matchedProduct);
}
result.sort(
(MatchedProduct a, MatchedProduct b) => b.score.compareTo(a.score));
return result;
}