Creado apartir del commit b888de6c92056de294456f581a56e25e734d4ab7 de develop
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
using adas_core.Domain.Models.MongoModels;
|
||||
|
||||
namespace adas_core.Domain.Utils;
|
||||
|
||||
public static class DetailConfigExtension
|
||||
{
|
||||
// Método principal para iniciar la extracción
|
||||
public static List<string> GetAllObservationNames(this CardDetailsConfig config)
|
||||
{
|
||||
if (config.NurseRows == null) return [];
|
||||
|
||||
// Se usa el método auxiliar para recorrer todas las RowDetailsConfig
|
||||
var observationNames = ExtractNamesFromRows(config.NurseRows)
|
||||
.Distinct() // Opcional: para nombres únicos
|
||||
.ToList();
|
||||
|
||||
return observationNames;
|
||||
}
|
||||
|
||||
// --- Auxiliar 1: Recorre la anidación de Filas (RowDetailsConfig) ---
|
||||
private static IEnumerable<string> ExtractNamesFromRows(List<RowDetailsConfig> rows)
|
||||
{
|
||||
foreach (var row in rows)
|
||||
{
|
||||
// 1. EXTRAER de las CELDAS (Cells)
|
||||
if (row.Cells != null)
|
||||
// Usar SelectMany para aplanar los resultados del método recursivo de Celdas
|
||||
foreach (var name in row.Cells.SelectMany(ExtractNamesFromCells))
|
||||
yield return name;
|
||||
|
||||
// 2. EXTRAER de las FILAS ANIDADAS (Rows)
|
||||
if (row.Rows != null)
|
||||
// Llamada recursiva: Volver a este mismo método para procesar las filas anidadas
|
||||
foreach (var name in ExtractNamesFromRows(row.Rows))
|
||||
yield return name;
|
||||
}
|
||||
}
|
||||
|
||||
// --- Auxiliar 2: Recorre la anidación de Celdas (CellDetails) ---
|
||||
private static IEnumerable<string> ExtractNamesFromCells(CellDetails cell)
|
||||
{
|
||||
// 1. EXTRAER nombres del nivel actual
|
||||
if (cell.ObservationName != null)
|
||||
foreach (var name in cell.ObservationName)
|
||||
yield return name;
|
||||
|
||||
// 2. EXTRAER de las CELDAS ANIDADAS (Cells)
|
||||
if (cell.Cells != null)
|
||||
// Llamada recursiva: Volver a este mismo método para procesar las celdas anidadas
|
||||
foreach (var name in cell.Cells.SelectMany(ExtractNamesFromCells))
|
||||
yield return name;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user