static void Main(string[] args)
        {
            //DateTime localdate = DateTime.Now;
            List <Client> listofclients = new List <Client>()
            {
                new Client("Diego", "Gonzalez", "28/02/2000", "Chileno", 500000, "12954851-7")
            };
            List <Employee> listofemployees = new List <Employee>()
            {
                new Employee("Pedro", "lopez", "01/05/1992", "Colombiano", 0, "12345678-k", 200000, "7:00 a 15:00", "cajero")
            };
            List <Product> listofproducts = new List <Product>()
            {
                new Product("Coca cola", 1000, "coca-cola company", 100)
            };
            List <Boleta>     listofchecks = new List <Boleta>();
            List <Supervisor> supervisors  = new List <Supervisor>()
            {
                new Supervisor("Juan", "Perez", "05/01/1993", "Venezolano", 10, "12345678-9", 320000, "7:00 a 15:00", "Supervisor fiambreria")
            };


            //El Supermercado no funciona de no haber al menos 1 empleado con el trabajo cajero o Cajero
            //Añadir productos es exclusivo de el menu del supervisor



            string Default_Stopper = "5";
            string Client_Stoper   = "7";

            Console.WriteLine("Bienvenido al supermercado porfavor eliga una opcion:");
            string stopper = "0";

            while (stopper != Default_Stopper)
            {
                Console.WriteLine("\n(1)Añadir cliente a la base de datos\n(2)Ingresar como cliente\n(3)Añadir empleado a la base de datos\n" +
                                  "(4)Ingresar como supervisor \n(5)Salir del programa\n");
                stopper = Console.ReadLine();
                switch (stopper)
                {
                case "1":    //agregar cliente Done
                    Console.WriteLine("Ingrese el rut con el siguiente formato: 12345678-9");
                    string rut = Console.ReadLine();
                    Console.WriteLine("Ingrese el nombre: ");
                    string name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido: ");
                    string lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese fecha de nacimiento en el siguiente formato: 00/00/0000");
                    string birthday = Console.ReadLine();
                    Console.WriteLine("Ingrese Nacionalidad: ");
                    string nacionality = Console.ReadLine();
                    string auxcliente  = "0";
                    int    money       = 0;
                    while (auxcliente != "1")
                    {
                        Console.WriteLine("Ingrese dinero disponible: ");
                        string moneystring = Console.ReadLine();
                        if (int.TryParse(moneystring, out money))
                        {
                            money      = Convert.ToInt32(moneystring);
                            auxcliente = "1";
                            break;
                        }
                        else
                        {
                            Console.WriteLine("Ingrese un numero valido\n");
                        }
                    }
                    Client client = new Client(name, lastname, birthday, nacionality, money, rut);
                    listofclients.Add(client);
                    break;

                case "2":    //Ingresar como cliente Done
                    bool fixer = false;
                    if (listofclients.Count() == 0)
                    {
                        Console.WriteLine("No existen clientes en la base de datos");
                    }
                    else
                    {
                        Console.WriteLine("Ingrese el rut con el siguiente formato: 12345678-9\n");
                        string rutclient = Console.ReadLine();
                        foreach (Client cliente in listofclients)
                        {
                            if (cliente.ReturnRut() == rutclient)
                            {
                                fixer = true;   //debugger
                                string clientstopper = "0";
                                while (Client_Stoper != clientstopper)
                                {
                                    Console.WriteLine("\n(1)Agregar producto al carro\n(2)Consultar Precio \n(3)Consultar stock\n(4)Finalizar compra\n(5)Revisar carro\n(6)Revisar Dinero\n(7)Volver al menu\n");
                                    clientstopper = Console.ReadLine();
                                    switch (clientstopper)
                                    {
                                    case "1":        //d
                                        bool fixer1 = false;
                                        Console.WriteLine("Ingrese el nombre del producto:");
                                        string productname = Console.ReadLine();
                                        if (listofproducts.Count != 0)
                                        {
                                            foreach (Product product in listofproducts)
                                            {
                                                if (product.GetName() == productname)
                                                {
                                                    fixer1 = true;
                                                    cliente.AddToCart(product);
                                                }
                                                break;
                                            }
                                            if (fixer1)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No se encontro el producto, intente nuevamente");
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            Console.WriteLine("No existen productos en este momento");
                                            break;
                                        }

                                    case "2":        //d
                                        bool fixer3 = false;
                                        Console.WriteLine("Ingrese el nombre del producto:");
                                        string productnameprice = Console.ReadLine();
                                        if (listofproducts.Count() != 0)
                                        {
                                            foreach (Product product in listofproducts)
                                            {
                                                if (product.GetName() == productnameprice)
                                                {
                                                    fixer3 = true;
                                                    Console.WriteLine(cliente.PriceCheck(product) + "\n");
                                                }
                                            }
                                            if (fixer3)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No se encontro el producto, intente nuevamente");
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            Console.WriteLine("No hay productos para consultar");
                                            break;
                                        }

                                    case "3":        //d
                                        bool fixer4 = false;
                                        Console.WriteLine("Ingrese el nombre del producto:");
                                        string productnamestock = Console.ReadLine();
                                        if (listofproducts.Count() != 0)
                                        {
                                            foreach (Product product in listofproducts)
                                            {
                                                if (product.GetName() == productnamestock)
                                                {
                                                    fixer4 = true;
                                                    Console.WriteLine(cliente.StockCheck(product) + "\n");
                                                }
                                            }
                                            if (fixer4)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No se encontro el producto, intente nuevamente");
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            Console.WriteLine("No hay productos para consultar");
                                            break;
                                        }

                                    case "4":        //d
                                        bool fixer5 = false;
                                        if (listofemployees.Count() != 0)
                                        {
                                            foreach (Employee employee in listofemployees)
                                            {
                                                if (employee.ReturnJob() == "Cajero" || employee.ReturnJob() == "cajero")
                                                {
                                                    fixer5 = true;
                                                    if (cliente.ReturnCart().Count != 0)
                                                    {
                                                        Boleta boleta = new Boleta(employee, cliente, cliente.ReturnCart(), (DateTime.Now.ToString("MM/dd/yyyy")));
                                                        listofchecks.Add(boleta);
                                                        cliente.Buy();
                                                        break;
                                                    }
                                                    else
                                                    {
                                                        Console.WriteLine("El carro esta vacio");
                                                        break;
                                                    }
                                                }
                                            }
                                            if (fixer5)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No hay empleados con el puesto cajero asignado");
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            Console.WriteLine("No hay empleados para atender como cajero");
                                            break;
                                        }

                                    case "5":
                                        cliente.Checkcart();
                                        break;

                                    case "6":
                                        cliente.CheckMoney();
                                        break;

                                    case "7":
                                        break;

                                    default:
                                        Console.WriteLine("Ingrese una opcion valida");
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                        if (fixer)     //debugger
                        {
                            break;
                        }
                        else
                        {
                            Console.WriteLine("No se encontro el cliente en la base de datos, intente nuevamente\n");
                            break;
                        }
                    }
                    break;

                case "3":    //añadir empleado Done
                    Console.WriteLine("(1)Añadir empleado\n(2)Añadir Supervisor");
                    string suporemp = Console.ReadLine();
                    if (suporemp == "1")
                    {
                        Console.WriteLine("Ingrese el rut con el siguiente formato: 12345678-9");
                        string rutE = Console.ReadLine();
                        Console.WriteLine("Ingrese el nombre: ");
                        string nameE = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido: ");
                        string lastnameE = Console.ReadLine();
                        Console.WriteLine("Ingrese fecha de nacimiento en el siguiente formato: 00/00/0000");
                        string birthdayE = Console.ReadLine();
                        Console.WriteLine("Ingrese Nacionalidad: ");
                        string nacionalityE = Console.ReadLine();
                        string auxm         = "0";
                        int    moneyE       = 0;
                        while (auxm != "1")
                        {
                            Console.WriteLine("Ingrese dinero disponible: ");
                            string moneystring = Console.ReadLine();
                            if (int.TryParse(moneystring, out moneyE))
                            {
                                moneyE = Convert.ToInt32(moneystring);
                                auxm   = "1";
                            }
                            else
                            {
                                Console.WriteLine("Ingrese un numero valido\n");
                            }
                        }
                        string auxs   = "0";
                        int    salary = 0;
                        while (auxs != "1")
                        {
                            Console.WriteLine("Ingrese el sueldo inicial: ");
                            string salarystring = Console.ReadLine();
                            if (int.TryParse(salarystring, out moneyE))
                            {
                                salary = Convert.ToInt32(salarystring);
                                auxs   = "1";
                            }
                            else
                            {
                                Console.WriteLine("Ingrese un numero valido\n");
                            }
                        }
                        Console.WriteLine("Ingrese el horario en el siguiente formato: 9:00 a 17:00");
                        string horario = Console.ReadLine();
                        Console.WriteLine("Ingrese el puesto de trabajo: ");
                        string   job      = Console.ReadLine();
                        Employee empleado = new Employee(nameE, lastnameE, birthdayE, nacionalityE, moneyE, rutE, salary, horario, job);
                        listofemployees.Add(empleado);
                        break;
                    }
                    else if (suporemp == "2")
                    {
                        Console.WriteLine("Ingrese el rut con el siguiente formato: 12345678-9");
                        string rutS = Console.ReadLine();
                        Console.WriteLine("Ingrese el nombre: ");
                        string nameS = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido: ");
                        string lastnameS = Console.ReadLine();
                        Console.WriteLine("Ingrese fecha de nacimiento en el siguiente formato: 00/00/0000");
                        string birthdayS = Console.ReadLine();
                        Console.WriteLine("Ingrese Nacionalidad: ");
                        string nacionalityS = Console.ReadLine();
                        string auxm         = "0";
                        int    moneyS       = 0;
                        while (auxm != "1")
                        {
                            Console.WriteLine("Ingrese dinero disponible: ");
                            string moneystring = Console.ReadLine();
                            if (int.TryParse(moneystring, out moneyS))
                            {
                                moneyS = Convert.ToInt32(moneystring);
                                auxm   = "1";
                            }
                            else
                            {
                                Console.WriteLine("Ingrese un numero valido\n");
                            }
                        }
                        string auxs    = "0";
                        int    salaryS = 0;
                        while (auxs != "1")
                        {
                            Console.WriteLine("Ingrese el sueldo inicial: ");
                            string salarystring = Console.ReadLine();
                            if (int.TryParse(salarystring, out salaryS))
                            {
                                salaryS = Convert.ToInt32(salarystring);
                                auxs    = "1";
                            }
                            else
                            {
                                Console.WriteLine("Ingrese un numero valido\n");
                            }
                        }
                        Console.WriteLine("Ingrese el horario en el siguiente formato: 9:00 a 17:00");
                        string horarioS = Console.ReadLine();
                        Console.WriteLine("Ingrese el puesto de trabajo: ");
                        string     jobS       = Console.ReadLine();
                        Supervisor supervisor = new Supervisor(nameS, lastnameS, birthdayS, nacionalityS, moneyS, rutS, salaryS, horarioS, jobS);
                        supervisors.Add(supervisor);
                        break;
                    }
                    else
                    {
                        Console.WriteLine("Ingrese una opcion valida");
                        break;
                    }

                case "4":    //ingresar como supervisor
                    bool fixer6 = false;
                    Console.WriteLine("Ingrese el rut con el siguiente formato: 12345678-9\n");
                    string rutsup = Console.ReadLine();
                    if (supervisors.Count() == 0)
                    {
                        Console.WriteLine("No existen supervisores en la base de datos");
                        break;
                    }
                    else
                    {
                        foreach (Supervisor supervisor in supervisors)
                        {
                            if (supervisor.ReturnRut() == rutsup)
                            {
                                fixer6 = true;
                                string Sup_Stopper = "6";
                                string supswitcher = "0";
                                while (Sup_Stopper != supswitcher)
                                {
                                    Console.WriteLine("\n(1)Añadir Producto\n(2)Cambiar Salario de empleado\n(3)Pagar sueldos\n(4)Cambiar horario de empleado\n(5)Cambiar puesto de empleado\n(6)Salir");
                                    supswitcher = Console.ReadLine();
                                    switch (supswitcher)
                                    {
                                    case "1":        //Anadir product d
                                        supervisor.AddProduct(listofproducts);
                                        break;

                                    case "2":        //Cambiar salario d
                                        bool fixer7 = false;
                                        Console.WriteLine("Ingrese el rut del empleado con el siguiente formato: 12346578-9");
                                        string rutempleado = Console.ReadLine();
                                        if (listofemployees.Count() == 0)
                                        {
                                            Console.WriteLine("No se encontraron empleados en la base de datos.\n");
                                        }
                                        else
                                        {
                                            foreach (Employee employee in listofemployees)        //checked
                                            {
                                                if (employee.ReturnRut() == rutempleado)
                                                {
                                                    fixer7 = true;
                                                    supervisor.ChangeSalary(employee);
                                                    break;
                                                }
                                            }
                                            if (fixer7)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No se encontraron empleados en la base de datos.\n");
                                                break;
                                            }
                                        }
                                        break;

                                    case "3":        //Pagar sueldos
                                        supervisor.Payment(listofemployees);
                                        break;

                                    case "4":        //cambiar horario /d
                                        bool fixer8 = false;
                                        Console.WriteLine("Ingrese el rut del empleado con el siguiente formato: 12346578-9");
                                        string rutempleadoH = Console.ReadLine();
                                        if (listofemployees.Count() == 0)
                                        {
                                            Console.WriteLine("No se encontraron empleados en la base de datos.\n");
                                        }
                                        else
                                        {
                                            foreach (Employee employee in listofemployees)
                                            {
                                                if (employee.ReturnRut() == rutempleadoH)
                                                {
                                                    fixer8 = true;
                                                    supervisor.ChangeSchedule(employee);
                                                    break;
                                                }
                                            }
                                            if (fixer8)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No se encontraron empleados con ese rut en la base de datos.\n");
                                                break;
                                            }
                                        }
                                        break;

                                    case "5":        //cambiar puesto /d
                                        bool fixer9 = false;
                                        Console.WriteLine("Ingrese el rut del empleado con el siguiente formato: 12346578-9");
                                        string rutempleadoJ = Console.ReadLine();
                                        if (listofemployees.Count() == 0)
                                        {
                                            Console.WriteLine("No se encontraron empleados en la base de datos.\n");
                                        }
                                        else
                                        {
                                            foreach (Employee employee in listofemployees)
                                            {
                                                if (employee.ReturnRut() == rutempleadoJ)
                                                {
                                                    fixer9 = true;
                                                    supervisor.ChangeJob(employee);
                                                    break;
                                                }
                                            }
                                            if (fixer9)
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("No se encontraron empleados con ese rut en la base de datos.\n");
                                                break;
                                            }
                                        }
                                        break;

                                    case "6":        //salir
                                        break;

                                    default:
                                        Console.WriteLine("Ingrese una opcion valida");
                                        break;
                                    }
                                }

                                break;
                            }
                        }
                        if (fixer6)
                        {
                            break;
                        }
                        else
                        {
                            Console.WriteLine("No se encontro ningun supervisor con ese rut");
                            break;
                        }
                    }

                case "5":    //salir
                    break;

                default:
                    Console.WriteLine("Ingrese una opcion valida");
                    break;
                }
            }
        }
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("W E L C O M E   T O    E - M A R T\n");

            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("Choose an option \n[1] Manual\n[2] Simulation\n");
            // SIN IMPLEMETAR LA SIMULACION
            Console.ForegroundColor = ConsoleColor.White;
            string mode = Console.ReadLine();

            while (mode != "1" && mode != "2")
            {
                Console.WriteLine("ERROR, choose a correct option");
                mode = Console.ReadLine();
            }
            Console.ForegroundColor = ConsoleColor.Magenta;

            ////////////////////////////////////////////////////////////////
            Console.WriteLine("Manual MODE\n");
            Console.ForegroundColor = ConsoleColor.White;

            Checker    checker    = new Checker();
            supervisor supervisor = new supervisor();
            Assistant  assistant  = new Assistant();
            Producto   MART       = new Producto();
            chief      chiefs     = new chief();
            Client     client     = new Client();
            Boleta     boleta     = new Boleta();

            List <int>    unic_ID      = new List <int>();
            List <Boleta> voucher_list = new List <Boleta>();

            client.ClientInfo();
            assistant.AssistantInfo();
            chiefs.ChiefsInfo();
            MART.MarketList();
            supervisor.SupervisorInfo();
            checker.CheckersInfo();

            /////////////////////////////////////////////////////////////////////////////
            while (true)
            {
                Console.WriteLine("Main menu, choose an option\n");
                Console.WriteLine("[1]Show product list \n[2]Show employee info \n[3]Purchase \n[4]See purchases \n[5]Options \n[0]EXIT");
                string mode2 = Console.ReadLine();
                while (mode2 != "1" && mode2 != "2" && mode2 != "3" && mode2 != "4" && mode2 != "4" && mode2 != "5" && mode2 != "0")
                {
                    Console.WriteLine("ERROR, choose a correct option");
                    mode2 = Console.ReadLine();
                }
                if (mode2 == "1")
                {
                    MART.ShowProductInfo();
                    continue;
                }
                else if (mode2 == "2")
                {
                    Console.WriteLine("[1]Chief \n[2]Assistant \n[3]Supervisor \n[4]Checker \n[0]EXIT");
                    string mode3 = Console.ReadLine();

                    if (mode3 == "1") //CHIEF
                    {
                        chiefs.ShowChiefInfo();
                        continue;
                    }
                    else if (mode3 == "2") //ASSISTANT
                    {
                        assistant.ShowAsisstantInfo();
                    }
                    else if (mode3 == "3") //SUPERVISOR
                    {
                        supervisor.ShowSupervisorInfo();
                    }
                    else if (mode3 == "4") // CHECKER
                    {
                        checker.ShowCheckerInfo();
                    }
                    else if (mode3 == "0") // EXIT
                    {
                        continue;
                    }
                }
                else if (mode2 == "3") //PURCHASE
                {
                    Console.WriteLine("Choose a client");
                    client.ShowClientName();
                    string          client_chosen = Console.ReadLine();
                    List <Producto> shoppingCart  = new List <Producto>();

                    // B U Y
                    MART.BUY(shoppingCart);

                    Console.WriteLine("Choose a cheker");
                    checker.ShowCheckerName();
                    string checker_chosen = Console.ReadLine();


                    //GENERATING VOUCHER
                    DateTime start = new DateTime(2020, 1, 1);
                    int      range = (DateTime.Today - start).Days;

                    Random random = new Random();
                    string checker_Name;
                    int    total = MART.Total_Amount(shoppingCart);

                    int ID = random.Next(1000, 9999);
                    while (unic_ID.Contains(ID))
                    {
                        ID = random.Next(1000, 9999);
                    }
                    checker_Name = checker.SelectChecker(checker_chosen);
                    DateTime buyDate = start.AddDays(random.Next(range));
                    string   strID   = Convert.ToString(ID);

                    Boleta new_voucher = new Boleta(strID, client_chosen, buyDate, total, checker_Name);
                    boleta.ADDvoucher(voucher_list, new_voucher);

                    Console.WriteLine("Thanks to visit US");
                }

                else if (mode2 == "4") //SEE PURCHASES
                {
                    boleta.ShowPurchases(voucher_list);
                }
                else if (mode2 == "5") //OPTIONS
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Change person parameters");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("[1] Client \n[2] Chief \n[3] Supervisor \n[4] Checker \n[5] Assistant \n[0] EXIT");
                    string person = Console.ReadLine();
                }


                else if (mode2 == "0") //EXIT
                {
                    break;
                }
            }
        }