public string Venta_Producto(Clientes ClienteX, Cajeros CajeroX, List <Productos> Productos, int CantidadProductos, List <string> ActualSTOCK)
        {
            //Registrar todo de la compra (Nombre Cliente, Nombre Cajero, Lista Productos, Fecha y Hora)
            int TotalPrecio = 0;

            InfoBoleta += "Fecha de la compra: " + DateTime.Now + "\n";
            InfoBoleta += "Cliente: " + ClienteX.NombreCliente() + "\n";
            InfoBoleta += "Atendido por el Cajero: " + CajeroX.NombreCajero() + "\n";

            for (int Cont1 = 0; Cont1 < CantidadProductos; Cont1++)
            {
                Random random = new Random();
                int    X      = random.Next(0, Productos.Count - 1);
                if (ActualSTOCK[X] == "0")
                {
                    InfoBoleta += "No se puedo realizar la compra porque no hay stock suficiente del producto: " + Productos[X].SacarNombre();
                    return(InfoBoleta);
                }
                InfoBoleta += Productos[X].PYPYM() + "\n";
                int Stock = Int32.Parse(ActualSTOCK[X]) - 1;
                ActualSTOCK[X] = Stock.ToString();
                TotalPrecio   += Productos[X].SacarPrecio();
            }

            InfoBoleta += "Total a Pagar: $" + TotalPrecio.ToString() + "\n";
            InfoBoleta += "Paga con: " + ClienteX.MetodoPago() + "\n";
            InfoBoleta += "-----------------------------------------" + "\n";
            return(InfoBoleta);
        }
        public static void Main(string[] args)
        {
            //Menu
            string Bienvenida           = "Bienvenido al SuperMercado interactivo $Jacobo&Mas Distribuidores S.A.";
            string ChamulloSimula       = "Recuerda que si no desesas interactuar puedes correr una simulacion!";
            string Interaccion1         = "Elija la opcion que mas le guste y recuerde, disfrute su experiencia!";
            string Interaccion2         = "De estas personas cuales deseas crear?";
            string Interaccion3         = "De estos empleados cuales deseas crear?";
            string CrearPersonas        = " 1) Crear Personas ";
            string CrearProductos       = " 2) Crear Productos ";
            string CrearVenta           = " 3) Realizar una venta";
            string TerminarSuperMercado = " 4) Cerrar y Terminar Supermercado";
            string Simulacion           = " 5) Generar Simulacion";

            string CrearEmpleados = " 1) Crear Empleados";
            string CrearClientes  = " 2) Crear Clientes";

            string CrearJefes        = " 1) Crear Jefes";
            string CrearSupervisores = " 2) Crear Supervisores";
            string CrearCajeros      = " 3) Crear Cajeros";
            string CrearAuxiliares   = " 4) Crear Auxiliares";

            string MenuEx   = Interaccion1 + "\n" + CrearPersonas + "\n" + CrearProductos + "\n" + CrearVenta + "\n" + TerminarSuperMercado + "\n" + Simulacion + "\n";
            string MenuInt1 = Interaccion2 + "\n" + CrearEmpleados + "\n" + CrearClientes + "\n";
            string MenuInt2 = Interaccion3 + "\n" + CrearJefes + "\n" + CrearSupervisores + "\n" + CrearCajeros + "\n" + CrearAuxiliares + "\n";

            //Elementos Interaccion
            Console.WriteLine(Bienvenida);
            Console.WriteLine(ChamulloSimula);
            Empleados           EmpleadosFull       = new Empleados();
            List <Jefes>        GuardarJefes        = new List <Jefes>();
            List <Supervisores> GuardarSupervisores = new List <Supervisores>();
            List <Cajeros>      GuardarCajeros      = new List <Cajeros>();
            List <Auxiliares>   GuardarAuxiliares   = new List <Auxiliares>();
            List <Clientes>     GuardaClientes      = new List <Clientes>();
            List <Productos>    GuardaProductos     = new List <Productos>();
            List <string>       GuardaBoletas       = new List <string>();
            List <string>       ActualizacionStock  = new List <string>();

            //Elementos Simulacion
            List <string> NombresSim = new List <string>()
            {
                "Jacobo", "Juanita", "Jose", "Julieta", "Jana", "Gustavo", "Corina", "Domingo", "Felipe", "Fernando", "Daniel", "Camilo", "Pablo", "Tomas", "Emilio", "Alejandro", "Adriana", "Diego", "Lucas", "Margarita", "Daniela", "Manuel"
            };
            List <string> ApellidosSim = new List <string>()
            {
                "Giraldo", "Rodriguez", "Vasquez", "Colomer", "Montana", "Blanco", "Machado", "Cuadra", "Ruiz", "Palma", "Rodriguez", "Betancourt", "Escobar", "Gil", "Galvis", "Arias", "Mendez", "Pinochet", "Caliri", "Olbertz", "Torres", "Serrano"
            };
            List <string> RutsSim = new List <string>()
            {
                "198007084", "248007087", "265008975", "213007889", "248006677", "226007098", "192507084", "242007587", "257009695", "215004489", "248506607", "212509898", "187687052", "242009007", "246789089", "156798790", "163458760", "178009055", "185009874", "232006457", "213908793", "226008009"
            };
            List <string> FechasSim = new List <string>()
            {
                "10/10/1999", "12/09/1987", "21/09/1997", "26/04/2001", "13/01/1987", "11/11/1964", "17/08/1974", "12/08/2000", "31/01/1995", "28/02/1991", "13/12/1945", "24/12/1998", "31/12/1999", "27/04/1954", "19/05/1968", "10/07/1989", "03/09/1988", "06/02/1977", "21/12/1938", "08/03/2000", "19/05/1966", "20/01/1978"
            };
            List <string> NacionalidadesSim = new List <string>()
            {
                "Colombiana", "Colombiana", "Chilena", "Chilena", "Alemana", "Alemana", "Mexicana", "Mexicana", "Española", "Española", "Canadiense", "Canadiense", "Uruguaya", "Uruguaya", "Argentina", "Argentina", "Panameña", "Panameña", "Cubana", "Cubana", "Brasileña", "Brasileña"
            };
            List <string> HorariosSim = new List <string>()
            {
                "7AM-7PM", "8AM-6PM", "7AM-5PM", "9AM-3PM", "9AM-6PM", "7AM-9PM", "10AM-8PM"
            };
            List <string> NombreProSim = new List <string>()
            {
                "Pasta", "Lentejas", "Carne", "Pollo", "Galletas", "Arroz", "Frutillas", "Lechuga", "Jugo", "Jamon", "Queso", "Yogur", "Leche", "Alfajores", "Bebida", "Pizza", "Chorizo", "Ketchup", "Mostaza", "Salchichas", "Mayonesa", "Pan", "Papas Fritas", "Brownies", "Mentas", "Frijoles", "Cerveza", "Pisco", "Agua", "Camarones"
            };
            List <string> MarcasSim = new List <string>()
            {
                "Jumbo", "Tottus", "Lider", "Artesanal", "Jacobo&Mas", "VeganLabs", "DeTodito", "Rapido&Facil", "100Calidad", "Rikolino"
            };

            List <Empleados>    EmpleadosSIM          = new List <Empleados>();
            List <Clientes>     GuardaClientesSIM     = new List <Clientes>();
            List <Jefes>        GuardaJefesSIM        = new List <Jefes>();
            List <Supervisores> GuardaSupervisoresSIM = new List <Supervisores>();
            List <Cajeros>      GuardaCajerosSIM      = new List <Cajeros>();
            List <Auxiliares>   GuardaAuxiliaresSIM   = new List <Auxiliares>();
            List <Productos>    GuardaProductoSIM     = new List <Productos>();
            List <string>       ActualizacionStockSIM = new List <string>();
            List <string>       GuardaBoletasSIM      = new List <string>();

            while (true)
            {
                Console.WriteLine(MenuEx);
                string SeleccionEx = Console.ReadLine();

                if (SeleccionEx == "1")
                {
                    Console.WriteLine(MenuInt1);
                    string SeleccionInt1 = Console.ReadLine();
                    if (SeleccionInt1 == "1")
                    {
                        Console.WriteLine(MenuInt2);
                        string SeleccionInt2 = Console.ReadLine();
                        Console.WriteLine("Debes ingresar los datos de tus empleados en este formato:");
                        Console.WriteLine("(Nombre/Apellido/RUT/Sueldo/HorarioTrabajo/FechaNacimiento/Nacionalidad)");
                        if (SeleccionInt2 == "1")
                        {
                            Console.WriteLine("Ingresa a continuacion todos los datos de tu Jefe:");
                            string Nombre          = Console.ReadLine();
                            string Apellido        = Console.ReadLine();
                            string RUT             = Console.ReadLine();
                            string Sueldo          = Console.ReadLine();
                            string Horario         = Console.ReadLine();
                            string FechaNacimiento = Console.ReadLine();
                            string Nacionalidad    = Console.ReadLine();

                            Jefes J = new Jefes(Nombre, Apellido, RUT, Int32.Parse(Sueldo), Horario, FechaNacimiento, Nacionalidad);
                            GuardarJefes.Add(J);
                            EmpleadosFull.AgregarEmpleados(J);
                        }
                        if (SeleccionInt2 == "2")
                        {
                            Console.WriteLine("Ingresa a continuacion todos los datos de tu Supervisor:");
                            string Nombre          = Console.ReadLine();
                            string Apellido        = Console.ReadLine();
                            string RUT             = Console.ReadLine();
                            string Sueldo          = Console.ReadLine();
                            string Horario         = Console.ReadLine();
                            string FechaNacimiento = Console.ReadLine();
                            string Nacionalidad    = Console.ReadLine();

                            Supervisores S = new Supervisores(Nombre, Apellido, RUT, Int32.Parse(Sueldo), Horario, FechaNacimiento, Nacionalidad);
                            GuardarSupervisores.Add(S);
                            EmpleadosFull.AgregarEmpleados(S);
                        }
                        if (SeleccionInt2 == "3")
                        {
                            Console.WriteLine("Ingresa a continuacion todos los datos de tu Cajero:");
                            string Nombre          = Console.ReadLine();
                            string Apellido        = Console.ReadLine();
                            string RUT             = Console.ReadLine();
                            string Sueldo          = Console.ReadLine();
                            string Horario         = Console.ReadLine();
                            string FechaNacimiento = Console.ReadLine();
                            string Nacionalidad    = Console.ReadLine();

                            Cajeros C = new Cajeros(Nombre, Apellido, RUT, Int32.Parse(Sueldo), Horario, FechaNacimiento, Nacionalidad);
                            GuardarCajeros.Add(C);
                            EmpleadosFull.AgregarEmpleados(C);
                        }
                        if (SeleccionInt2 == "4")
                        {
                            Console.WriteLine("Ingresa a continuacion todos los datos de tu Auxiliar:");
                            string Nombre          = Console.ReadLine();
                            string Apellido        = Console.ReadLine();
                            string RUT             = Console.ReadLine();
                            string Sueldo          = Console.ReadLine();
                            string Horario         = Console.ReadLine();
                            string FechaNacimiento = Console.ReadLine();
                            string Nacionalidad    = Console.ReadLine();

                            Auxiliares A = new Auxiliares(Nombre, Apellido, RUT, Int32.Parse(Sueldo), Horario, FechaNacimiento, Nacionalidad);
                            GuardarAuxiliares.Add(A);
                            EmpleadosFull.AgregarEmpleados(A);
                        }
                    }
                    if (SeleccionInt1 == "2")
                    {
                        Console.WriteLine("Debes ingresar los datos de tus clientes en este formato:");
                        Console.WriteLine("(Nombre/Apellido/RUT/FechaNacimiento/Nacionalidad)");
                        Console.WriteLine("Ingresa a continuacion todos los datos de tu Cliente:");
                        string Nombre          = Console.ReadLine();
                        string Apellido        = Console.ReadLine();
                        string RUT             = Console.ReadLine();
                        string FechaNacimiento = Console.ReadLine();
                        string Nacionalidad    = Console.ReadLine();

                        Clientes Cliente = new Clientes(Nombre, Apellido, RUT, FechaNacimiento, Nacionalidad);
                        GuardaClientes.Add(Cliente);
                        foreach (Clientes X in GuardaClientes)
                        {
                            Console.WriteLine(X.InfoCliente());
                            Console.WriteLine(X.NombreCliente());
                        }
                    }
                }
                if (SeleccionEx == "2")
                {
                    Console.WriteLine("Debes ingresar los datos de tus productos en este formato:");
                    Console.WriteLine("(NombreProducto/Precio/Marca/Stock)");
                    string NombreProducto = Console.ReadLine();
                    string Precio         = Console.ReadLine();
                    string Marca          = Console.ReadLine();
                    string Stock          = Console.ReadLine();

                    Productos PROX = new Productos(NombreProducto, Int32.Parse(Precio), Marca, Int32.Parse(Stock));
                    GuardaProductos.Add(PROX);
                    ActualizacionStock.Add(PROX.SacarStock());
                }
                if (SeleccionEx == "3")
                {
                    Console.WriteLine("Cuantos prodcutos desea comprar el cliente?");
                    string CantProCompra = Console.ReadLine();
                    Random Number1       = new Random();
                    int    NumCliente    = Number1.Next(0, GuardaClientes.Count);
                    Random Number2       = new Random();
                    int    NumCajero     = Number2.Next(0, GuardarCajeros.Count);

                    Ventas Venta1 = new Ventas();

                    string BoletaSingle = Venta1.Venta_Producto(GuardaClientes[NumCliente], GuardarCajeros[NumCajero], GuardaProductos, int.Parse(CantProCompra), ActualizacionStock);
                    GuardaBoletas.Add(BoletaSingle);
                    Venta1.InfoBoletas(GuardaBoletas);
                }
                if (SeleccionEx == "4")
                {
                    break;
                }
                Random random = new Random();
                if (SeleccionEx == "5")
                {
                    //Clientes
                    for (int Cont = 0; Cont < 15; Cont++)
                    {
                        int      V        = random.Next(0, NombresSim.Count);
                        int      W        = random.Next(0, ApellidosSim.Count);
                        int      X        = random.Next(0, RutsSim.Count);
                        int      Y        = random.Next(0, FechasSim.Count);
                        int      Z        = random.Next(0, NacionalidadesSim.Count);
                        Clientes ClienteX = new Clientes(NombresSim[V], ApellidosSim[W], RutsSim[X], FechasSim[Y], NacionalidadesSim[Z]);
                        GuardaClientesSIM.Add(ClienteX);
                    }
                    //Empleados
                    for (int Cont = 0; Cont < 1; Cont++)
                    {
                        //JEFES
                        int V      = random.Next(0, NombresSim.Count);
                        int W      = random.Next(0, ApellidosSim.Count);
                        int X      = random.Next(0, RutsSim.Count);
                        int Y      = random.Next(0, FechasSim.Count);
                        int Z      = random.Next(0, NacionalidadesSim.Count);
                        int Sueldo = random.Next(1200000, 1500000);
                        int A      = random.Next(0, HorariosSim.Count);

                        Jefes JefeX = new Jefes(NombresSim[V], ApellidosSim[W], RutsSim[X], Sueldo, HorariosSim[A], FechasSim[Y], NacionalidadesSim[Z]);
                        GuardaJefesSIM.Add(JefeX);
                        EmpleadosSIM.Add(JefeX);
                    }
                    for (int Cont = 0; Cont < 1; Cont++)
                    {
                        //SUPERVISORES
                        int V      = random.Next(0, NombresSim.Count);
                        int W      = random.Next(0, ApellidosSim.Count);
                        int X      = random.Next(0, RutsSim.Count);
                        int Y      = random.Next(0, FechasSim.Count);
                        int Z      = random.Next(0, NacionalidadesSim.Count);
                        int Sueldo = random.Next(1000000, 1200000);
                        int A      = random.Next(0, HorariosSim.Count);

                        Supervisores SupervisorX = new Supervisores(NombresSim[V], ApellidosSim[W], RutsSim[X], Sueldo, HorariosSim[A], FechasSim[Y], NacionalidadesSim[Z]);
                        GuardaSupervisoresSIM.Add(SupervisorX);
                        EmpleadosSIM.Add(SupervisorX);
                    }
                    for (int Cont = 0; Cont < 3; Cont++)
                    {
                        //CAJEROS
                        int V      = random.Next(0, NombresSim.Count);
                        int W      = random.Next(0, ApellidosSim.Count);
                        int X      = random.Next(0, RutsSim.Count);
                        int Y      = random.Next(0, FechasSim.Count);
                        int Z      = random.Next(0, NacionalidadesSim.Count);
                        int Sueldo = random.Next(800000, 1000000);
                        int A      = random.Next(0, HorariosSim.Count);

                        Cajeros CajeroX = new Cajeros(NombresSim[V], ApellidosSim[W], RutsSim[X], Sueldo, HorariosSim[A], FechasSim[Y], NacionalidadesSim[Z]);
                        GuardaCajerosSIM.Add(CajeroX);
                        EmpleadosSIM.Add(CajeroX);
                    }
                    for (int Cont = 0; Cont < 2; Cont++)
                    {
                        //AUXILIARES
                        int V      = random.Next(0, NombresSim.Count);
                        int W      = random.Next(0, ApellidosSim.Count);
                        int X      = random.Next(0, RutsSim.Count);
                        int Y      = random.Next(0, FechasSim.Count);
                        int Z      = random.Next(0, NacionalidadesSim.Count);
                        int Sueldo = random.Next(550000, 800000);
                        int A      = random.Next(0, HorariosSim.Count);

                        Auxiliares AuxiliarX = new Auxiliares(NombresSim[V], ApellidosSim[W], RutsSim[X], Sueldo, HorariosSim[A], FechasSim[Y], NacionalidadesSim[Z]);
                        GuardaAuxiliaresSIM.Add(AuxiliarX);
                        EmpleadosSIM.Add(AuxiliarX);
                    }
                    //Productos
                    for (int Cont = 0; Cont < 30; Cont++)
                    {
                        int A      = random.Next(0, NombreProSim.Count);
                        int Precio = random.Next(1000, 5000);
                        int B      = random.Next(0, MarcasSim.Count);
                        int Stock  = random.Next(1, 5);

                        Productos ProductoX = new Productos(NombreProSim[A], Precio, MarcasSim[B], Stock);
                        GuardaProductoSIM.Add(ProductoX);
                        ActualizacionStockSIM.Add(ProductoX.SacarStock());
                    }
                    Console.WriteLine("Los clientes de esta simulacion son: \n");
                    for (int Cont = 0; Cont < GuardaClientesSIM.Count; Cont++)
                    {
                        Console.WriteLine(GuardaClientesSIM[Cont].InfoClienteTotal());
                    }
                    Console.WriteLine("Los empleados de esta simulacion son los siguientes: \n");
                    Console.WriteLine("En orden (1 Jefe, 1 Supervisor, 3 Cajeros, 2 Auxiliares) \n");
                    for (int Cont = 0; Cont < EmpleadosSIM.Count; Cont++)
                    {
                        Console.WriteLine(EmpleadosSIM[Cont].InfoTotal());
                    }
                    Console.WriteLine("Los Productos de esta simulacion son los siguientes: ");
                    for (int i = 0; i < GuardaProductoSIM.Count; i++)
                    {
                        string Inf = GuardaProductoSIM[i].SacarNombre() + "-" + GuardaProductoSIM[i].SacarMarca() + "- Stock: " + ActualizacionStockSIM[i] + "\n";
                        Console.WriteLine(Inf);
                    }
                    // Generar Venta
                    Ventas ventasSIM = new Ventas();
                    for (int i = 0; i < 5; i += 1)
                    {
                        int    NCliente  = random.Next(0, 14);
                        int    NCajero   = random.Next(0, 2);
                        int    NProducto = random.Next(1, 5);
                        string BoletaSIM = ventasSIM.Venta_Producto(GuardaClientesSIM[NCliente], GuardaCajerosSIM[NCajero], GuardaProductoSIM, NProducto, ActualizacionStockSIM);
                        GuardaBoletasSIM.Add(BoletaSIM);
                    }
                    ventasSIM.InfoBoletas(GuardaBoletasSIM);

                    //Ver Stock de productos Actualizado
                    Console.WriteLine("El nuevo stock despues de las compras es: ");
                    for (int i = 0; i < GuardaProductoSIM.Count; i++)
                    {
                        string Inf = GuardaProductoSIM[i].SacarNombre() + "-" + GuardaProductoSIM[i].SacarMarca() + "- Stock: " + ActualizacionStockSIM[i] + "\n";
                        Console.WriteLine(Inf);
                    }
                }
            }
        }