private static void CreateEmpresa()
        {
            bool succes = false;
            int  rut    = 0;

            while (!succes)
            {
                Console.WriteLine("Ingrese el rut de la empresa sin puntos ni guion:\n");
                try
                {
                    rut    = int.Parse(Console.ReadLine());
                    succes = true;
                }
                catch (FormatException)
                {
                    Console.WriteLine("Formato invalido, intente nuevamente\n");
                }
            }
            Console.WriteLine("Ingrese el nombre de la empresa:\n");
            string       name         = Console.ReadLine();
            Empresa      empresa      = new Empresa(name, rut);
            Departamento departamento = CreateDepartment();
            Seccion      seccion      = CreateSeccion();
            Bloque       bloque       = CreateBloque();
            Bloque       bloque1      = CreateBloque();

            seccion.Bloques.Add(bloque);
            seccion.Bloques.Add(bloque1);
            departamento.Seccions.Add(seccion);
            empresa.Divisiones1.Add(departamento);
            Serialize(empresa, "empresa.bin");
        }
        private static Bloque CreateBloque()
        {
            Console.WriteLine("Ingrese el nombre de un bloque de la empresa: \n");
            string blockName = Console.ReadLine();

            Console.WriteLine("Ingrese los datos del jefe del bloque:\n");
            Bloque block = new Bloque(blockName, CreatePersona());

            for (int j = 0; j < 2; j++)
            {
                Console.WriteLine("Ingrese los datos de una persona que trabajara en el bloque: \n");
                block.Personas.Add(CreatePersona());
            }
            return(block);
        }
        public static void serialisar(Empresa gg, Personas yo)
        {
            Console.WriteLine("Ingresa el nombre de la empresa");
            string nom = Console.ReadLine();

            Console.WriteLine("Ingresa el rut de la empresa");
            string run = Console.ReadLine();

            gg.nombre(nom);
            gg.RUT(run);
            Empresa k = new Empresa(nom, run);

            gg.Añadirempresa(k);
            IFormatter      formatter = new BinaryFormatter();
            List <Personas> vacio     = new List <Personas>();
            List <Personas> vacio2    = new List <Personas>();
            List <Personas> vacio3    = new List <Personas>();
            List <Personas> vacio4    = new List <Personas>();
            List <Personas> vacio5    = new List <Personas>();
            List <Personas> vacio6    = new List <Personas>();

            Console.WriteLine("ingrese el nombre del area ");
            string area = Console.ReadLine();
            Area   A    = new Area("Area: " + area, vacio);

            gg.DivisionesDeLaEmpresa.Add(A);
            Console.Clear();



            Console.WriteLine("ingrese el nombre del departamento");
            string       dep = Console.ReadLine();
            Departamento B   = new Departamento("Departamento: " + dep, vacio2);

            Console.WriteLine("ingrese al encargado del departamento");
            Personas encargadodep = yo.crear_Persona();

            B.People.Add(encargadodep);
            gg.DivisionesDeLaEmpresa.Add(B);
            Console.Clear();



            Console.WriteLine("ingrese el nombre de la seccion");
            string  secc = Console.ReadLine();
            Seccion C    = new Seccion("Seccion: " + secc, vacio3);

            Console.WriteLine("ingrese al encargado de esta seccion");
            Personas encargadosecc = yo.crear_Persona();

            C.People.Add(encargadosecc);
            gg.DivisionesDeLaEmpresa.Add(C);
            Console.Clear();


            Console.WriteLine("ingrese el nombre del bloque 1");
            string blok1 = Console.ReadLine();
            Bloque D     = new Bloque("Bloque 1: " + blok1, vacio4);

            Console.WriteLine("ingrese a los trabajadores del blocke 1");
            bool seguir = true;

            while (seguir)
            {
                Personas encargadoblock1 = yo.crear_Persona();
                D.People.Add(encargadoblock1);
                string resp = "";
                while (resp != "SI" && resp != "NO" && resp != "si" && resp != "no")
                {
                    Console.WriteLine("quiere agregar otro empleado? (si/no)");
                    resp = Console.ReadLine();
                    if (resp == "no" || resp == "NO")
                    {
                        seguir = false;
                    }
                }
            }

            gg.DivisionesDeLaEmpresa.Add(D);
            Console.Clear();

            Console.WriteLine("ingrese el nombre del bloque 2");
            string bloc2 = Console.ReadLine();
            Bloque E     = new Bloque("Bloque 2: " + bloc2, vacio5);

            Console.WriteLine("ingrese a los trabajadores del blocke 2");


            seguir = true;
            while (seguir)
            {
                Personas encargadoblock2 = yo.crear_Persona();
                E.People.Add(encargadoblock2);
                string resp = "";
                while (resp != "SI" && resp != "NO" && resp != "si" && resp != "no")
                {
                    Console.WriteLine("quiere agregar otro empleado? (si/no)");
                    resp = Console.ReadLine();
                    if (resp == "no" || resp == "NO")
                    {
                        seguir = false;
                    }
                }
            }
            gg.DivisionesDeLaEmpresa.Add(E);
            Console.Clear();


            Stream stream = new FileStream("empresas.bin", FileMode.Create, FileAccess.Write, FileShare.None);

            formatter.Serialize(stream, gg.Get_Empresas().Count());
            for (int i = 0; i < gg.Get_Empresas().Count(); i++)
            {
                formatter.Serialize(stream, gg.Get_Empresas()[i]);
            }
            formatter.Serialize(stream, gg.DivisionesDeLaEmpresa.Count());
            for (int i = 0; i < gg.DivisionesDeLaEmpresa.Count(); i++)
            {
                formatter.Serialize(stream, gg.DivisionesDeLaEmpresa[i]);
            }
            stream.Close();
        }
        static void Main(string[] args)
        {
            List <Empresa> empresas = new List <Empresa>();
            bool           n        = true;

            while (n)
            {
                Console.WriteLine("¿Quiere utilizar un archivo para cargar la información de la empresa?: \n (1) Sí \n (2) No \n (3) Cerrar programa");
                int option = int.Parse(Console.ReadLine());
                if (option == 1)
                {
                    try
                    {
                        empresas = LoadE();
                        foreach (Empresa t in empresas)
                        {
                            Console.WriteLine(t.ToString());
                        }
                    }
                    catch (FileNotFoundException exp)
                    {
                        Console.WriteLine("No se encontró el archivo, se creará uno nuevo.");
                        Console.WriteLine(exp.Message);
                        Console.WriteLine("Escriba los datos de la empresa");
                        Console.Write("Nombre: ");
                        string name = Console.ReadLine();
                        Console.Write("Rut: ");
                        string         rut           = Console.ReadLine();
                        Empresa        e             = new Empresa(name, rut);
                        Persona        Edepartamento = new Persona("A", "A", "19.639.828-5", "Encargado Departamento");
                        Persona        Eseccion      = new Persona("B", "B", "19.689.587-8", "Encargado Sección");
                        Persona        Ebloque1      = new Persona("C", "C", "20.881.887-4", "Encargado Bloque");
                        Persona        Ebloque2      = new Persona("D", "D", "11.833.498-K", "Encargado Bloque");
                        Persona        persona1      = new Persona("E", "E", "12.232.498-4", "Trabajador");
                        Persona        persona2      = new Persona("F", "F", "8.107.074-3", "Trabajador");
                        Persona        persona3      = new Persona("G", "G", "19.685.827-1", "Trabajador");
                        Persona        persona4      = new Persona("H", "H", "20.463.389-4", "Trabajador");
                        List <Bloque>  bloques       = new List <Bloque>();
                        List <Seccion> secciones     = new List <Seccion>();
                        List <Persona> personas1     = new List <Persona>();
                        List <Persona> personas2     = new List <Persona>();
                        Bloque         bloque1       = new Bloque(personas1, "Bloque 1", Ebloque1, "Bloque");
                        Bloque         bloque2       = new Bloque(personas2, "Bloque 2", Ebloque2, "Bloque");
                        Seccion        seccion       = new Seccion(bloques, "Sección 1", Eseccion, "Sección");
                        Departamento   departamento  = new Departamento(secciones, "Departamento 1", Edepartamento, "Departamento");
                        personas1.Add(persona1);
                        personas1.Add(persona2);
                        personas2.Add(persona3);
                        personas2.Add(persona4);
                        bloques.Add(bloque1);
                        bloques.Add(bloque2);
                        secciones.Add(seccion);
                        e.Divisiones.Add(bloque1);
                        e.Divisiones.Add(bloque2);
                        e.Divisiones.Add(seccion);
                        e.Divisiones.Add(departamento);
                        empresas.Add(e);
                        try
                        {
                            SaveE(empresas);
                        }
                        catch (System.IO.IOException exp2)
                        {
                            Console.WriteLine("No se logró guardar correctamente.");
                            Console.WriteLine(exp2.Message);
                        }
                    }
                    catch (System.Runtime.Serialization.SerializationException exp1)
                    {
                        Console.WriteLine("El archivo está vacio, se creará uno nuevo.");
                        Console.WriteLine(exp1.Message);
                        Console.WriteLine("Escriba los datos de la empresa");
                        Console.Write("Nombre: ");
                        string name = Console.ReadLine();
                        Console.Write("Rut: ");
                        string         rut           = Console.ReadLine();
                        Empresa        e             = new Empresa(name, rut);
                        Persona        Edepartamento = new Persona("A", "A", "19.639.828-5", "Encargado Departamento");
                        Persona        Eseccion      = new Persona("B", "B", "19.689.587-8", "Encargado Sección");
                        Persona        Ebloque1      = new Persona("C", "C", "20.881.887-4", "Encargado Bloque");
                        Persona        Ebloque2      = new Persona("D", "D", "11.833.498-K", "Encargado Bloque");
                        Persona        persona1      = new Persona("E", "E", "12.232.498-4", "Trabajador");
                        Persona        persona2      = new Persona("F", "F", "8.107.074-3", "Trabajador");
                        Persona        persona3      = new Persona("G", "G", "19.685.827-1", "Trabajador");
                        Persona        persona4      = new Persona("H", "H", "20.463.389-4", "Trabajador");
                        List <Bloque>  bloques       = new List <Bloque>();
                        List <Seccion> secciones     = new List <Seccion>();
                        List <Persona> personas1     = new List <Persona>();
                        List <Persona> personas2     = new List <Persona>();
                        Bloque         bloque1       = new Bloque(personas1, "Bloque 1", Ebloque1, "Bloque");
                        Bloque         bloque2       = new Bloque(personas2, "Bloque 2", Ebloque2, "Bloque");
                        Seccion        seccion       = new Seccion(bloques, "Sección 1", Eseccion, "Sección");
                        Departamento   departamento  = new Departamento(secciones, "Departamento 1", Edepartamento, "Departamento");
                        personas1.Add(persona1);
                        personas1.Add(persona2);
                        personas2.Add(persona3);
                        personas2.Add(persona4);
                        bloques.Add(bloque1);
                        bloques.Add(bloque2);
                        secciones.Add(seccion);
                        e.Divisiones.Add(bloque1);
                        e.Divisiones.Add(bloque2);
                        e.Divisiones.Add(seccion);
                        e.Divisiones.Add(departamento);
                        empresas.Add(e);
                        try
                        {
                            SaveE(empresas);
                        }
                        catch (System.IO.IOException exp2)
                        {
                            Console.WriteLine("No se logró guardar correctamente.");
                            Console.WriteLine(exp2.Message);
                        }
                    }
                }
                else if (option == 2)
                {
                    Console.WriteLine("Escriba los datos de la empresa");
                    Console.Write("Nombre: ");
                    string name = Console.ReadLine();
                    Console.Write("Rut: ");
                    string         rut           = Console.ReadLine();
                    Empresa        e             = new Empresa(name, rut);
                    Persona        Edepartamento = new Persona("A", "A", "19.639.828-5", "Encargado Departamento");
                    Persona        Eseccion      = new Persona("B", "B", "19.689.587-8", "Encargado Sección");
                    Persona        Ebloque1      = new Persona("C", "C", "20.881.887-4", "Encargado Bloque");
                    Persona        Ebloque2      = new Persona("D", "D", "11.833.498-K", "Encargado Bloque");
                    Persona        persona1      = new Persona("E", "E", "12.232.498-4", "Trabajador");
                    Persona        persona2      = new Persona("F", "F", "8.107.074-3", "Trabajador");
                    Persona        persona3      = new Persona("G", "G", "19.685.827-1", "Trabajador");
                    Persona        persona4      = new Persona("H", "H", "20.463.389-4", "Trabajador");
                    List <Bloque>  bloques       = new List <Bloque>();
                    List <Seccion> secciones     = new List <Seccion>();
                    List <Persona> personas1     = new List <Persona>();
                    List <Persona> personas2     = new List <Persona>();
                    Bloque         bloque1       = new Bloque(personas1, "Bloque 1", Ebloque1, "Bloque");
                    Bloque         bloque2       = new Bloque(personas2, "Bloque 2", Ebloque2, "Bloque");
                    Seccion        seccion       = new Seccion(bloques, "Sección 1", Eseccion, "Sección");
                    Departamento   departamento  = new Departamento(secciones, "Departamento 1", Edepartamento, "Departamento");
                    personas1.Add(persona1);
                    personas1.Add(persona2);
                    personas2.Add(persona3);
                    personas2.Add(persona4);
                    bloques.Add(bloque1);
                    bloques.Add(bloque2);
                    secciones.Add(seccion);
                    e.Divisiones.Add(bloque1);
                    e.Divisiones.Add(bloque2);
                    e.Divisiones.Add(seccion);
                    e.Divisiones.Add(departamento);
                    empresas.Add(e);
                    try
                    {
                        SaveE(empresas);
                    }
                    catch (System.IO.IOException exp2)
                    {
                        Console.WriteLine("No se logró guardar correctamente.");
                        Console.WriteLine(exp2.Message);
                    }
                }
                else if (option == 3)
                {
                    n = false;
                }
            }
        }