public static void Main(string[] args)
        {
            List <Empresa> empresas = new List <Empresa>();
            int            eleccion = 0;

            Console.WriteLine("Bienvenido !");
            while (eleccion != 3)
            {
                Console.WriteLine("Desea utilizar un archivo para cargar la información de la empresa?");
                Console.WriteLine("1.- Si");
                Console.WriteLine("2.- No");
                Console.WriteLine("3.- Salir");

                eleccion = Convert.ToInt32(Console.ReadLine());

                switch (eleccion)
                {
                case 1:
                    Console.Clear();
                    try
                    {
                        empresas = Load();
                        showEmpresas(empresas);
                    }

                    catch (FileNotFoundException)
                    {
                        List <Division> divisiones2 = new List <Division>();
                        Console.WriteLine("No se ha encontrado un archivo para la informacion de la empresa.");
                        Console.Write("Ingrese el Nombre de la Empresa: ");
                        string nombreEmp2 = Console.ReadLine();
                        Console.Write("Ingrese el RUT de la Empresa: ");
                        string RUTEmp2 = Console.ReadLine();
                        Console.WriteLine("Se va a crear la empresa de forma automatica ...");

                        //AREA
                        Persona encargadoArea2 = new Persona("Cristiano", "Ronaldo", "20.074.782-8", "Engargado Area");
                        Area    area2          = new Area("Area", encargadoArea2, null);
                        divisiones2.Add(area2);

                        //DEPARTAMENTO
                        Persona      encargadoDepa2 = new Persona("Lionel", "Messi", "23.204.345-5", "Encargado Departamento");
                        Departamento departamento2  = new Departamento("Departamento", encargadoDepa2, null);
                        divisiones2.Add(departamento2);

                        //SECCION
                        Persona encargadoSec2 = new Persona("Elon", "Musk", "18.094.234-1", "Encargado Seccion");
                        Seccion seccion2      = new Seccion("Seccion", encargadoSec2, null);
                        divisiones2.Add(seccion2);

                        //BLOQUE1

                        List <Persona> personalB1  = new List <Persona>();
                        Persona        encargadoB1 = new Persona("Humberto", "Suazo", "15.657.778-2", "Encargado Bloque 1");
                        Persona        personal1B1 = new Persona("Juan", "Perez", "17.232.688-6", "Personal 1 ");
                        Persona        personal2B1 = new Persona("Diego", "Soto", "17.343.777-2", "Personal 2 ");
                        Persona        personal3B1 = new Persona("Pablo", "Poblete", "10.666.448-3", "Personal 3");
                        Persona        personal4B1 = new Persona("Sofia", "Alcalde", "20.074.788-9", "Personal 4");
                        Persona        personal5B1 = new Persona("Javier", "Coll", "19.346.448-8", "Personal 5");
                        personalB1.Add(personal1B1);
                        personalB1.Add(personal2B1);
                        personalB1.Add(personal3B1);
                        personalB1.Add(personal4B1);
                        personalB1.Add(personal5B1);

                        Bloque bloque1 = new Bloque("Bloque 1", encargadoB1, personalB1);
                        divisiones2.Add(bloque1);

                        //BLOQUE2
                        Persona        encargadoB2 = new Persona("Alexis", "Sanchez", "18.343.566-7", "Encargado Bloque 2");
                        List <Persona> personalB2  = new List <Persona>();
                        Persona        personal1B2 = new Persona("Vicente", "Perez", "20.999.688-6", "Personal 1 ");
                        Persona        personal2B2 = new Persona("Rodrigo", "Olguin", "23.455.788-K", "Personal 2 ");
                        Persona        personal3B2 = new Persona("Nicolas", "Valencia", "24.666.666-5", "Personal 3");
                        Persona        personal4B2 = new Persona("Emilia", "Segura", "22.899.056-9", "Personal 4");
                        Persona        personal5B2 = new Persona("Vicente", "Poblete", "20.346.448-8", "Personal 5");
                        personalB2.Add(personal1B2);
                        personalB2.Add(personal2B2);
                        personalB2.Add(personal3B2);
                        personalB2.Add(personal4B2);
                        personalB2.Add(personal5B2);

                        Bloque bloque2 = new Bloque("Bloque 2", encargadoB2, personalB2);
                        divisiones2.Add(bloque2);

                        Empresa empresa2 = new Empresa(nombreEmp2, RUTEmp2, divisiones2);
                        empresas.Add(empresa2);
                        Save(empresas);
                        Console.WriteLine("Empresa creada correctamente");
                    }


                    break;

                case 2:
                    Console.Clear();

                    List <Division> divisiones = new List <Division>();

                    Console.Write("Ingrese el Nombre de la Empresa: ");
                    string nombreEmp = Console.ReadLine();
                    Console.Write("Ingrese el RUT de la Empresa: ");
                    string RUTEmp = Console.ReadLine();

                    // AREA
                    Console.Clear();
                    string elec = "";
                    Console.WriteLine("Desea Agregar un Area? (s/n)");
                    elec = Console.ReadLine();
                    switch (elec)
                    {
                    case "s":
                        Console.WriteLine("Ingrese Nombre del encargado del Area: ");
                        string nombreEA = Console.ReadLine();
                        Console.WriteLine("Ingrese Apellido del encargado del Area: ");
                        string apellidoEA = Console.ReadLine();
                        Console.WriteLine("Ingrese RUT del encargado del Area: ");
                        string rutEA = Console.ReadLine();

                        Persona encargadoArea = new Persona(nombreEA, apellidoEA, rutEA, "Encargado Area");

                        Area area = new Area("Area", encargadoArea, null);
                        divisiones.Add(area);
                        break;

                    case "n":
                        break;

                    default:
                        Console.WriteLine("Opción no valida");
                        break;
                    }

                    // DEPARTAMENTO
                    Console.Clear();
                    string elec2 = "";
                    Console.WriteLine("Desea Agregar un Departamento? (s/n)");
                    elec2 = Console.ReadLine();
                    switch (elec2)
                    {
                    case "s":
                        Console.WriteLine("Ingrese Nombre del encargado del Departamento: ");
                        string nombreED = Console.ReadLine();
                        Console.WriteLine("Ingrese Apellido del encargado del Departamento: ");
                        string apellidoED = Console.ReadLine();
                        Console.WriteLine("Ingrese RUT del encargado del Departamento: ");
                        string rutED = Console.ReadLine();

                        Persona encargadoDepa = new Persona(nombreED, apellidoED, rutED, "Encargado Departamento");

                        Departamento departamento = new Departamento("Departamento", encargadoDepa, null);
                        divisiones.Add(departamento);
                        break;

                    case "n":
                        break;

                    default:
                        Console.WriteLine("Opción no valida");
                        break;
                    }

                    // SECCION
                    Console.Clear();
                    string elec3 = "";
                    Console.WriteLine("Desea Agregar una SECCION? (s/n)");
                    elec3 = Console.ReadLine();
                    switch (elec3)
                    {
                    case "s":
                        Console.WriteLine("Ingrese Nombre del encargado de la Seccion: ");
                        string nombreES = Console.ReadLine();
                        Console.WriteLine("Ingrese Apellido del encargado de la Seccion: ");
                        string apellidoES = Console.ReadLine();
                        Console.WriteLine("Ingrese RUT del encargado de la Seccion: ");
                        string rutES = Console.ReadLine();

                        Persona encargadoSec = new Persona(nombreES, apellidoES, rutES, "Encargado Seccion");

                        Seccion seccion = new Seccion("Seccion", encargadoSec, null);
                        divisiones.Add(seccion);
                        break;

                    case "n":
                        break;

                    default:
                        Console.WriteLine("Opción no valida");
                        break;
                    }

                    // BLOQUE
                    Console.Clear();
                    string elec4 = "";
                    Console.WriteLine("Desea Agregar BLOQUES? (s/n)");
                    elec4 = Console.ReadLine();
                    switch (elec4)
                    {
                    case "s":
                        int cantb = 0;
                        Console.WriteLine("Cuantos Bloques desdea agregar?");
                        cantb = Convert.ToInt32(Console.ReadLine());

                        for (int i = 0; i < cantb; i++)
                        {
                            List <Persona> personalBloq = new List <Persona>();
                            Console.WriteLine("Ingrese Nombre del encargado del Bloque " + (i + 1) + " : ");
                            string nombreEB = Console.ReadLine();
                            Console.WriteLine("Ingrese Apellido del encargado del Bloque " + (i + 1) + " : ");
                            string apellidoEB = Console.ReadLine();
                            Console.WriteLine("Ingrese RUT del encargado del Bloque " + (i + 1) + " : ");
                            string  rutEB         = Console.ReadLine();
                            Persona encargadoBloq = new Persona(nombreEB, apellidoEB, rutEB, "Encargado Bloque" + (i + 1));

                            Console.WriteLine("");
                            Console.WriteLine("Cuanto personal desea agregar? ");
                            int cantp = Convert.ToInt32(Console.ReadLine());
                            for (int j = 0; j < cantp; j++)
                            {
                                Console.WriteLine("Ingrese nombre del Personal " + (j + 1) + " : ");
                                string nombrePer = Console.ReadLine();
                                Console.WriteLine("Ingrese apellido del Personal " + (j + 1) + " : ");
                                string apellidoPer = Console.ReadLine();
                                Console.WriteLine("Ingrese RUT del Personal " + (j + 1) + " : ");
                                string  rutPer    = Console.ReadLine();
                                Persona personalB = new Persona(nombrePer, apellidoPer, rutPer, "Personal" + (j + 1));
                                personalBloq.Add(personalB);
                                Console.WriteLine("");
                            }



                            Bloque bloque = new Bloque("Bloque" + (i + 1), encargadoBloq, personalBloq);
                            divisiones.Add(bloque);
                        }

                        break;

                    case "n":
                        break;

                    default:
                        Console.WriteLine("Opción no valida");
                        break;
                    }
                    Console.WriteLine("");
                    Console.WriteLine("Empresa creada correctamente");
                    Empresa empresa = new Empresa(nombreEmp, RUTEmp, divisiones);
                    empresas.Add(empresa);
                    Save(empresas);



                    break;

                case 3:
                    Console.Clear();
                    Console.WriteLine("Saliendo del programa ...");
                    break;

                default:
                    Console.Clear();
                    Console.WriteLine("Opción no valida");
                    break;
                }
            }
        }
        static void Main()
        {
            List <Empresa> empresas = new List <Empresa>();
            Persona        personal;
            Persona        persona;
            Departamento   departamento;
            Empresa        newempresa;
            Seccion        seccion;
            List <Persona> personales;
            Bloque         bloque;
            string         name;
            string         lastname;
            int            rut;
            string         position;

            string switcher = "0";
            string stopper  = "3";


            while (switcher != stopper)
            {
                Console.WriteLine("-----------------------------------------Bienvenidos-----------------------------------------");
                Console.WriteLine("Si desea:\n\t(1) Utilizar un archivo para cargar la información de la empresa\n\t(2) No utilizar un archivo para cargar la información de la empresa\n\t(3) Salir del programa\n");
                switcher = Console.ReadLine();
                Console.Clear();
                switch (switcher)
                {
                case "1":
                    try
                    {
                        empresas = LoadEmpresa();
                        int ne = 1;
                        foreach (Empresa e in empresas)
                        {
                            Console.WriteLine($"-----------------------------------------EMPRESA {ne}-----------------------------------------");
                            Console.WriteLine($"Nombre empresa: {e.Name}\nRut empresa: {e.Rut}\n\n\n");
                            foreach (Division d in e.Divisiones)
                            {
                                if (d.Name == "Area")
                                {
                                    Console.WriteLine($"Nombre división: {d.Name}\nNombre encargado: {d.InCharge.Name} {d.InCharge.Lastname}\n");
                                    Console.WriteLine("");
                                    Console.WriteLine("");
                                    foreach (Departamento dep in d.Departamentos)
                                    {
                                        Console.WriteLine($"Nombre división: {dep.Name}\nNombre encargado: {dep.InCharge.Name} {dep.InCharge.Lastname}\n");
                                        Console.WriteLine("");
                                        Console.WriteLine("");
                                        foreach (Seccion s in dep.Secciones)
                                        {
                                            Console.WriteLine($"Nombre división: {s.Name}\nNombre encargado: {s.InCharge.Name} {s.InCharge.Lastname}\n");
                                            Console.WriteLine("");
                                            Console.WriteLine("");
                                            int nb = 1;
                                            foreach (Bloque b in s.Bloques)
                                            {
                                                int nem = 1;
                                                Console.WriteLine($"Nombre división: {b.Name} {nb}\nNombre encargado: {b.InCharge.Name} {b.InCharge.Lastname}\n");
                                                foreach (Persona p in b.Personas)
                                                {
                                                    Console.WriteLine($"Nombre empleado {nem}: {p.Name}\nApellido empleado: {p.Lastname}\nRut empleado: {p.Rut}\nCargo empleado: {p.Position}\n");
                                                    nem++;
                                                }
                                                Console.WriteLine("");
                                                Console.WriteLine("");

                                                nb++;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    Console.WriteLine($"Nombre división: {d.Name}\nNombre encargado: {d.InCharge.Name} {d.InCharge.Lastname}\n");
                                    Console.WriteLine("");
                                    Console.WriteLine("");

                                    foreach (Seccion s in d.Secciones)
                                    {
                                        Console.WriteLine($"Nombre división: {s.Name}\nNombre encargado: {s.InCharge.Name} {s.InCharge.Lastname}\n");
                                        Console.WriteLine("");
                                        Console.WriteLine("");
                                        int nb = 1;
                                        foreach (Bloque b in s.Bloques)
                                        {
                                            int nem = 1;
                                            Console.WriteLine($"Nombre división: {b.Name} {nb}\nNombre encargado: {b.InCharge.Name} {b.InCharge.Lastname}\n");
                                            foreach (Persona p in b.Personas)
                                            {
                                                Console.WriteLine($"Nombre empleado {nem}: {p.Name}\nApellido empleado: {p.Lastname}\nRut empleado: {p.Rut}\nCargo empleado: {p.Position}\n");
                                                nem++;
                                            }
                                            Console.WriteLine("");
                                            Console.WriteLine("");

                                            nb++;
                                        }
                                    }
                                }
                            }
                            Console.ReadKey();
                            Console.Clear();
                            ne++;
                        }
                    }
                    catch (FileNotFoundException)
                    {
                        Console.WriteLine("------------------------------------No se ha encontrado el archivo de la empresa------------------------------------ ");
                        Console.WriteLine("Ingrese el nombre de la empresa:");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut de la empresa (Sin puntos ni guiones):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        newempresa = new Empresa(name, rut);
                        Thread.Sleep(1000);
                        Console.Clear();



                        Console.WriteLine("Ingrese el nombre del encargado de departamento: ");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del encargado de departamento: ");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del encargado de departamento (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        position     = "Jefe departamento";
                        persona      = new Persona(name, lastname, rut, position);
                        departamento = new Departamento(persona);
                        Thread.Sleep(1000);
                        Console.Clear();



                        Console.WriteLine("Ingrese el nombre del encargado de sección: ");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del encargado de sección: ");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del encargado de sección (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        position = "Jefe sección";
                        persona  = new Persona(name, lastname, rut, position);
                        seccion  = new Seccion(persona);
                        departamento.Secciones.Add(seccion);
                        Thread.Sleep(1000);
                        Console.Clear();

                        Console.WriteLine("Ingrese el nombre del encargado de bloque 1: ");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del encargado de bloque 1: ");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del encargado de bloque 1 (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        position = "Jefe bloque 1";

                        persona = new Persona(name, lastname, rut, position);

                        personales = new List <Persona>();
                        Console.WriteLine("");

                        Console.WriteLine("Ingrese el nombre del personal 1:");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del personal 1:");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del personal 1 (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        Console.WriteLine("Ingrese el cargo del personal 1:");
                        position = Console.ReadLine();

                        personal = new Persona(name, lastname, rut, position);
                        personales.Add(personal);
                        Console.WriteLine("");


                        Console.WriteLine("Ingrese el nombre del personal 2:");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del personal 2:");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del personal 2 (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        Console.WriteLine("Ingrese el cargo del personal 2:");
                        position = Console.ReadLine();

                        personal = new Persona(name, lastname, rut, position);
                        personales.Add(personal);

                        bloque = new Bloque(persona, personales);
                        seccion.Bloques.Add(bloque);
                        Thread.Sleep(1000);
                        Console.Clear();

                        Console.WriteLine("Ingrese el nombre del encargado de bloque 2: ");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del encargado de bloque 2: ");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del encargado de bloque 2 (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        position = "Jefe bloque 2";

                        persona = new Persona(name, lastname, rut, position);
                        Console.WriteLine("");


                        personales = new List <Persona>();

                        Console.WriteLine("Ingrese el nombre del personal 1:");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del personal 1:");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del personal 1 (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        Console.WriteLine("Ingrese el cargo del personal 1:");
                        position = Console.ReadLine();

                        personal = new Persona(name, lastname, rut, position);
                        personales.Add(personal);
                        Console.WriteLine("");

                        Console.WriteLine("Ingrese el nombre del personal 2:");
                        name = Console.ReadLine();
                        Console.WriteLine("Ingrese el apellido del personal 2:");
                        lastname = Console.ReadLine();
                        Console.WriteLine("Ingrese el rut del personal 2 (Sin guiones ni puntos. Reemplace la k por un 0):");
                        rut = -1;
                        while (rut == -1)
                        {
                            try
                            {
                                rut = int.Parse(Console.ReadLine());
                                if (rut < 1)
                                {
                                    Console.WriteLine("Ingrese un rut válido:");
                                    rut = -1;
                                }
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                            }
                            catch (OverflowException)
                            {
                                Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                            }
                        }
                        Console.WriteLine("Ingrese el cargo del personal 2:");
                        position = Console.ReadLine();

                        personal = new Persona(name, lastname, rut, position);
                        personales.Add(personal);

                        bloque = new Bloque(persona, personales);
                        seccion.Bloques.Add(bloque);


                        newempresa.Divisiones.Add(departamento);

                        empresas.Add(newempresa);
                        SaveEmpresa(empresas);
                        empresas = new List <Empresa>();
                        Thread.Sleep(1000);
                        Console.Clear();
                    }

                    break;

                case "2":
                    Console.WriteLine("Ingrese el nombre de la empresa:");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut de la empresa (Sin puntos ni guiones):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    newempresa = new Empresa(name, rut);
                    Thread.Sleep(1000);
                    Console.Clear();


                    Console.WriteLine("Ingrese el nombre del encargado de departamento: ");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del encargado de departamento: ");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del encargado de departamento (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    position     = "Jefe departamento";
                    persona      = new Persona(name, lastname, rut, position);
                    departamento = new Departamento(persona);
                    Thread.Sleep(1000);
                    Console.Clear();



                    Console.WriteLine("Ingrese el nombre del encargado de sección: ");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del encargado de sección: ");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del encargado de sección (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    position = "Jefe sección";
                    persona  = new Persona(name, lastname, rut, position);
                    seccion  = new Seccion(persona);
                    departamento.Secciones.Add(seccion);
                    Thread.Sleep(1000);
                    Console.Clear();

                    Console.WriteLine("Ingrese el nombre del encargado de bloque 1: ");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del encargado de bloque 1: ");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del encargado de bloque 1 (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    position = "Jefe bloque 1";

                    persona = new Persona(name, lastname, rut, position);

                    personales = new List <Persona>();
                    Console.WriteLine("");

                    Console.WriteLine("Ingrese el nombre del personal 1:");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del personal 1:");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del personal 1 (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    Console.WriteLine("Ingrese el cargo del personal 1:");
                    position = Console.ReadLine();

                    personal = new Persona(name, lastname, rut, position);
                    personales.Add(personal);
                    Console.WriteLine("");


                    Console.WriteLine("Ingrese el nombre del personal 2:");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del personal 2:");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del personal 2 (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    Console.WriteLine("Ingrese el cargo del personal 2:");
                    position = Console.ReadLine();

                    personal = new Persona(name, lastname, rut, position);
                    personales.Add(personal);

                    bloque = new Bloque(persona, personales);
                    seccion.Bloques.Add(bloque);
                    Thread.Sleep(1000);
                    Console.Clear();

                    Console.WriteLine("Ingrese el nombre del encargado de bloque 2: ");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del encargado de bloque 2: ");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del encargado de bloque 2 (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    position = "Jefe bloque 2";

                    persona = new Persona(name, lastname, rut, position);
                    Console.WriteLine("");


                    personales = new List <Persona>();

                    Console.WriteLine("Ingrese el nombre del personal 1:");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del personal 1:");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del personal 1 (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    Console.WriteLine("Ingrese el cargo del personal 1:");
                    position = Console.ReadLine();

                    personal = new Persona(name, lastname, rut, position);
                    personales.Add(personal);
                    Console.WriteLine("");

                    Console.WriteLine("Ingrese el nombre del personal 2:");
                    name = Console.ReadLine();
                    Console.WriteLine("Ingrese el apellido del personal 2:");
                    lastname = Console.ReadLine();
                    Console.WriteLine("Ingrese el rut del personal 2 (Sin guiones ni puntos. Reemplace la k por un 0):");
                    rut = -1;
                    while (rut == -1)
                    {
                        try
                        {
                            rut = int.Parse(Console.ReadLine());
                            if (rut < 1)
                            {
                                Console.WriteLine("Ingrese un rut válido:");
                                rut = -1;
                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un numero como rut:");
                        }
                        catch (OverflowException)
                        {
                            Console.WriteLine("Formato invalido\nIngrese un rut de menos dígitos:");
                        }
                    }
                    Console.WriteLine("Ingrese el cargo del personal 2:");
                    position = Console.ReadLine();

                    personal = new Persona(name, lastname, rut, position);
                    personales.Add(personal);

                    bloque = new Bloque(persona, personales);
                    seccion.Bloques.Add(bloque);


                    newempresa.Divisiones.Add(departamento);

                    empresas.Add(newempresa);
                    SaveEmpresa(empresas);
                    empresas = new List <Empresa>();
                    Thread.Sleep(1000);
                    Console.Clear();
                    break;

                case "3":
                    if (empresas.Count() != 0)
                    {
                        SaveEmpresa(empresas);
                        Thread.Sleep(1000);
                    }
                    switcher = "3";
                    Thread.Sleep(1000);
                    break;

                default:
                    Console.WriteLine("Ingrese una opción valida\n");
                    Thread.Sleep(1000);
                    Console.Clear();
                    break;
                }
            }
        }
Example #3
0
        public static void serializar(Empresa empresa)
        {
            //Empresa empresa = new Empresa(Nombre, Rut);

            Console.WriteLine("Por favor ahora ingrese los nombres de las siguientes divisiones con sus encargados");
            Console.WriteLine("Departamento");
            string Departamento = Console.ReadLine();

            Console.WriteLine("Encargado del Departamento:");
            Console.WriteLine("Nombre");
            string Nombre_Encargado_Departamento = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Encargado_Departamento = Console.ReadLine();
            int    Rut_Encargado_Departamento      = 0;

            while (Rut_Encargado_Departamento == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Encargado_Departamento);
            }
            Console.WriteLine("Sección ");
            string Seccion = Console.ReadLine();

            Console.WriteLine("Encargado de la Sección");
            Console.WriteLine("Nombre");
            string Nombre_Encargado_Seccion = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Encargado_Seccion = Console.ReadLine();
            int    Rut_Encargado_Seccion      = 0;

            while (Rut_Encargado_Seccion == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Encargado_Seccion);
            }
            Console.WriteLine("Bloque 1");
            string Bloque1 = Console.ReadLine();

            Console.WriteLine("Encargado del Bloque 1:");
            Console.WriteLine("Nombre");
            string Nombre_Encargado_Bloque1 = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Encargado_Bloque1 = Console.ReadLine();
            int    Rut_Encargado_Bloque1      = 0;

            while (Rut_Encargado_Bloque1 == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Encargado_Bloque1);
            }
            Console.WriteLine("personal del bloque1 numero 1");
            Console.WriteLine("Nombre");
            string Nombre_Personal1_Bloque1 = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Personal1_Bloque1 = Console.ReadLine();
            int    Rut_Personal1_Bloque1      = 0;

            while (Rut_Personal1_Bloque1 == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Personal1_Bloque1);
            }
            Console.WriteLine("personal del bloque1 numero 2");
            Console.WriteLine("Nombre");
            string Nombre_Personal2_Bloque1 = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Personal2_Bloque1 = Console.ReadLine();
            int    Rut_Personal2_Bloque1      = 0;

            while (Rut_Personal2_Bloque1 == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Personal2_Bloque1);
            }
            Console.WriteLine("Bloque 2");
            string Bloque2 = Console.ReadLine();

            Console.WriteLine("Encargado del Bloque 2:");
            Console.WriteLine("Nombre");
            string Nombre_Encargado_Bloque2 = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Encargado_Bloque2 = Console.ReadLine();
            int    Rut_Encargado_Bloque2      = 0;

            while (Rut_Encargado_Bloque2 == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Encargado_Bloque2);
            }

            Console.WriteLine("personal del bloque2 numero 1");
            Console.WriteLine("Nombre");
            string Nombre_Personal1_Bloque2 = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Personal1_Bloque2 = Console.ReadLine();
            int    Rut_Personal1_Bloque2      = 0;

            while (Rut_Personal1_Bloque2 == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Personal1_Bloque2);
            }

            Console.WriteLine("personal del bloque2 numero 2");
            Console.WriteLine("Nombre");
            string Nombre_Personal2_Bloque2 = Console.ReadLine();

            Console.WriteLine("Apellido");
            string Apellido_Personal2_Bloque2 = Console.ReadLine();
            int    Rut_Personal2_Bloque2      = 0;

            while (Rut_Personal2_Bloque2 == 0)
            {
                Console.WriteLine("ingrese rut");
                int.TryParse(Console.ReadLine(), out Rut_Personal2_Bloque2);
            }

            Departamento departamento         = new Departamento(Departamento);
            Persona      departamento_persona = new Persona(Nombre_Encargado_Departamento, Apellido_Encargado_Departamento, Rut_Encargado_Departamento, "Encargado del Departamento");

            empresa.add_division(departamento);
            empresa.persona.Add(departamento_persona);
            Sección seccion         = new Sección(Seccion);
            Persona seccion_persona = new Persona(Nombre_Encargado_Seccion, Apellido_Encargado_Seccion, Rut_Encargado_Seccion, "Encargado del Departamento");

            empresa.add_division(seccion);
            empresa.persona.Add(seccion_persona);

            Bloque  bloque1                   = new Bloque(Bloque1);
            Persona bloque1_persona           = new Persona(Nombre_Encargado_Bloque1, Apellido_Encargado_Bloque1, Rut_Encargado_Bloque1, "Encargado del Bloque 1");
            Persona bloque1_persona_personal1 = new Persona(Nombre_Personal1_Bloque1, Apellido_Personal1_Bloque1, Rut_Personal1_Bloque1, "Personal bloque1");
            Persona bloque1_persona_personal2 = new Persona(Nombre_Personal2_Bloque1, Apellido_Personal2_Bloque1, Rut_Personal2_Bloque1, "Personal bloque1");

            empresa.add_division(bloque1);
            empresa.persona.Add(bloque1_persona);
            empresa.personal.Add(bloque1_persona_personal1);
            empresa.personal.Add(bloque1_persona_personal2);



            Bloque  bloque2                   = new Bloque(Bloque2);
            Persona bloque2_persona           = new Persona(Nombre_Encargado_Bloque2, Apellido_Encargado_Bloque2, Rut_Encargado_Bloque2, "Encargado del Bloque 2");
            Persona bloque2_persona_personal1 = new Persona(Nombre_Personal1_Bloque2, Apellido_Personal1_Bloque2, Rut_Personal1_Bloque2, "Personal bloque2");
            Persona bloque2_persona_personal2 = new Persona(Nombre_Personal2_Bloque2, Apellido_Personal2_Bloque2, Rut_Personal2_Bloque2, "Personal bloque2");

            empresa.add_division(bloque2);
            empresa.persona.Add(bloque2_persona);
            empresa.personal.Add(bloque2_persona_personal1);
            empresa.personal.Add(bloque2_persona_personal2);



            IFormatter formatter = new BinaryFormatter();
            Stream     stream    = new FileStream("empresa.bin", FileMode.Create, FileAccess.Write, FileShare.None);

            formatter.Serialize(stream, empresa);
            stream.Close();
        }