示例#1
0
 //Constructor
 public Producto(string C, string D, int Depto, int Like, PrecioFecha precio)
 {
     Codigo       = C;
     Descripcion  = D;
     Departamento = Depto;
     Likes        = Like;
     PrecioYFecha = precio;
 }
示例#2
0
        static void Main(string[] args)
        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Errores Conocidos:\n" + "En la opción 1 al capturar la fecha, no es del todo posible capturar fechas incorrectas\n" +
                              "Además, en la misma opción, a la hora de guardar en un archivo, por alguna razón se escriben 233 artículos habiendo solo 43.\n" +
                              "En la opción 2, se imprimen todos los productos, los que significa que se repiten por el cambio de fecha en el mismo archivo. \n" +
                              "En la opción 3, se imprime las excepciones junto a los productos bien ordenados.");
            Console.WriteLine("La excepción general de escribir una fecha fuera de rango hace que se imprima la excepción el número de veces\n " +
                              "que productos hay en el propio archivo (43 veces).");
            //Lista con productos inicializados con precio y fecha
            List <Producto> productos = new List <Producto>();

            productos.Clear();

            /*productos.Add(new Producto("TELEGALM31", "Samsumg Galaxy", 2, 350000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 8000)));
             * productos.Add(new Producto("TELEGALM11", "Samsumg Galaxy", 2, 375000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 3700)));
             * productos.Add(new Producto("TELEGALA01", "Samsumg Galaxy", 2, 400000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 2400)));
             * productos.Add(new Producto("TELEGAS20U", "Samsumg Galaxy", 1, 1550000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 30000)));
             * productos.Add(new Producto("TELEGALS20", "Samsumg Galaxy", 1, 1250000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 20000)));
             * productos.Add(new Producto("TELEGAS20P", "Samsumg Galaxy", 1, 1375000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 26000)));
             * productos.Add(new Producto("TELEGALXZF", "Samsumg Galaxy", 1, 405000, new PrecioFecha(new DateTime(2019,06,01), new DateTime(2019,12,31), 28000)));*/
            try {
                productos = ProductoDB.ReadFromTXT(@".\Productos.txt"); //Archivo previamente creado en carpeta raíz del archivo .cs del programa
            }
            catch (FormatException e) {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Clear();
                Console.WriteLine("Error en formato de Fecha en el archivo Productos.txt\n" + e);
            }
            catch (IndexOutOfRangeException e) {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Clear();
                Console.WriteLine("Parece que hay una linea en blanco entre artículos de la lista.\n Por favor revise el archivo Productos.txt\n" + e);
            }
            catch (Exception e) {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Clear();
                Console.WriteLine("Lo lamento, ha ocurrido un error desconocido.\n" + e);
            }
            //ProductoDB.EscribeAtxt(@".\Productos.txt", productos); //Archivo en carpeta raíz del programa

            int caso = -1;

            while (caso != 0) //Validación de caso.
            {
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                Console.WriteLine("\nInserte un número según lo que desea hacer");
                Console.WriteLine("\n1 para capturar fecha y buscar precios; \n2 para capturar número de departamento y buscar productos en él." +
                                  "\n3 para ver los productos con más Likes" + "\n0 para Salir");
                try{
                    caso = Int32.Parse(Console.ReadLine());
                }
                catch (FormatException e) {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.Clear();
                    Console.WriteLine("Error en formato de captura, introduzca un número válido.\n" + e);
                }
                DateTime dateValue = new DateTime(); //Declaración "global" de variables

                switch (caso)
                {
                case 0:
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Saliendo del Programa...");
                    Console.WriteLine("Presiona una tecla para continuar");
                    Console.ReadKey();
                    break;

                case 1:
                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.Clear();
                    Console.WriteLine("Precios desde el 01/06/2019 hasta el 01/06/2020");
                    bool fechaCorrecta = false;
                    while (!fechaCorrecta)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Por favor inserte la fecha que busca en formato DD/MM/AAAA");
                        string dateString = Console.ReadLine();
                        fechaCorrecta = DateTime.TryParse(dateString, out dateValue);
                    }
                    if (!fechaCorrecta)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Clear();
                        Console.WriteLine("Introduce una fecha correcta.");
                    }
                    Console.ForegroundColor = ConsoleColor.White;
                    List <Producto> productosFecha = new List <Producto>();
                    productosFecha.Clear();                                             //Se supone que limpia la Lista
                    ProductoDB.EscribeAtxt(@".\ProductosconFecha.txt", productosFecha); //Creando
                    foreach (Producto p in productos)
                    {
                        if (PrecioFecha.GetPrecio(p, dateValue) != null)                                 //Validación de los productos
                        {
                            productosFecha.Add(p);
                            Console.WriteLine("Producto:{0}. Tiene {1} Likes y cuesta ${2} MXN", p.Descripcion, p.Likes, p.PrecioYFecha.Precio);
                            ProductoDB.EscribeAtxt(@".\ProductosconFecha.txt", productosFecha);//Sobreescribiendo
                        }
                    }
                    break;

                case 2:
                    //Captura de departamento
                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.Clear();
                    Console.WriteLine("Inserte el número de departamento que desea buscar: ");
                    int             depabuscado = Int32.Parse(Console.ReadLine());
                    List <Producto> resultado   = Producto.GetDepartamento(depabuscado, productos);
                    if (resultado.Count() != 0)     //Validando si el departamento existe buscando con el método Count() si regresan valores
                    {
                        Console.WriteLine("Lista de Productos en el Departamento: " + depabuscado);
                        foreach (Producto p in resultado)
                        {
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.WriteLine("Producto:{0}. Tiene {1} Likes. y cuesta ${2} MXN", p.Descripcion, p.Likes, p.PrecioYFecha.Precio);
                        }
                    }
                    else
                    {
                        Console.BackgroundColor = ConsoleColor.Black;
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Clear();
                        Console.WriteLine("\nUn error ha ocurrido, revise que escribió bien el departamento en número");
                        Console.WriteLine("O si ha escrito un departamento existente [1-3]");
                    }
                    break;

                case 3:
                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.WriteLine("Precios desde el 01/06/2019 hasta el 01/06/2020");
                    Console.WriteLine("Se usará la fecha actual para la consulta.\n");
                    DateTime dateValue2 = DateTime.Today;     //Capturando fecha de hoy

                    //lista donde se ordenan los Likes de mayor a menor
                    List <Producto> productosFecha2 = new List <Producto>();
                    productosFecha2.Clear();
                    foreach (Producto p in productos)
                    {
                        if (PrecioFecha.GetPrecio(p, dateValue2) != null)                                 //Validación de los productos
                        {
                            productosFecha2.Add(p);
                        }
                    }
                    productosFecha2 = productosFecha2.OrderByDescending(p => p.Likes).ToList();     //Ordenando por Likes

                    Console.WriteLine("Productos con más Likes ordenados de mayor a menor: ");
                    foreach (Producto p in productosFecha2)
                    {
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine("Producto:{0}. Tiene {1} Likes y cuesta ${2} MXN", p.Descripcion, p.Likes, p.PrecioYFecha.Precio);
                    }
                    break;

                default:
                    Console.BackgroundColor = ConsoleColor.Black;

                    Console.Clear();
                    Console.WriteLine("Inserte un número de caso válido. (1, 2, 3 o 0 para salir).");
                    break;
                } //Fin del Switch
            }
        }