/// <summary> /// Analiza todas las recetas cuyo estado es "Sin Precio", /// y recorre nuevamente todos sus ingredientes para saber si ya fueron actualizados y si se les ha asignado un precio /// A cada receta que ahora contenga un precio calculable, se le actualizara su estado a "Activa" /// Mediante este metodo se activaran las recetas que se encontraban inactivas por falta de precio calculable /// </summary> public void ActualizarRecetasSinPrecio() { Datos.RecetasDAL dalRecetas = dal.ObtenerRecetasDAL(); IEnumerable <Receta> recetasSinPrecio = Obtener(EstadoReceta.SinPrecio); foreach (Receta receta in recetasSinPrecio) { bool preciosFaltantes = preciosIngredientesBL.HayFaltantes(receta); if (!preciosFaltantes) { Datos.Receta recetaDAL = dalRecetas.Obtener(receta.Id); Datos.EstadoReceta estadoDAL = dalRecetas.ObtenerEstado(EstadoReceta.Activa.ToString()); recetaDAL.Estado = estadoDAL; dalRecetas.Actualizar(recetaDAL); } } dal.Guardar(); }
/// <summary> /// Actualiza la informacion de una receta dentro del sistema /// Los datos que podran actualizarse son su estado, sus detalles o informacion y sus ingredientes /// </summary> /// <param name="receta">Receta a actualizar</param> public void Actualizar(Receta receta) { ValidarReceta(receta); if (receta.Ingredientes == null || receta.Ingredientes.Count == 0) { throw new OBMCateringException(Resources.RecetasBL_Validaciones_SinIngredientes); } EstadoReceta estado; if (receta.Ingredientes.Count == 0) { estado = EstadoReceta.SinIngredientes; } else { bool preciosFaltantes = preciosIngredientesBL.HayFaltantes(receta); if (preciosFaltantes) { estado = EstadoReceta.SinPrecio; } else { estado = EstadoReceta.Activa; } } Datos.RecetasDAL dalRecetas = dal.ObtenerRecetasDAL(); Datos.Receta recetaDAL = dalRecetas.ObtenerPorNombre(receta.Nombre); if (recetaDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_RecetaInvalida, receta.Nombre)); } Datos.EstadoReceta estadoDAL = dalRecetas.ObtenerEstado(estado.ToString()); if (estadoDAL == null) { throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_EstadoInvalido, estado)); } recetaDAL.Detalle = receta.Detalle; recetaDAL.Estado = estadoDAL; foreach (IngredienteReceta ingredienteReceta in receta.Ingredientes) { Datos.IngredienteReceta ingredienteRecetaDAL = BuscarIngredienteReceta(ingredienteReceta.Ingrediente, recetaDAL); Datos.UnidadMedida unidadMedidaDAL = dalRecetas.ObtenerUnidad(ingredienteReceta.Unidad.ToString()); if (ingredienteRecetaDAL == null) { Datos.Ingrediente ingredienteDAL = PrepararIngrediente(ingredienteReceta.Ingrediente); ingredienteRecetaDAL = new Datos.IngredienteReceta { Ingrediente = ingredienteDAL, Cantidad = ingredienteReceta.Cantidad, Unidad = unidadMedidaDAL }; recetaDAL.Ingredientes.Add(ingredienteRecetaDAL); } else { ingredienteRecetaDAL.Cantidad = ingredienteReceta.Cantidad; ingredienteRecetaDAL.Unidad = unidadMedidaDAL; } } dalRecetas.Actualizar(recetaDAL); dal.Guardar(); if (estado == EstadoReceta.SinPrecio) { preciosIngredientesBL.CrearFaltantes(receta); } }