public static String Imprimir(List <FormaGeometrica> formas, Idioma idioma) { var sb = new StringBuilder(); if (!formas.Any()) { sb.Append(idioma.Traducir("<h1>Lista vacía de formas!</h1>")); } else { sb.Append(idioma.Traducir("<h1>Reporte de Formas</h1>")); var gruposDeFormas = formas.GroupBy(x => x.GetType().Name); decimal totalPerimetros = 0; decimal totalAreas = 0; foreach (IEnumerable <FormaGeometrica> grupo in gruposDeFormas) { decimal area = ObtenerAreas(grupo); decimal perimetro = ObtenerPerimetros(grupo); sb.Append(ObtenerLinea(idioma, grupo, perimetro, area)); totalAreas = totalAreas + area; totalPerimetros = totalPerimetros + perimetro; } sb.Append(idioma.Traducir("TOTAL:<br/>")); sb.Append($"{formas.Count} {idioma.Traducir("formas")} "); sb.Append($"{idioma.Traducir("Perimetro")} {totalPerimetros.ToString("#.##")} "); sb.Append($"{idioma.Traducir("Area")} {totalAreas.ToString("#.##")}"); } return(sb.ToString()); }
private static string ObtenerLinea(Idioma idioma, IEnumerable <FormaGeometrica> listaDeFormas, decimal perimetro, decimal area) { string nombreDeLaFigura = listaDeFormas.Count() == 1 ? idioma.Traducir(listaDeFormas.First().Nombre()): idioma.Traducir(listaDeFormas.First().NombrePlural()); return($"{listaDeFormas.Count()} {nombreDeLaFigura} | {idioma.Traducir("Area")} {area:#.##} | {idioma.Traducir("Perimetro")} {perimetro:#.##} <br/>"); }