public static string Imprimir(List <IFormaGeometrica> formas, EnumIdiomas idioma) { var sb = new StringBuilder(); Traductor traductor = new Traductor(); if (formas.Count == 0) { sb.Append("<h1>" + traductor.Traducir(idioma, "Sin_Formas") + "</h1>"); } else { sb.Append("<h1>" + traductor.Traducir(idioma, "Inicio_Reporte") + " </h1>"); bool esPlural = formas.Count > 1; //Body Dictionary <EnumFormas, Contador> DiccionarioContador = LlenarDiccionario(formas); bool hayMasDeUno; foreach (EnumFormas item in DiccionarioContador.Keys.ToList()) { hayMasDeUno = DiccionarioContador[item].NumeroFormas > 1; string formaKey = formas.First(x => x.Tipo == item).obtenerKey(hayMasDeUno); sb.Append($"{DiccionarioContador[item].NumeroFormas} {traductor.Traducir(idioma, formaKey)} | " + traductor.Traducir(idioma, "Area_Key") + $" {DiccionarioContador[item].TotalArea:#.##} | " + traductor.Traducir(idioma, "Perimetro_Key") + $" {DiccionarioContador[item].TotalSuperficie:#.##} <br/>"); } //footer sb.Append(traductor.Traducir(idioma, "Total_Key").ToUpper() + ":<br/>"); sb.Append(formas.Count().ToString() + " " + traductor.Traducir(idioma, "Formas_Key") + " "); sb.Append(traductor.Traducir(idioma, "Perimetro_Key") + " " + DiccionarioContador.Values.Sum(x => x.TotalSuperficie).ToString("#.##") + " "); sb.Append(traductor.Traducir(idioma, "Area_Key") + " " + DiccionarioContador.Values.Sum(x => x.TotalArea).ToString("#.##")); } return(sb.ToString()); }
private static string TraducirForma(string figura, int cantidad, Traductor traductor) { switch (figura) { case "Cuadrado": return(cantidad == 1 ? traductor.getDescCuadrado() : traductor.getDescCuadradoPlural()); case "Circulo": return(cantidad == 1 ? traductor.getDescCirculo() : traductor.getDescCirculoPlural()); case "Triangulo": return(cantidad == 1 ? traductor.getDescTriangulo() : traductor.getDescTrianguloPlural()); case "Trapecio": return(cantidad == 1 ? traductor.getDescTrapecio() : traductor.getDescTrapecioPlural()); case "Rectangulo": return(cantidad == 1 ? traductor.getDescRectangulo() : traductor.getDescRectangulosPlural()); } return(string.Empty); }
public static string Imprimir(List <IFormaGeometrica> formas, IdiomaEnum idioma) { var sb = new StringBuilder(); if (!formas.Any()) { if (idioma == IdiomaEnum.Castellano) { sb.Append("<h1>Lista vacía de formas!</h1>"); } else { sb.Append("<h1>Empty list of shapes!</h1>"); } } else { sb.Append(Traductor.traducirEncabezado(idioma)); var listaFiguras = Enum.GetValues(typeof(FormaGeometricaEnum)).Cast <FormaGeometricaEnum>(); var resultadoTotal = new Resultado(); resultadoTotal.Idioma = idioma; foreach (var figura in listaFiguras) { var resultado = calcularSegunTipo(formas, figura); resultado.Idioma = idioma; sb.Append(Idiomas.traducirLinea(resultado)); resultadoTotal.Cantidad += resultado.Cantidad; resultadoTotal.PerimetroTotal += resultado.PerimetroTotal; resultadoTotal.AreaTotal += resultado.AreaTotal; } // FOOTER sb.Append(Traductor.traducirFooter(resultadoTotal)); } return(sb.ToString()); }
public string Imprimir(List <Figura> listaFiguras, string idioma) { Traductor traductor = new Traductor(idioma); var sb = new StringBuilder(); foreach (Figura figura in listaFiguras) { CrearFigura(figura); } int cantCuadrados = listaCuadrados != null ? listaCuadrados.Count : 0; int cantCirculos = listaCirculos != null ? listaCirculos.Count : 0; int cantTriangulos = listaTriangulos != null ? listaTriangulos.Count : 0; int cantTrapecios = listaTrapecios != null ? listaTrapecios.Count : 0; int cantRectangulos = listaRectangulos != null ? listaRectangulos.Count : 0; int cantFiguras = cantCuadrados + cantCirculos + cantTriangulos + cantTrapecios + cantRectangulos; if (cantFiguras == 0) { sb.Append("<h1>" + traductor.getDescListaVacia() + "</h1>"); } else { sb.Append("<h1>" + traductor.getDescReporte() + "</h1>"); decimal areaCuadrados = 0; decimal areaCirculos = 0; decimal areaTriangulos = 0; decimal areaTrapecios = 0; decimal areaRectangulos = 0; decimal areaTotal = 0; decimal perimetroCuadrados = 0; decimal perimetroCirculos = 0; decimal perimetroTriangulos = 0; decimal perimetroTrapecios = 0; decimal perimetroRectangulos = 0; decimal perimTotal = 0; if (cantCuadrados != 0) { areaCuadrados = listaCuadrados.Sum(x => x.Area()); perimetroCuadrados = listaCuadrados.Sum(x => x.Perimetro()); } if (cantCirculos != 0) { areaCirculos = listaCirculos.Sum(x => x.Area()); perimetroCirculos = listaCirculos.Sum(x => x.Perimetro()); } if (cantTriangulos != 0) { areaTriangulos = listaTriangulos.Sum(x => x.Area()); perimetroTriangulos = listaTriangulos.Sum(x => x.Perimetro()); } if (cantTrapecios != 0) { areaTrapecios = listaTrapecios.Sum(x => x.Area()); perimetroTrapecios = listaTrapecios.Sum(x => x.Perimetro()); } if (cantRectangulos != 0) { areaRectangulos = listaRectangulos.Sum(x => x.Area()); perimetroRectangulos = listaRectangulos.Sum(x => x.Perimetro()); } areaTotal = areaCuadrados + areaCirculos + areaRectangulos + areaTrapecios + areaTriangulos; perimTotal = perimetroCuadrados + perimetroCirculos + perimetroTriangulos + perimetroTrapecios + perimetroRectangulos; sb.Append(ObtenerLinea(cantCuadrados, areaCuadrados, perimetroCuadrados, "Cuadrado", traductor)); sb.Append(ObtenerLinea(cantCirculos, areaCirculos, perimetroCirculos, "Circulo", traductor)); sb.Append(ObtenerLinea(cantTriangulos, areaTriangulos, perimetroTriangulos, "Triangulo", traductor)); sb.Append(ObtenerLinea(cantTrapecios, areaTrapecios, perimetroTrapecios, "Trapecio", traductor)); sb.Append(ObtenerLinea(cantRectangulos, areaRectangulos, perimetroRectangulos, "Rectangulo", traductor)); // FOOTER sb.Append("TOTAL:<br/>"); sb.Append(cantFiguras + " " + (cantFiguras > 1 ? traductor.getDescFormasPlural() : traductor.getDescForma()) + " "); sb.Append((traductor.getDescPerimetro()) + " " + (perimTotal).ToString("#.##") + " "); sb.Append(traductor.getDescArea() + " " + (areaTotal).ToString("#.##")); } return(sb.ToString()); }
private static string ObtenerLinea(int cantidad, decimal area, decimal perimetro, string figura, Traductor traductor) { if (cantidad > 0) { return($"{cantidad} {TraducirForma(figura, cantidad, traductor)} | {traductor.getDescArea()} {area:#.##} | {traductor.getDescPerimetro()} {perimetro:#.##} <br/>"); } return(string.Empty); }
/// <summary> /// Genera un reporte de formas en el idioma especificado /// </summary> /// <param name="formas">Lista de formas</param> /// <param name="idioma">Idioma</param> /// <returns></returns> public static string Imprimir(List <FormaGeometrica> formas, Idioma idioma) { StringBuilder sb = new StringBuilder(); string codigoIdioma = ObtenerCodigoIdioma(idioma); List <FormaModel> datosDeFormasEnLista = new List <FormaModel>(); Dictionary <string, int> cantidadDeFormas = new Dictionary <string, int>(); try { //No hay formas if (!formas.Any()) { return(string.Format("<h1>{0}</h1>", Traductor.Traducir("Lista vacía de formas!", codigoIdioma))); } //Hay al menos una forma sb.Append(string.Format("<h1>{0}</h1>", Traductor.Traducir("Reporte de Formas", codigoIdioma))); foreach (IForma forma in formas) { //Obtengo el dato de una forma y lo guardo en un modelo FormaModel unaForma = new FormaModel(); unaForma.TipoForma = forma.GetType().Name; //Nombre unaForma.Perimetro = forma.ObtenerPerimetro; //Perímetro unaForma.Area = forma.ObtenerArea; //Área //Busco el índice de la forma en la lista por tipo int index = datosDeFormasEnLista.FindIndex(a => a.TipoForma == unaForma.TipoForma); //Si existe, sumo su perimetro y area para obtener el total de ese tipo de forma if (index > -1) { datosDeFormasEnLista[index].Perimetro += unaForma.Perimetro; datosDeFormasEnLista[index].Area += unaForma.Area; } //Sino, la agrego a la lista else { datosDeFormasEnLista.Add(unaForma); } //Verifico si la key con el tipo de forma no exista y la agrego. if (!cantidadDeFormas.ContainsKey(unaForma.TipoForma)) { cantidadDeFormas.Add(unaForma.TipoForma, 1); } //Si existe, sumo uno en esa key (+1 forma) else { cantidadDeFormas[unaForma.TipoForma] += 1; } } //Armo el detalle del reporte foreach (FormaModel forma in datosDeFormasEnLista) { sb.Append( string.Format("{0} {1} | {2}: {3} | {4}: {5} |<br/>", cantidadDeFormas[forma.TipoForma], cantidadDeFormas[forma.TipoForma] > 1 ? Traductor.Traducir(forma.TipoForma + "s", codigoIdioma) : Traductor.Traducir(forma.TipoForma, codigoIdioma), Traductor.Traducir("Perímetro", codigoIdioma), forma.Perimetro.ToString("#.##"), Traductor.Traducir("Área", codigoIdioma), forma.Area.ToString("#.##") ) ); } // FOOTER sb.Append(string.Format("{0} :<br/>", Traductor.Traducir("total", codigoIdioma).ToUpper())); sb.Append( string.Format("{0} {1}", cantidadDeFormas.Sum(x => x.Value), cantidadDeFormas.Sum(x => x.Value) > 1 ? Traductor.Traducir("Formas", codigoIdioma) : Traductor.Traducir("Forma", codigoIdioma) ) ); sb.Append(Traductor.Traducir(" Perímetro", codigoIdioma) + ": " + formas.Where(x => x is IForma).Sum(x => ((IForma)x).ObtenerPerimetro).ToString("#.##")); sb.Append(Traductor.Traducir(" Área", codigoIdioma) + ": " + formas.Where(x => x is IForma).Sum(x => ((IForma)x).ObtenerArea).ToString("#.##")); return(sb.ToString()); } catch (Exception e) { throw e; } }