Creado apartir del commit b888de6c92056de294456f581a56e25e734d4ab7 de develop
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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<string> 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<string> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user