/// <summary> /// El método recibe una variable del tipo EProceso indicando el proceso a realizar y recorre la lista de linea de produccion para ejecutar dicho proceso /// cuando corresponda, devolviendo la cantidad de productos a los cuales se les aplico el proceso. /// </summary> /// <param name="proceso"></param> /// <returns></returns> public int EjecutarProcesoLineaProduccion(EProceso proceso) { int output = 0; if (proceso != EProceso.Despachar) { foreach (Producto producto in this.ServicioProducto.GetAll()) { bool procesoRealizado = false; switch (proceso) { case EProceso.Lijar: procesoRealizado = producto.LijarMaderaProducto(); ServicioProducto.UpdateEntity(producto); break; case EProceso.Barnizar: if (producto is Estante) { procesoRealizado = ((Estante)producto).BarnizarProducto(); ServicioProducto.UpdateEntity(producto); } break; case EProceso.Alfombrar: procesoRealizado = producto.AlfombrarProducto(); ServicioProducto.UpdateEntity(producto); break; case EProceso.AgregarYute: if (producto is Torre) { procesoRealizado = ((Torre)producto).AgregarYute(); ServicioProducto.UpdateEntity(producto); } break; case EProceso.Ensamblar: procesoRealizado = producto.EnsamblarProducto(); ServicioProducto.UpdateEntity(producto); break; } if (procesoRealizado) { output++; } } EmitirEvento(); } else { output = MudarProductosAStockTerminado(); } return(output); }