public string Enviar_Empaque(Empaque empaque)
 {
     if ((empaque.Hora >= 8) && (empaque.Hora <= 18))
     {
         if (empaque.Interruptor == "OFF")
         {
             empaque.Encendido_Maquina(empaque.Nombre);
         }
     }
     else
     {
         if (empaque.Interruptor == "ON")
         {
             empaque.Apagado_Maquina(empaque.Nombre, empaque.Hora);
         }
         Console.WriteLine("Horario NO Laboral, Maquina " + empaque.Nombre + " esta apagada, las piezas no han podido ser Enviadas por esta Maquina");
     }
     if (empaque.Interruptor == "ON")
     {
         if (empaque.Memoria + empaque.Piezas_Enviadas <= 100)
         {
             empaque.Piezas_Enviadas = empaque.Piezas_Empaquetadas;
             empaque.Memoria        += empaque.Piezas_Enviadas;
             if (empaque.Memoria == 100)
             {
                 Console.WriteLine("La Maquina " + empaque.Nombre + "No dispone de mas Memoria");
                 empaque.Reinicio_Maquina(empaque.Nombre);
             }
             //Console.WriteLine("");
             Console.WriteLine("Se han empaquetado " + empaque.Piezas_Enviadas + " Piezas");
             //Console.WriteLine("");
             Console.WriteLine("Piezas Enviadas al Cliente!");
             return(" ");
         }
         else
         {
             empaque.Piezas_Enviadas = empaque.Piezas_Empaquetadas;
             Console.WriteLine("La Maquina " + empaque.Nombre + "No dispone de mas Memoria");
             empaque.Reinicio_Maquina(empaque.Nombre);
             //Console.WriteLine("");
             Console.WriteLine("Se han empaquetado " + empaque.Piezas_Enviadas + " Piezas");
             //Console.WriteLine("");
             Console.WriteLine("Piezas Enviadas al Cliente!");
             return(" ");
         }
     }
     else
     {
         Console.WriteLine("Maquina " + empaque.Nombre + " esta Apagada, ha sido imposible enviar las piezas al Cliente, espere al inicio de la siguiente jornada laboral");
         return(" ");
     }
 }
        public void Empaquetar_Pieza(Empaque empaque)
        {
            if ((empaque.Hora >= 8) && (empaque.Hora <= 18))
            {
                Console.WriteLine("Piezas listas para empezar Empaquetamiento");
            }
            else
            {
                if (empaque.Interruptor == "ON")
                {
                    empaque.Apagado_Maquina(empaque.Nombre, empaque.Hora);
                }

                Console.WriteLine("Horario NO Laboral, Maquina " + empaque.Nombre + " esta apagada, las piezas no han podido ser recepcionadas por esta Maquina");
            }
        }
        static void Main(string[] args)
        {
            Recepcion      recepciones     = new Recepcion();
            Almacenamiento almacenamientos = new Almacenamiento();
            Ensamblaje     ensamblajes     = new Ensamblaje();
            Verificacion   verificaciones  = new Verificacion();
            Empaque        empaques        = new Empaque();

            recepciones.Nombre     = " de Recepcion ";
            almacenamientos.Nombre = " de Almacenamiento ";
            ensamblajes.Nombre     = " de Ensamblaje ";
            verificaciones.Nombre  = " de Verificacion ";
            empaques.Nombre        = " de Empaque ";
            Random rnd     = new Random();
            bool   Running = true;



            while (Running == true)
            {
                Console.WriteLine("Bienvenido!");
                Console.WriteLine("");
                Console.WriteLine("Esta es la Interfaz del Computador Central");
                Console.WriteLine("");
                Console.WriteLine("Como te gustaria operar? ");
                Console.WriteLine("Pulsa / 1 para control manual / 2 para control automatico / 3 para apagar");
                Console.WriteLine("");
                string Opcion_Inicial = Console.ReadLine();

                if (Opcion_Inicial == "1")
                {
                    recepciones.Automatico     = false;
                    almacenamientos.Automatico = false;
                    ensamblajes.Automatico     = false;
                    verificaciones.Automatico  = false;
                    empaques.Automatico        = false;
                }

                else if (Opcion_Inicial == "2")
                {
                    recepciones.Automatico     = true;
                    almacenamientos.Automatico = true;
                    ensamblajes.Automatico     = true;
                    verificaciones.Automatico  = true;
                    empaques.Automatico        = true;
                }

                else if (Opcion_Inicial == "3")
                {
                    break;
                }
                else
                {
                    Console.WriteLine("Opcion Invalida!");
                    Console.WriteLine("");
                    Console.WriteLine("Redirigiendo...");
                }

                //Conteo Horas dia

                for (int Contador_Hora = 0; Contador_Hora < 24; Contador_Hora++)
                {
                    recepciones.Hora     = Contador_Hora;
                    almacenamientos.Hora = Contador_Hora;
                    ensamblajes.Hora     = Contador_Hora;
                    verificaciones.Hora  = Contador_Hora;
                    empaques.Hora        = Contador_Hora;

                    Console.WriteLine("Hora --> [" + Contador_Hora + ":00]");
                    Console.WriteLine("");
                    Console.WriteLine("");
                    //llamado a metodos de Maquinas por cada hora del dia

                    if ((Contador_Hora <= 8) || (Contador_Hora >= 18))
                    {
                        recepciones.Interruptor     = "OFF";
                        almacenamientos.Interruptor = "OFF";
                        ensamblajes.Interruptor     = "OFF";
                        verificaciones.Interruptor  = "OFF";
                        empaques.Interruptor        = "OFF";
                        if (Contador_Hora == 19)
                        {
                            Console.WriteLine("###############################################");
                            Console.WriteLine("#                                             #");
                            Console.WriteLine("#           FIN HORARIO LABORAL               #");
                            Console.WriteLine("#                                             #");
                            Console.WriteLine("###############################################");
                            Console.WriteLine("");
                            recepciones.Apagado_Maquina(recepciones.Nombre, recepciones.Hora);
                            almacenamientos.Apagado_Maquina(almacenamientos.Nombre, almacenamientos.Hora);
                            ensamblajes.Apagado_Maquina(ensamblajes.Nombre, ensamblajes.Hora);
                            verificaciones.Apagado_Maquina(verificaciones.Nombre, verificaciones.Hora);
                            empaques.Apagado_Maquina(empaques.Nombre, empaques.Hora);
                            Console.WriteLine("");
                            Console.WriteLine("###############################################");
                            Console.WriteLine("");
                            Console.WriteLine("");
                            Console.WriteLine("");
                        }
                    }
                    if (Contador_Hora >= 8)
                    {
                        if (Contador_Hora <= 18)
                        {
                            recepciones.Interruptor     = "ON";
                            almacenamientos.Interruptor = "ON";
                            ensamblajes.Interruptor     = "ON";
                            verificaciones.Interruptor  = "ON";
                            empaques.Interruptor        = "ON";
                            if (Contador_Hora == 8)
                            {
                                Console.WriteLine("###############################################");
                                Console.WriteLine("#                                             #");
                                Console.WriteLine("#           INICIO HORARIO LABORAL            #");
                                Console.WriteLine("#                                             #");
                                Console.WriteLine("###############################################");
                                Console.WriteLine("");
                                recepciones.Encendido_Maquina(recepciones.Nombre);
                                almacenamientos.Encendido_Maquina(almacenamientos.Nombre);
                                ensamblajes.Encendido_Maquina(ensamblajes.Nombre);
                                verificaciones.Encendido_Maquina(verificaciones.Nombre);
                                empaques.Encendido_Maquina(empaques.Nombre);
                                Console.WriteLine("");
                            }
                        }
                    }

                    recepciones.Piezas_Recibidas = rnd.Next(0, 200);
                    recepciones.Recibir_Piezas(recepciones);
                    recepciones.Enviar_a_Almacenamiento(recepciones);
                    Console.WriteLine("");
                    almacenamientos.Piezas_Recibidas = recepciones.Piezas_Almacenamiento;
                    almacenamientos.Almacenar_Piezas(almacenamientos);
                    almacenamientos.Enviar_a_Ensamblaje(almacenamientos);
                    Console.WriteLine("");
                    ensamblajes.Piezas_Recibidas = almacenamientos.Piezas_Ensamblaje;
                    ensamblajes.Verificar_Piezas(ensamblajes);
                    ensamblajes.Ensamblar_Piezas(ensamblajes);
                    Console.WriteLine("");
                    verificaciones.Piezas_Recibidas = ensamblajes.Piezas_Verificacion;
                    verificaciones.Verificar_Pieza(verificaciones);
                    verificaciones.Enviar_a_Empaque(verificaciones);
                    Console.WriteLine("");
                    empaques.Piezas_Empaquetadas = verificaciones.Piezas_Empaque;
                    empaques.Empaquetar_Pieza(empaques);
                    empaques.Enviar_Empaque(empaques);
                    Console.WriteLine("");
                    Console.WriteLine("");
                    Console.WriteLine("");
                }
            }
        }