Esempio n. 1
0
        /// <summary>
        /// Se agregan los productos a la jornada del día y se cambia su estado a Fabricado
        /// Si no se pueden agrgar más productos a la jornada se agrega otra jornada con la fecha del día siguiente
        /// </summary>
        /// <param name="f">Fabrica cuyos productos se fabrican</param>
        /// <returns>La cantidad de productos que se fabricaron</returns>
        private static int Fabricar(Fabrica f)
        {
            DateTime fecha          = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            Jornada  j              = f + new Jornada(fecha, f.cantidadTrabajadores);
            int      contador       = 0;
            bool     agregarJornada = false;

            foreach (Producto p in f.productos)
            {
                if (p.EstadoActual == Producto.Estado.Nuevo)
                {
                    if (j + p)
                    {
                        p.EstadoActual = Producto.Estado.Fabricado;
                        contador++;
                    }
                    else
                    {
                        agregarJornada = true;
                    }
                }
            }

            if (agregarJornada)
            {
                f.ActualizarPendientes();
            }

            return(contador);
        }
Esempio n. 2
0
 /// <summary>
 /// Método estático que llama a todos los procesos de la fábrica
 /// </summary>
 /// <param name="f">Fábrica de la que se inician los procesos</param>
 public static void IniciarFabricacion(Fabrica f)
 {
     if (f.productos.Count > 0)
     {
         int ret = Fabrica.Fabricar(f);
         Fabrica.Envasar(f);
         Fabrica.Distribuir(f);
     }
     else
     {
         throw new NoSeCargaronProductosException("Para iniciar la fabricación debe cargar al menos un producto");
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Si el producto está envasado cambia el estado a Entregado
        /// </summary>
        /// <param name="f"></param>
        /// <returns>La cantidad de productos que se distribuyeron</returns>
        private static int Distribuir(Fabrica f)
        {
            int contador = 0;

            foreach (Producto p in f.productos)
            {
                if (p.EstadoActual is Producto.Estado.Envasado)
                {
                    p.EstadoActual = Producto.Estado.Entregado;
                    contador++;
                }
            }

            return(contador);
        }
Esempio n. 4
0
        /// <summary>
        /// Si los productos están fabricados les asigna un vencimiento y cambia el estado a Envasado
        /// </summary>
        /// <param name="f">Fabrica cuyos productos se envasan</param>
        /// <returns>La cantidad de productos envasados</returns>
        private static int Envasar(Fabrica f)
        {
            int contador = 0;

            foreach (Producto p in f.productos)
            {
                if (p.EstadoActual is Producto.Estado.Fabricado)
                {
                    p.Vencimiento = f.AsignarVencimiento();
                    if (p.Vencimiento > DateTime.Now)
                    {
                        contador++;
                        p.EstadoActual = Producto.Estado.Envasado;
                    }
                }
            }

            return(contador);
        }