namespace TeamCity.Docker { using System; using System.Collections.Generic; using System.Linq; using Generic; using Model; // ReSharper disable once ClassNeverInstantiated.Global internal class NodesNameFactory: IFactory>> { public Result Create(IEnumerable> nodes) { var descriptions = nodes.Select(i => i.Value) .OfType() .Select(i => new NodesDescription($"{i.File.Platform} {i.File.Description}".Trim(), i.File.Platform, i.File.Description)) .Where(i => !string.IsNullOrWhiteSpace(i.Name)) .GroupBy(i => i, s => s, (s, enumerable) => Tuple.Create(s, enumerable.Count())) .OrderByDescending(i => i.Item2) .Select(i => i.Item1) .ToList(); return descriptions.Any() ? new Result(descriptions.First()) : new Result(default(NodesDescription), Result.Error); } } }