This commit is contained in:
DmitriyFadin
2026-09-30 15:05:05 +03:00
commit ca18fc196d
122 changed files with 8794 additions and 0 deletions
@@ -0,0 +1,20 @@
using TrainingPlanner.Domain;
namespace TrainingPlanner.Application;
public static class ExerciseSearch
{
public static List<LibraryExercise> Find(IEnumerable<LibraryExercise> exercises, string query)
{
var search = Normalize(query);
var words = search.Split(' ', StringSplitOptions.RemoveEmptyEntries);
return exercises
.Where(exercise => words.All(word => Normalize(exercise.Name).Contains(word)))
.OrderByDescending(exercise => Normalize(exercise.Name) == search)
.ThenByDescending(exercise => Normalize(exercise.Name).StartsWith(search))
.ThenBy(exercise => exercise.Name, StringComparer.CurrentCultureIgnoreCase)
.ToList();
}
private static string Normalize(string value) => value.Trim().ToLowerInvariant().Replace('ё', 'е');
}