public async Task <bool> EditarAsync(int id, ProductoDetalle producto) { var productoAEditar = await db.Productos.Include(x => x.Caracteristicas).Include(x => x.Marcas).Include(x => x.UnidadesDeMedida).SingleOrDefaultAsync(x => x.Id == id); if (productoAEditar == null) { throw new RegistroNoEncontradoException($"No existe el producto {id}"); } var nombre = producto.Nombre.Trim(); if (await ExisteNombreEnOtroProducto(id, nombre)) { throw new InvalidOperationException($"Ya existe otro producto con el nombre '{nombre}'."); } productoAEditar.Nombre = nombre; productoAEditar.Descripcion = producto.Descripcion.Trim(); ActualizarMarcas(producto, productoAEditar); ActualizarUnidades(producto, productoAEditar); ActualizarCaracteristicas(producto, productoAEditar); var filasAfectadas = await db.SaveChangesAsync(); return(filasAfectadas > 0); }
public async Task <int> CrearAsync(ProductoDetalle producto) { var nombre = producto.Nombre.Trim(); var descripcion = producto.Descripcion.Trim(); if (await ExisteNombre(nombre)) { throw new InvalidOperationException($"Ya existe un producto con el nombre '{nombre}'."); } var nuevoProducto = new Producto { Nombre = nombre, Descripcion = descripcion }; if (producto.Marcas != null && producto.Marcas.Length > 0) { nuevoProducto.Marcas = producto.Marcas.Select(marcaId => new ProductoMarca { Producto = nuevoProducto, MarcaId = marcaId }).ToList(); } if (producto.Unidades != null && producto.Unidades.Length > 0) { nuevoProducto.UnidadesDeMedida = producto.Unidades.Select(unidadId => new ProductoUnidadDeMedida { Producto = nuevoProducto, UnidadDeMedidaId = unidadId }).ToList(); } if (producto.Caracteristicas != null && producto.Caracteristicas.Length > 0) { nuevoProducto.Caracteristicas = producto.Caracteristicas.Select(c => new ProductoCaracteristica { Producto = nuevoProducto, TipoCaracteristica = (ProductoTipoCaracteristica)c.Tipo, Nombre = c.Nombre, ListaId = c.ListaId, Minimo = c.Minimo, Maximo = c.Maximo, Requerido = c.Requerido, ExpresionDeValidacion = null }).ToList(); } db.Productos.Add(nuevoProducto); var filasAfectadas = await db.SaveChangesAsync(); if (filasAfectadas > 0) { return(nuevoProducto.Id); } else { return(-1); } }
private static void ActualizarMarcas(ProductoDetalle producto, Producto productoAEditar) { producto.Marcas = producto.Marcas ?? new int[] { }; var marcasNuevas = producto.Marcas; var marcasOriginales = productoAEditar.Marcas.Select(x => x.MarcaId).ToArray(); EliminarMarcasInexistentes(productoAEditar, marcasNuevas); AgregarMarcasNuevas(productoAEditar, marcasNuevas, marcasOriginales); }
private static void ActualizarUnidades(ProductoDetalle producto, Producto productoAEditar) { producto.Unidades = producto.Unidades ?? new int[] { }; var unidadesNuevas = producto.Unidades; var unidadesOriginales = productoAEditar.UnidadesDeMedida.Select(x => x.UnidadDeMedidaId).ToArray(); EliminarUnidadesInexistentes(productoAEditar, unidadesNuevas); AgregarUnidadesNuevas(productoAEditar, unidadesNuevas, unidadesOriginales); }
private static void ActualizarCaracteristicas(ProductoDetalle producto, Producto productoAEditar) { producto.Caracteristicas = producto.Caracteristicas ?? new CaracteristicaDetalle[] { }; var caracteristicasNuevasIds = producto.Caracteristicas.Select(x => x.Id).ToArray(); var caracteristicasViejasIds = productoAEditar.Caracteristicas.Select(x => x.Id).ToArray(); EliminarCaracteristicasInexistentes(productoAEditar, caracteristicasNuevasIds); AgregarCaracteristicasNuevas(producto, productoAEditar); ModificarCaracteristicasExistentes(producto, productoAEditar, caracteristicasNuevasIds); }
public async Task <IActionResult> Post([FromBody] ProductoDetalle producto) { if (!ModelState.IsValid) { return(HttpBadRequest(ModelState)); } var productoId = await productos.CrearAsync(producto); var result = await productos.ObtenerUnicoAsync(productoId); return(CreatedAtRoute("GetProducto", new { id = productoId }, result)); }
public void EditarproductoDetalle(ProductoDetalle productoDetalle) { try { using (TransactionScope scope = new TransactionScope()) { DAL.Modapie.Mantenimiento.Instancia.EditarproductoDetalle(productoDetalle); scope.Complete(); } } catch (Exception ee) { throw; } }
private static void ModificarCaracteristicasExistentes(ProductoDetalle producto, Producto productoAEditar, int[] caracteristicasNuevasIds) { var caracteristicasParaModificar = productoAEditar.Caracteristicas.Where(x => caracteristicasNuevasIds.Contains(x.Id)).ToArray(); foreach (var c in caracteristicasParaModificar) { var nc = producto.Caracteristicas.First(x => x.Id == c.Id); c.Nombre = nc.Nombre; c.TipoCaracteristica = (ProductoTipoCaracteristica)nc.Tipo; c.ListaId = nc.ListaId; c.Minimo = nc.Minimo; c.Maximo = nc.Maximo; c.Requerido = nc.Requerido; c.ExpresionDeValidacion = null; } }
public void listar_detalle_factura(ProductoBusqueda prodct, int cantidad) { ProductoDetalle item = new ProductoDetalle(); item.codigo = prodct.codigo; item.cantidad = cantidad; item.categoria = prodct.categoria; item.nombre = prodct.nombre; item.precio = prodct.precio; item.descripcion = prodct.descripcion; resultado.Add(item); BindingList <ProductoDetalle> data_binding = new BindingList <ProductoDetalle>(resultado); BindingSource data_source = new BindingSource(data_binding, null); gridDetalle.DataSource = data_source; calcular_total(); }
private static void AgregarCaracteristicasNuevas(ProductoDetalle producto, Producto productoAEditar) { var caracteristicasParaInsertar = producto.Caracteristicas.Where(x => x.Id == 0).ToArray(); foreach (var c in caracteristicasParaInsertar) { productoAEditar.Caracteristicas.Add(new ProductoCaracteristica { Producto = productoAEditar, TipoCaracteristica = (ProductoTipoCaracteristica)c.Tipo, Nombre = c.Nombre, ListaId = c.ListaId, Minimo = c.Minimo, Maximo = c.Maximo, Requerido = c.Requerido, ExpresionDeValidacion = null }); } }
public ProductoDetalle MostrarUnproductoDetalle(int idProducto) { ProductoDetalle pd = new ProductoDetalle(); try { using (TransactionScope scope = new TransactionScope()) { pd = DAL.Modapie.Mantenimiento.Instancia.MostrarUnproductoDetalle(idProducto); scope.Complete(); return(pd); } } catch (Exception ee) { DialogResult d = MessageBox.Show(ee.Message.ToString()); return(null); } }
public async Task <IActionResult> Put(int id, [FromBody] ProductoDetalle producto) { if (!ModelState.IsValid) { return(HttpBadRequest(ModelState)); } var modificado = await productos.EditarAsync(id, producto); if (modificado) { var result = await productos.ObtenerUnicoAsync(id); return(Ok(result)); } else { return(new HttpStatusCodeResult((int)HttpStatusCode.NotModified)); } }