protected void btnAceptar_Click(object sender, EventArgs e) { switch (opcion) { case "Modificar": try { long codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim()); string nombre = txtNombre.Text.Trim(); if (string.IsNullOrEmpty(nombre)) { throw new ExcepcionLogica("El Nombre del articulo no puede quedar vacío."); } double precio; try { precio = Convert.ToDouble(txtPrecio.Text.Trim()); } catch { throw new ExcepcionPresentacion("El Precio no es válido."); } int stock; try { stock = Convert.ToInt32(txtStock.Text.Trim()); } catch { throw new ExcepcionPresentacion("El Stock no es válido."); } string descripcion = txtDescripcion.Text.Trim(); if (string.IsNullOrEmpty(descripcion)) { throw new ExcepcionLogica("La descripcion del articulo no puede quedar vacía."); } string nombreCategoria = ddlCategorias.SelectedValue; if (nombreCategoria == "Ninguno") { throw new ExcepcionPresentacion("Debe seleccionar una categoria de la lista."); } bool buscarCategoria = false; CategoriaArticulo categoria = LogicaCategoriaArticulo.Buscar(nombreCategoria, buscarCategoria); buscar = false; Articulo articuloImagen = LogicaArticulo.Buscar(codigoBarras, buscar); string origenImagen = fuOrigenImagen.PostedFile.FileName; string destinoImagen = articuloImagen.Imagen; //si no se proporciona una direccion de imagen queda la que tenia anteriormente if (origenImagen != string.Empty) { string eliminarImagen = Server.MapPath(articuloImagen.Imagen); if (System.IO.File.Exists(eliminarImagen) == true) { System.IO.File.Delete(eliminarImagen); } string nombreImagen = txtCodigoBarras.Text.Trim() + System.IO.Path.GetFileName(origenImagen); destinoImagen = Server.MapPath("~/uploads/articulos/") + nombreImagen; System.IO.File.Copy(origenImagen, destinoImagen, true); destinoImagen = "~/uploads/articulos/" + nombreImagen; } bool eliminado = false; Articulo articulo = new Articulo(codigoBarras, nombre, precio, stock, descripcion, destinoImagen, categoria, eliminado); LogicaArticulo.Modificar(articulo); AparecerDesaparecerBotonesAceptar(); Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Green; lblMensaje.Text = "¡Articulo modificado con éxito!"; } catch (ApplicationException ex) { Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Red; lblMensaje.Text = "¡Error! " + ex.Message; } catch { Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Red; lblMensaje.Text = "¡Error! No se pudo modificar el Articulo."; } break; case "Eliminar": try { long codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim()); string nombre = txtNombre.Text.Trim(); bool buscarArticulo = false; Articulo articuloImagen = LogicaArticulo.Buscar(codigoBarras, buscarArticulo); LogicaArticulo.Eliminar(codigoBarras); string eliminarImagen = Server.MapPath(articuloImagen.Imagen); if (System.IO.File.Exists(eliminarImagen) == true) { System.IO.File.Delete(eliminarImagen); } AparecerDesaparecerBotonesAceptar(); Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Green; lblMensaje.Text = "¡Articulo eliminado con éxito!"; } catch (ApplicationException ex) { Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Red; lblMensaje.Text = "¡Error! " + ex.Message; } catch { Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Red; lblMensaje.Text = "¡Error! No se pudo eliminar el Articulo."; } break; } }
protected void btnAgregar_Click(object sender, EventArgs e) { try { long codigoBarras = 1; if (txtCodigoBarras.Text.Trim() != string.Empty) { codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim()); } string nombre = txtNombre.Text.Trim(); if (string.IsNullOrEmpty(nombre)) { throw new ExcepcionLogica("El Nombre del articulo no puede quedar vacío."); } double precio; try { precio = Convert.ToDouble(txtPrecio.Text.Trim()); } catch { throw new ExcepcionPresentacion("El Precio no es válido."); } int stock; try { stock = Convert.ToInt32(txtStock.Text.Trim()); } catch { throw new ExcepcionPresentacion("El Stock no es válido."); } string descripcion = txtDescripcion.Text.Trim(); if (string.IsNullOrEmpty(descripcion)) { throw new ExcepcionLogica("La descripcion del articulo no puede quedar vacía."); } string nombreCategoria = ddlCategorias.SelectedValue; if (nombreCategoria == "Ninguno") { throw new ExcepcionPresentacion("Debe seleccionar una categoria de la lista."); } bool buscarCategoria = false; //busca categorias no eliminadas de manera logica CategoriaArticulo categoria = LogicaCategoriaArticulo.Buscar(nombreCategoria, buscarCategoria); string origenImagen = fuOrigenImagen.PostedFile.FileName; //saca la ruta de donde se copia la imagen del Fileupload string destinoImagen; if (origenImagen != string.Empty) { string nombreImagen = txtCodigoBarras.Text.Trim() + System.IO.Path.GetFileName(origenImagen);//sacamos el codigo del articulo y se lo agregamos al nombre de la imagen string extension = nombreImagen.Substring(nombreImagen.Length - 4, 4); if (extension.ToLower() != ".jpg" && extension.ToLower() != ".png" && extension.ToLower() != ".bmp" && extension.ToLower() != "jpeg") { throw new ExcepcionPresentacion("Formato de imagen no válido, coloque un archivo con extension: .jpg , .png , .bmp o .jpeg "); } destinoImagen = Server.MapPath("~/uploads/articulos/") + nombreImagen; // ruta de destino donde se copiara la imagen System.IO.File.Copy(origenImagen, destinoImagen, true); //copia la imagen y reemplaza si existe una con el mismo nombre destinoImagen = "~/uploads/articulos/" + nombreImagen; //generamos una ruta corta para la base de datos } else { throw new ExcepcionPresentacion("Debe seleccionar una imagen para el Articulo."); } bool eliminado = false; Articulo articulo = new Articulo(codigoBarras, nombre, precio, stock, descripcion, destinoImagen, categoria, eliminado); buscar = true; // busca los articulos aunque este eliminados de manera logica Articulo buscarArticulo = LogicaArticulo.Buscar(codigoBarras, buscar); if (buscarArticulo == null) { LogicaArticulo.Agregar(articulo); } else { LogicaArticulo.Modificar(articulo); } LimpiarFormulario(); Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Green; lblMensaje.Text = "¡Articulo" + (stock > 1 ? "s" : "") + " agregado" + (stock > 1 ? "s" : "") + " con éxito! con el código de barras: " + codigoBarras; } catch (ApplicationException ex) { Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Red; lblMensaje.Text = "¡Error! " + ex.Message; } catch { Panel1.Visible = true; lblMensaje.ForeColor = System.Drawing.Color.Red; lblMensaje.Text = "¡Error! No se pudo agregar el Articulo."; } }