private async Task <MaterialEspecificacionViewModel> ObtenerMaterialeEspecificacion(int id, MaterialEspecificacionViewModel materialEspecificacionView = null) { if (materialEspecificacionView == null) { var producto = new MaterialEspecificacionViewModel { MaterialId = 0, Material = await db.Material.Where(x => x.MaterialId == id).Select(x => new Material { TipoMaterial = new TipoMaterial { TipoMaterialId = x.TipoMaterial.TipoMaterialId, DescripcionTipoMaterial = x.TipoMaterial.DescripcionTipoMaterial }, Pais = new Pais { DescripcionPais = x.Pais.DescripcionPais }, Proveedor = new Proveedor { CodigoProveedor = x.Proveedor.CodigoProveedor, NombreProveedor = x.Proveedor.NombreProveedor }, StockDisponible = x.StockDisponible, UnidadMedida = x.UnidadMedida, CodigoIngreso = x.CodigoIngreso, Identificador = x.Identificador, TipoNorma = new TipoNorma { Sae = x.TipoNorma.Sae, TipoNormaId = x.TipoNorma.TipoNormaId, DescripcionNorma = x.TipoNorma.DescripcionNorma } }).FirstOrDefaultAsync(), MaterialEspecificacion = await ListaMaterialEspecificacion(id) }; return(producto); } var productoEspecificacionResult = new MaterialEspecificacionViewModel { MaterialId = materialEspecificacionView.MaterialId, EspecificacionId = materialEspecificacionView.EspecificacionId, ValorEspecificacion = materialEspecificacionView.ValorEspecificacion, MaterialEspecificacion = await ListaMaterialEspecificacion(id), Material = await db.Material.Where(x => x.MaterialId == id).Select(x => new Material { TipoMaterial = new TipoMaterial { TipoMaterialId = x.TipoMaterial.TipoMaterialId, DescripcionTipoMaterial = x.TipoMaterial.DescripcionTipoMaterial }, Pais = new Pais { DescripcionPais = x.Pais.DescripcionPais }, Proveedor = new Proveedor { CodigoProveedor = x.Proveedor.CodigoProveedor, NombreProveedor = x.Proveedor.NombreProveedor }, StockDisponible = x.StockDisponible, UnidadMedida = x.UnidadMedida, CodigoIngreso = x.CodigoIngreso, Identificador = x.Identificador, TipoNorma = new TipoNorma { Sae = x.TipoNorma.Sae, TipoNormaId = x.TipoNorma.TipoNormaId, DescripcionNorma = x.TipoNorma.DescripcionNorma } }).FirstOrDefaultAsync(), }; return(productoEspecificacionResult); }
public async Task <IActionResult> Especificaciones(MaterialEspecificacionViewModel materialEspecificacion) { try { await cargarListaEspecificacionesViewData(); var especificacionId = materialEspecificacion.EspecificacionId; var Material = await db.Material.Where(x => x.MaterialId == materialEspecificacion.MaterialId).FirstOrDefaultAsync(); // var materialEspecificacionA = db.Material.Where(x => x.MaterialId == materialEspecificacion.MaterialId).FirstOrDefaultAsync(); var Norma = await db.Norma.Where(c => c.EspecificacionId == especificacionId && c.TipoNorma.TipoNormaId == Material.TipoNormaId) .FirstOrDefaultAsync(); var cumpleNorma = true; if (Norma.ValorMinimo >= Convert.ToDecimal(materialEspecificacion.ValorEspecificacion) || Norma.ValorMinimo <= Convert.ToDecimal(materialEspecificacion.ValorEspecificacion)) { cumpleNorma = false; } var existeRegistro = false; if (!await db.MaterialEspecificacion.AnyAsync(c => c.EspecificacionId == materialEspecificacion.EspecificacionId && c.MaterialId == materialEspecificacion.MaterialId)) { var p = new MaterialEspecificacion { MaterialId = materialEspecificacion.MaterialId, EspecificacionId = materialEspecificacion.EspecificacionId, ValorEspecificacion = materialEspecificacion.ValorEspecificacion, }; await db.AddAsync(p); } else { existeRegistro = true; } if (!existeRegistro) { await db.SaveChangesAsync(); if (cumpleNorma) { TempData["Mensaje"] = $"{Mensaje.Informacion}|{Mensaje.Satisfactorio}"; return(View(await ObtenerMaterialeEspecificacion(materialEspecificacion.MaterialId, null))); } TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.NoCumpleNorma}"; return(View(await ObtenerMaterialeEspecificacion(materialEspecificacion.MaterialId, null))); } else { TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.ExisteRegistro}"; } return(View(await ObtenerMaterialeEspecificacion(materialEspecificacion.MaterialId, materialEspecificacion))); } catch (Exception) { return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.Excepcion}")); } }