public int Guardar(ProductoPresentaciones modelo) { if (modelo.presentaciones == null) { return(3); } dbHeredadesEntities db = new dbHeredadesEntities(); if (!(db.tbProducto.Any(t => t.producto == modelo.producto.producto))) { modelo.producto.estado = true; short correlativo = 1; foreach (tbProductoPresentacion presentacion in modelo.presentaciones) { presentacion.correlativo = correlativo; modelo.producto.tbProductoPresentacion.Add(presentacion); correlativo++; } db.tbProducto.Add(modelo.producto); db.SaveChanges(); return(1); } else { return(2); } }
public int ConfirmarEdicion(ProductoPresentaciones modelo) { if (modelo.presentaciones == null) { return(3); } dbHeredadesEntities db = new dbHeredadesEntities(); if (!(db.tbProducto.Where(t => t.codProducto != modelo.producto.codProducto).Any(t => t.producto == modelo.producto.producto))) { List <tbProductoPresentacion> presentaciones = modelo.presentaciones; tbProducto producto = modelo.producto; producto.estado = true; // realiza cambios en producto como tal db.Entry(producto).State = EntityState.Modified; // logica para reordenar e insertar presentaciones List <tbProductoPresentacion> guardadas = db.tbProductoPresentacion.Where(t => t.codProducto == producto.codProducto).ToList(); List <int> editadas = new List <int>(); short correlativo = 1; foreach (tbProductoPresentacion item in presentaciones) { if (guardadas.Select(t => t.codPresentacion).Contains(item.codPresentacion)) { // ya existe esta presentacion en bd: hay que editarla y reordenarla // como existe en bd, la quito de la lista de guardadas para generar una lista con las existentes que no estan en las nuevas int index = guardadas.FindIndex(t => t.codPresentacion == item.codPresentacion); if (index > -1) { guardadas[index].precioVentaMinimo = item.precioVentaMinimo; guardadas[index].precioVentaMedio = item.precioVentaMedio; guardadas[index].precioVentaMaximo = item.precioVentaMaximo; guardadas[index].agregado = item.agregado; guardadas[index].unidades = item.unidades; guardadas[index].correlativo = correlativo; } //se agregar a List editadas para luego cambiar correlativo de no editadas editadas.Add(index); } else { // no existe esta presentacion en bd: hay que insertarla y ordenarla item.codProducto = producto.codProducto; item.correlativo = correlativo; db.tbProductoPresentacion.Add(item); } correlativo++; } for (int i = 0; i < guardadas.Count; i++) { if (!editadas.Contains(i)) { guardadas[i].correlativo = 0; // hay que deshabilitarla en todos los productoProveedores db.DeshabilitarProductos(guardadas[i].codProducto, guardadas[i].codPresentacion); } } db.SaveChanges(); return(1); } else { return(2); } }