using TrainingPlanner.Domain; namespace TrainingPlanner.Application; public static class ExerciseSearch { public static List Find(IEnumerable 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('ё', 'е'); }