using adas_core.Domain.Models.MongoModels; namespace adas_core.Domain.Utils; public static class CardConfigExtensions { // Método principal para extraer todos los nombres public static List GetAllObservationNames(this CardConfig config) { if (config.Rows == null) return []; // 1. Usar SelectMany para aplanar la lista de Rows a una lista de Cells. var allCells = config.Rows.Where(r => r.Cells != null) .SelectMany(r => r.Cells!); // 2. Usar SelectMany y el método recursivo para obtener todos los nombres de todas las Cells. var observationNames = allCells.SelectMany(ExtractObservationNames) .Distinct() // Opcional: para asegurar que los nombres sean únicos .ToList(); return observationNames; } // Método auxiliar RECURSIVO para extraer nombres de una Cell y sus SubObs private static IEnumerable ExtractObservationNames(Cell cell) { // 1. Si la Cell tiene ObservationName, devolver esos nombres. if (cell.ObservationName != null) // Retornar los elementos de la lista ObservationName foreach (var name in cell.ObservationName) yield return name; // 2. Si la Cell tiene SubObs, llamar recursivamente al método para cada SubObs. if (cell.SubObs == null) yield break; { foreach (var name in cell.SubObs.SelectMany(ExtractObservationNames)) yield return name; } } }