Пример #1
0
        public static string Imprimir(List <FormaGeometrica> listFormas, Idioma idioma)
        {
            var reporte = new StringBuilder();

            if (listFormas.Any())
            {
                int totalFormas = 0;

                reporte.Append("<h1>" + idioma.ImprimirEncabezado() + "<h1>");

                foreach (FormaGeometrica formaGeometrica in listFormas)
                {
                    formaGeometrica.AsignarNombresAForma(idioma);
                    totalFormas++;
                }

                var r = listFormas.GroupBy(t => t.tipo)
                        .Select(t => new
                {
                    FormaGeo     = t.Key,
                    Count        = t.Count(),
                    Area         = t.Sum(ta => ta.area),
                    Perimetro    = t.Sum(ta => ta.perimetro),
                    NombreSing   = t.First().nombreFormaSingular,
                    NombrePlural = t.First().nombreFormaPlural
                }).ToList();

                r.ForEach(row => reporte.Append($"{row.Count} {(row.Count > 1 ? row.NombrePlural : row.NombreSing) } | {idioma.ImprimirTituloArea()} {row.Area:#.##} | {idioma.ImprimirTituloPerimetro()} {row.Perimetro:#.##} <br/>"));

                reporte.Append($"{idioma.ImprimirTituloTotal()} : {totalFormas}  {idioma.ImprimirTituloForma(totalFormas)} | {idioma.ImprimirTituloArea()} {listFormas.Sum(d => d.area):#.##} | {idioma.ImprimirTituloPerimetro()} {listFormas.Sum(d => d.perimetro):#.##}");
            }
            else
            {
                reporte.Append("<h1>" + idioma.ImprimirEncabezadoVacio() + "<h1>");
            }

            return(reporte.ToString());
        }