示例#1
0
        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);
            }
        }