private async Task <ProductoEspecificacionViewModel> ObtenerProductoEspecificacion(int id, ProductoEspecificacionViewModel productoEspecificacionView = null) { if (productoEspecificacionView == null) { var producto = new ProductoEspecificacionViewModel { ProductoId = 0, Producto = await db.Producto.Where(x => x.ProductoId == id).Select(x => new Producto { DescripcionProducto = x.DescripcionProducto, ObservacionProducto = x.ObservacionProducto, CodigoProducto = x.CodigoProducto, Nominal = x.Nominal, Grado = x.Grado, ClaseProducto = new ClaseProducto { ClaseDescripcion = x.ClaseProducto.ClaseDescripcion }, }).FirstOrDefaultAsync(), ProductoEspecificacion = await ListaProdctoEspecificacion(id) }; return(producto); } var productoEspecificacionResult = new ProductoEspecificacionViewModel { ProductoId = productoEspecificacionView.ProductoId, EspecificacionId = productoEspecificacionView.EspecificacionId, RangoMaximo = productoEspecificacionView.RangoMaximo, RangoMinimo = productoEspecificacionView.RangoMinimo, ValorEsperado = productoEspecificacionView.ValorEsperado, ProductoEspecificacion = await ListaProdctoEspecificacion(id), Producto = await db.Producto.Where(x => x.ProductoId == id).Select(x => new Producto { DescripcionProducto = x.DescripcionProducto, ObservacionProducto = x.ObservacionProducto, Nominal = x.Nominal, Grado = x.Grado, CodigoProducto = x.CodigoProducto, ClaseProducto = new ClaseProducto { ClaseDescripcion = x.ClaseProducto.ClaseDescripcion }, }).FirstOrDefaultAsync(), }; return(productoEspecificacionResult); }
public async Task <IActionResult> Especificaciones(ProductoEspecificacionViewModel productoEspecificacion) { try { await cargarListaEspecificacionesViewData(); var existeRegistro = false; if (!await db.ProductoEspecificacion.AnyAsync(c => c.EspecificacionId == productoEspecificacion.EspecificacionId && c.ProductoId == productoEspecificacion.ProductoId)) { var especificacion = await db.Especificacion.Where(x => x.EspecificacionId == productoEspecificacion.EspecificacionId).FirstOrDefaultAsync(); var p = new ProductoEspecificacion { ProductoId = productoEspecificacion.ProductoId, EspecificacionId = productoEspecificacion.EspecificacionId, }; switch (especificacion.TipoEspecificacion) { case "Rango": if (productoEspecificacion.RangoMinimo == null && productoEspecificacion.RangoMaximo == null) { TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.DebeIntroducirAlMenosUnRango}"; return(View(await ObtenerProductoEspecificacion(productoEspecificacion.ProductoId, productoEspecificacion))); } if (productoEspecificacion.RangoMinimo > productoEspecificacion.RangoMaximo) { TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.RangoMinimoMayorRangoMaximo}"; return(View(await ObtenerProductoEspecificacion(productoEspecificacion.ProductoId, productoEspecificacion))); } p.RangoMaximo = productoEspecificacion.RangoMaximo; p.RangoMinimo = productoEspecificacion.RangoMinimo; break; case "Texto": p.ValorEsperado = productoEspecificacion.ValorEsperado; break; case "Número": p.ValorEsperadoNum = productoEspecificacion.ValorEsperadoNum; break; case "Bit": p.ValorEsperado = "CUMPLE"; break; } await db.AddAsync(p); } else { existeRegistro = true; } if (!existeRegistro) { await db.SaveChangesAsync(); TempData["Mensaje"] = $"{Mensaje.MensajeSatisfactorio}|{Mensaje.Satisfactorio}"; return(View(await ObtenerProductoEspecificacion(productoEspecificacion.ProductoId, null))); } else { TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.ExisteRegistro}"; } return(View(await ObtenerProductoEspecificacion(productoEspecificacion.ProductoId, productoEspecificacion))); } catch (Exception) { return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.Excepcion}")); } }