Exemplo n.º 1
0
        public static string Imprimir(List <FormaGeometrica> formas, int idioma)
        {
            var sb = new StringBuilder();
            //Instancié factoria de idioma
            FactoriaIdioma factoriaI = new FactoriaIdioma();
            //Ejecuto el método crear idioma, que según el parámetro de la funcion me busca a que
            //valor del enum pertenece
            Idioma idiomaFinal = factoriaI.crearIdioma(idioma);

            if (!formas.Any())
            {
                sb.Append("<h1>" + idiomaFinal.msjSinRegistros() + "</h1>");
            }
            else
            {
                sb.Append("<h1>" + idiomaFinal.mostrarHeader() + "</h1>");


                FactoriaForma factoriaF     = new FactoriaForma();
                List <Forma>  listaDeFormas = new List <Forma>();
                Forma         unaForma;
                //Agrupo las formas para después poder ir concatenando POR forma.
                var formasAgrupadas = formas.GroupBy(x => x.Tipo).Where(g => g.Count() > 0).Select(y => y).ToList();
                for (var i = 0; i < formasAgrupadas.Count; i++)
                {
                    //Uso el metodo de la factoria para instanciar el objeto que sea según la Key
                    unaForma = factoriaF.crearForma(formasAgrupadas[i].Key);
                    unaForma.incrementarCantidad();
                    unaForma.cantidadForma = formasAgrupadas[i].Count();
                    //Sumo todas las areas adentro de cada listado agrupado
                    unaForma.areaTotal = formasAgrupadas[i].Sum(unElem => unaForma.area(unElem._lado));
                    //Sumo todas los perímetros adentro de cada listado agrupado
                    unaForma.perimetroTotal = formasAgrupadas[i].Sum(unElem => unaForma.perimetro(unElem._lado));
                    listaDeFormas.Add(unaForma);
                    sb.Append(ObtenerLinea(unaForma, idiomaFinal));
                }



                // FOOTER
                sb.Append("TOTAL:<br/>");
                sb.Append(listaDeFormas.Sum(unaF => unaF.cantidadForma) + " " + (idiomaFinal.formaTraducido()) + " ");
                sb.Append((idiomaFinal.perimetroTraducido()) + (listaDeFormas.Sum(unaF => unaF.perimetroTotal)).ToString("#.##") + " ");
                sb.Append("Area " + (listaDeFormas.Sum(unaF => unaF.areaTotal)).ToString("#.##"));
            }

            return(sb.ToString());
        }